o
    wZhį  ć                   @   s(   d dl Z dd Zdd Z	d	ddZdS )
é    Nc                 C   sn   |   ” dksJ | jd d dksJ | jtjksJ | d d dd df d@ d> | d d dd df d@ B S )Né   é   r   é   é   )ŚdimŚshapeŚdtypeŚtorchŚint8©Śweight© r   śX/var/www/auris/lib/python3.10/site-packages/torch/quantization/_quantized_conversions.pyŚpack_int4_to_int8   s   8r   c                 C   sV   |   ” dksJ | jtjksJ tj| d@ | d? d@ fdd | jd d| jd  ”S )Nr   r   r   )r   r   r   )r   r   r	   r
   ŚstackŚviewr   r   r   r   r   Śunpack_int8_to_int4   s
   ’r   Fc                 C   s2  |   ” dksJ | jtjksJ |tjks|tjksJ | jjdks$J | j}|sC|tjkr2| j}n|tjkrBtt	|  
tj”j}n| }|j\}}||tjkrRdnd dksYJ |d dksaJ |tjkrtjg d¢|dtjd|d |d d	d
”d  |d d”  
d	”}n"tjg d¢|dtjd|d |d d	d
”d  |d d”  
d	”}| d
||”}|tjkr¹dnd}d| }	tjd|| |d|d |   
d	d
” d
|d | ” 
d	”}
tjd|d |	 |d||	   
d	d
” d
|	” 
d	” |”}tjd||d|	  
d	d
” d
|d ” 
d	” || ”}tjd|	|d |d | |	 ”}|
| | | }| 
d	” 
tj”}t |”}| d||” | 
| j”}| 
d	”}t |”}|tjkr| tj”d  |j”}|dd d |dd d< |dd d |d
d d< |d
d d |dd d< |dd d |dd d< nh|tjkr|d@ d d@ }
|
d
d d d> |
dd d B }
|d? d@ d d@ }|d
d d d> |dd d B }|
dd d |dd d< |
d
d d |d
d d< |dd d |dd d< |d
d d |dd d< |tjkr|d9 }|d }| 
||” 
tj”S )Nr   Ścudaé    é@   r   )r   r   é   é   r   é   é	   é   r   é   é
   é   é   é   é   r   )Śdeviceé   é’’’’r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r   é   r   r   r   )r   r   r	   r
   Zquint4x2r!   ŚtypeŚTr   r   r   r   ZtensorZarangeZreshapeŚexpandZ
index_copyŚrepeatZint32Z
zeros_likeZscatter_Z
empty_likeŚtoŚintZuint8)r   ZdtypeqZ	transposer!   ZoutpZncolsZnrowsZcols_permutedZmagic0Zmagic1Ztmp0Ztmp1Ztmp2Ztmp3Zoutp_offsetsŚtmpr   r   r   Ś8quantized_weight_reorder_for_mixed_dtypes_linear_cutlass   s¦   



ž ’üųž ’üų	üū
ū"


  r,   )F)r	   r   r   r,   r   r   r   r   Ś<module>   s
   
’