a
    ¢ŗ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s6J | 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   śW/var/www/auris/lib/python3.9/site-packages/torch/quantization/_quantized_conversions.pyŚpack_int4_to_int8   s    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   s6  |   ” dksJ | jtjks J |tjks8|tjks8J | jjdksHJ | j}|s|tjkrd| j}q|tjkrtt	|  
tj”j}n| }|j\}}||tjkr¤dnd dks²J |d dksĀJ |tjkrtjg d¢|dtjd|d |d d	d
”d  |d d”  
d	”}nDtjg d¢|dtjd|d |d d	d
”d  |d d”  
d	”}| d
||”}|tjkrvd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r6| 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< nŠ|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   Z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ŚrepeatŚ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   
 ’