
    bil                     :	   d dl mZ d dlZd dlZd dlmZ d dlZd dlm	Z	m
Z
 ddlmZ ddlmZmZ dd	lmZ  ej$                  e      Z ej*                  ej,                        j.                   ej*                  d
      j.                  k\  r( edd      dej0                  dej0                  fd       Zdej0                  dej0                  dededej8                  dej0                  ddfdZdej0                  dej0                  dej0                  dedej8                  dej0                  ddfdZdej0                  dej0                  dee   dej0                  dej0                  dedej0                  ddfdZ e ee      sejC                  d       erjddl"m#Z$   edd      e$jJ                           edd      e$jL                           edd      e$jN                           ed d      e$jP                          ed!d      dej0                  dej0                  deded"ee   dej8                  dej0                  fd#       Z ed$d      dej0                  dej0                  dej0                  dedej8                  dej0                  fd%       Z ed&d      dej0                  dej0                  dej0                  dedej8                  dej0                  ddfd'       Z ed(d      dej0                  dej0                  dee   dej0                  dej0                  dedej0                  fd)       Z ed*d      dej0                  dej0                  dee   dej0                  dej0                  dedej0                  ddfd+       ZyerejC                  d,       ddl"m#Z$   edd      e$jJ                           ed&d      e$jR                           ed$d      e$jT                           edd      e$jL                           ed-d      e$jV                           ed!d      e$jX                           ed(d      e$jZ                           edd      e$jN                           ed d      e$jP                         yej]                  d.       y)/    )SequenceN)version)_get_tensor_streamget_ptr   )register_kernel) ErrorHandlerMockBNBNativeLibrarylib   )triton_availablez2.9z bitsandbytes::int8_linear_matmulxpuABc                      t        j                  | j                  d| j                  d         |j	                               j                  g | j                  d d |j                  d    S )Nr   )torch_int_mmreshapeshapet)r   r   s     X/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/bitsandbytes/backends/xpu/ops.py_r      sh    u}}IIb!''"+&CCE
 '- 773B<- "#- 	-    absmax	blocksize
quant_typedtypeoutreturnc           	      :   d t        |       t        |      t        |      t        j                  |      t        j                  |j                               t	        |       f}|t
        j                  k(  r+|dk(  rt        j                  |  y t        j                  |  y |t
        j                  k(  r+|dk(  rt        j                  |  y t        j                  |  y |t
        j                  k(  r+|dk(  rt        j                  |  y t        j                  |  y y )Nfp4)r   ctc_intnumelr   r   bfloat16r
   cdequantize_blockwise_bf16_fp4cdequantize_blockwise_bf16_nf4float16cdequantize_blockwise_fp16_fp4cdequantize_blockwise_fp16_nf4float32cdequantize_blockwise_fp32_fp4cdequantize_blockwise_fp32_nf4)r   r   r   r   r   r   argss          r   _dequantize_4bit_implr/      s     	


1D ..5..5	%--	..5..5	%--	..5..5	 
 r   codec           	         t        |      t        |       t        |      t        |      t        j                  |      t        j                  | j                               t	        |       f}|t
        j                  k(  rt        j                  |  y |t
        j                  k(  rt        j                  |  y |t
        j                  k(  rt        j                  |  y y )N)r   r"   r#   r$   r   r   r(   r
   cdequantize_blockwise_fp16r%   cdequantize_blockwise_bf16r+   cdequantize_blockwise_fp32)r   r   r0   r   r   r   r.   s          r   _dequantize_blockwise_implr5   =   s     	


1D &&-	%..	 &&-	%--	&&- 
 r   shapeBc                    t        j                  d      }t        j                  |d         }t        j                  |d         }	|}
t        j                  | j                  d   dz   dz        }|}t        |       }| j                  t
        j                  k(  rbt        j                  |||	t        |       t        |      t        |      t        |      t        |      |
||t        j                  |      |       y | j                  t
        j                  k(  rbt        j                  |||	t        |       t        |      t        |      t        |      t        |      |
||t        j                  |      |       y | j                  t
        j                  k(  rbt        j                  |||	t        |       t        |      t        |      t        |      t        |      |
||t        j                  |      |       y y )N   r   r   r   )r"   c_int32r   r   r   r   r(   r
   cgemv_4bit_inference_fp16r   r%   cgemv_4bit_inference_bf16r+   cgemv_4bit_inference_fp32)r   r   r6   r   r0   r   r   mnkldaldbldcstreams                 r   _gemv_4bit_implrD   Q   s    	

1A


6!9A


6!9A
C
**aggbkAo!+
,C
C"Fww%--%%AJAJFODMCLJJy!	
 
ENN	"%%AJAJFODMCLJJy!	
 
EMM	!%%AJAJFODMCLJJy!	
 
"r   z*Register sycl bitsandbytes kernels for XPU)opsz bitsandbytes::quantize_blockwisezbitsandbytes::quantize_4bitz-bitsandbytes::optimizer_update_8bit_blockwisez$bitsandbytes::optimizer_update_32bitzbitsandbytes::dequantize_4bitr   c                 l    t        j                  ||| j                        }t        | |||||       |S )N)r   devicer   )r   emptyrG   r/   )r   r   r   r   r   r   r   s          r   r   r      s1     kk%uQXX>aJ3O
r   z"bitsandbytes::dequantize_blockwisec                 V    t        j                  | |      }t        | |||||       |S )Nr   rH   )r   
empty_liker5   r   r   r0   r   r   r   s         r   r   r      s-     q."1fdIu#N
r   z&bitsandbytes::dequantize_blockwise.outc                      t        j                  j                  k(  fd       t        j                  j                   j                  k(   fd       t	         |||       y )Nc                  (    d  dj                    S NzExpected out.dtype == , got rK   )r   r   s   r   <lambda>z_.<locals>.<lambda>   s    3I%PVWZW`W`Va1b r   c                  <    d j                    dj                    S )NExpected out.shape == rQ   r   r   r   s   r   rR   z_.<locals>.<lambda>   "    5KAGG9TZ[^[d[dZe3f r   rH   )r   _checkr   r   r5   rM   s   `   ``r   r   r      sK     	SYY%')bcSYY!'')+fg"1fdIu#Nr   zbitsandbytes::gemv_4bitc           	          g | j                   d d |d   }t        j                  || j                  | j                        }t        | ||||||       |S )Nr   r   )rG   r   rH   )r   r   rI   rG   r   rD   )r   r   r6   r   r0   r   r   r   s           r   r   r      sT     +!''#2,*q	*kk%@1ffdI3G
r   zbitsandbytes::gemv_4bit.outc           	      
    t        j                  j                  g  j                  d d d   k(   fd       t        j                  j                   j                  k(   fd       t	         ||||       y )Nr   r   c                  R    dg  j                   d d d    dj                    S )NrT   r   r   rQ   rU   )r   r   r6   s   r   rR   z_.<locals>.<lambda>   s3    ,-Gqwws|-GVAY-G,HsyykZ r   c                  <    d j                    dj                    S rP   rK   rV   s   r   rR   z_.<locals>.<lambda>   rW   r   rH   )r   rX   r   r   rD   )r   r   r6   r   r0   r   r   s   ` `   `r   r   r      sk     	II31773B<333Z	
 	SYY!'')+fg1ffdI3Gr   z,Register triton bitsandbytes kernels for XPUz!bitsandbytes::dequantize_4bit.outzaRegister pytorch bitsandbytes kernels for XPU because no native library or triton packages found.)/collections.abcr   ctypesr"   logging	packagingr   r   bitsandbytes.functionalr   r   _opsr   
cextensionr	   r
   utilsr   	getLogger__name__loggerparse__version__releaseTensorr   intstrr   r/   r5   rD   
isinstanceinfotritonrE   
triton_opsquantize_blockwisequantize_4bitoptimizer_update_8bit_blockwiseoptimizer_update_32bitdequantize_blockwise_inplacedequantize_blockwisedequantize_4bit_inplacedequantize_4bit	gemv_4bitwarning r   r   <module>r}      s   $     ? # ? $			8	$ 7==""#++}w}}U/C/K/KK7?-U\\ -ell - @-6||6LL6 6 	6
 ;;6 
6 
6D.||."\\.16.JM.V[VaVa.hmhtht.	.(A
||A
||A
 SMA
 LL	A

 ,,A
 A
 
A
 
A
J #78
KK<= .B:EB:C`C`a=5u=j>V>VWOGO66	
 	G>FzGhGhi4e<
<<

 
 	

 }
 {{
 

 =
 95A<<!&5:\\NQZ_ZeZe	 B =uE
O<<
O
O ll
O 	
O
 {{
O \\
O 

O F
O .6<<<<  	
 ll  
 7 2E:H<<H<<H H 	H
 llH H \\H 
H ;H 
KK>?*>O6>z?\?\]DO<eDZElElm@O8%@A`A`a9O159*:R:RS?O7?
@b@bc;O3U;J<V<VW5O-u5j6J6JKKOCUKJLvLvwBO:EB:CdCde
NNvwr   