
    ;i                     "   S SK rS SKrS SKrS SKJr  SSKJr  SSKJ	r	J
r
  \R                  " \5      r\R                  S:  a)  \" SS5      S	\R                  S
\R                  4S j5       r\" \
\	5      (       d  \" SS5      S	\R                  S\R                  S\S\\R                  \R                  4   4S j5       r\" SS5      S	\R                  S\R                  S\R                  S\S\R(                  S\R                  4S j5       rgg)    N)get_ptr   )register_kernel) ErrorHandlerMockBNBNativeLibrarylib)      z bitsandbytes::int8_linear_matmulcpuABc                     [         R                  " U R                  SU R                  S   5      UR	                  5       5      R                  " / U R                  S S QUR                  S   P76 $ )Nr   )torch_int_mmreshapeshapet)r   r   s     m/home/dmtnaga/Documents/work/airagagent/rag_env/lib/python3.13/site-packages/bitsandbytes/backends/cpu/ops.py_r      si    }}IIb!''"+&CCE
 ' - 773B<- "#- 	-    z bitsandbytes::quantize_blockwisecode	blocksizereturnc           
         [         R                  " U5        U R                  5       nU R                  [         R                  :X  a  X2* -  * n[         R
                  " U4U R                  [         R                  S9n[         R                  " U [         R                  S9n[        R                  " [        U5      [        U 5      [        U5      [        U5      [        R                  " U5      [        R                  " U5      5        Xe4$ X2-  nUS:  nX2-  U-   n[         R                  " U4U R                  [         R                  S9nU R                  U5      n	U	S X7-
   n
U
R                  X2-  U5      n[         R                   " U5      R#                  SS9S   US XH-
  & [         R$                  " USUS XH-
   R'                  SS5      -  -  SS5      nUR                  S5      nU(       ah  [         R                   " XU-
  S  5      R#                  5       US'   [         R$                  " XU-
  S  SUS   -  -  SS5      n[         R(                  " X/SS9n[         R                   " UR+                  S5      UR-                  UR                  5      -
  5      n[         R.                  " USS9R-                  [         R                  5      R-                  UR                  5      R                  U R0                  5      nXe4$ )N)devicedtyper   r   r   )dim   )r   _check_is_sizenumelr   float32emptyr   
empty_likeuint8r   cquantize_blockwise_cpu_fp32r   ct
c_longlongzerosr   absmaxclampviewcat	unsqueezetoargminr   )r   r   r   nblocksabsmaxoutremhas_rem
A_reshapedA_comA_com_reshapedscaled_Ascaled_A_remdiffs                  r   r   r      si   Y'GGI 77emm#J'F[[&1885==QF""1EKK8C,,
i(a 6 {% -CAgG^g-F[[&1885==QF1Jy)E"]]1>9EN).>)B)F)F2)F)Nq)QF%V%&{{>Q@R&BR9S9X9XY[]^9_5_#`bdfghH''+H"YYzc')'<=AACr
${{:#gi+@Ar
N+SUWYZ[ 99h%=1E99X//3dgghoo6NNOD,,t,//<??PXXYZY`Y`aC{r   z"bitsandbytes::dequantize_blockwiser4   r   c                   ^  [         R                  " U5        [         R                  " T R                  [         R                  :H  U 4S j5        U[         R
                  :X  a  [         R                  " T US9n[        R                  " [        U5      [        T 5      [        U5      [        U5      [        R                  " U5      [        R                  " T R                  5       5      5        U$ UT R                  S5      R                  5          nUR                  S   U-  nUR                  S   U-  nUS:w  a.  [         R                   R"                  R%                  USX7-
  4SSS9nUR'                  SU5      UR'                  SS5      -  R)                  U5      R                  S5      nUS Xc-  U-    nUR                  T R                  5      nU$ )Nc                  "   > ST R                    3$ )NzA must be uint8, got r   )r   s   r   <lambda>_.<locals>.<lambda>M   s    7LQWWI5Vr   r   r   r   constant)modevaluer   )r   r    _checkr   r%   r"   r$   r   cdequantize_blockwise_cpu_fp32r   r'   r(   r!   r   intr   nn
functionalpadr-   r0   )r   r4   r   r   r   r5   r3   ress   `       r   r   r   H   st    	Y'QWW+-VW EMM!""1E2C..
i(aggi($ 
 qyy}((*+CYYr]i/F))B-)+Caxhh))--cAy3Gj`a-b88B	*V[[Q-??CCEJRRSUVC0*S01C++agg&C
r   )ctypesr'   loggingr   bitsandbytes.functionalr   _opsr   
cextensionr   r   	getLogger__name__logger__version__Tensorr   
isinstancerG   tupler    r   r   <module>rY      s6      + # ?			8	$ 	7?-U\\ -ell - @- #7887?'U\\ ' '# '%V[VbVbHbBc ' @'R 95A<<!&5:\\NQZ_ZeZe	 B[ 9r   