
    ¯wg                     "    d dl Z d Zd Z	 ddZy)    Nc                     | j                         dk(  sJ | j                  d   dz  dk(  sJ | j                  t        j                  k(  sJ | d d dd df   dz  dz  | d d dd df   dz  z  S )N      r         )dimshapedtypetorchint8weights    n/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/torch/quantization/_quantized_conversions.pypack_int4_to_int8r      s}    ::<1<<?Q!###<<5::%%%Aqt!tG_s"q(VAqt!tG_s-BCC    c                    | j                         dk(  sJ | j                  t        j                  k(  sJ t        j                  | dz  | dz	  dz  fd      j                  | j                  d   d| j                  d   z        S )Nr   r   r   )r   r   r   )r   r
   r   r   stackviewr	   r   s    r   unpack_int8_to_int4r      sv    ::<1<<5::%%%;;v{c&9:BGGQV\\!_, r   c                 "   | j                         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
                  }|so|t        j                  k(  r| j                  }nQ|t        j                  k(  r>t        t        | j                  t        j                              j                        }n| }j                  \  }}||t        j                  k(  rdndz  dk(  sJ |dz  dk(  sJ |t        j                  k(  rkt        j                  g d|      t        j                  d|dz  |      j                  d	d
      dz  j                  |dz  d      z   j                  d	      }njt        j                  g d|      t        j                  d|dz  |      j                  d	d
      dz  j                  |dz  d      z   j                  d	      }|j!                  d
||      }|t        j                  k(  rdnd}d|z  }	t        j                  d||z  |      |dz  |z  z  j                  d	d
      j#                  d
|dz  |z        j                  d	      }
t        j                  d|dz  |	z  |      ||	z  z  j                  d	d
      j#                  d
|	      j                  d	      j#                  |      }t        j                  d||      |	z  j                  d	d
      j#                  d
|dz        j                  d	      j#                  ||z        }t        j                  d|	|      j#                  |dz  |z  |	z        }|
|z   |z   |z   }|j                  d	      j                  t        j$                        }t        j&                  |      }|j)                  d||       |j                  | j                        }|j                  d	      }t        j*                  |      }|t        j                  k(  rt|j-                  t        j.                        dz   j-                  |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(  ry|dz  dz   dz  }
|
d
d d   dz  |
dd d   z  }
|dz	  dz  dz   dz  }|d
d d   dz  |dd d   z  }|
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z  }|dz  }|j                  ||      j                  t        j0                        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   quint4x2r%   typeTr   r   r   r	   tensorarangereshapeexpand
index_copyrepeatint32
zeros_likescatter_
empty_liketointuint8)r   dtypeq	transposer%   outpncolsnrowscols_permutedmagic0magic1tmp0tmp1tmp2tmp3outp_offsetstmps                   r   8quantized_weight_reorder_for_mixed_dtypes_linear_cutlassrG      sO    ::<1<<5::%%%UZZ6U^^#;;;==''']]F UZZ88Du~~%$%8UZZ9P%Q%S%STD::LE5&ENN2B;q@@@2:?? LLF ||Au{6:BB2qIBNVVR	 $r( 	 LLF ||Au{6:BB2qIBNVVR	 $r( 	 ??1mT2D ENN*QF6\F 
a&	8EQJ<O	P	b!	5A:&	'	b	 	 
a!v-f	=&	Q	b!	6		b	 	 
a	/&	8	b!	5A:		b		  	 <<6&188!e9Kv9UVD$;%,L
))B-

U[[
)CC DMM!\3'99V\\"D ))B-CC Dvveii 3&**3995AYQTT
AYQTT
AYQTT
AYQTT
	5>>	!sa3&QTT
a41:-(c!Q&#-QTT
a41:-!$Q$ZQTT
!$Q$ZQTT
!$Q$ZQTT
!$Q$ZQTT

!99UE"''44r   )F)r   r   r   rG    r   r   <module>rI      s    D $h5r   