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   e/var/www/html/assistant/venv/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rtt	| 
tjj}n| }|j\}}||tjkrdnd dksJ |d dksJ |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   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   
 