
    ~Uh                        d dl mZ d dlZd dlZd dlmZ ddlmZ ddl	m
Z
 ej                  dk\  r( edd	      d
ej                  dej                  fd       Z edd	      d
ej                  dej                  dedeej                  ej                  f   fd       Z edd	      d
ej                  dej                  dej                  dedej                   dej                  fd       Z ej"                  g dej$                  d	      Z edd	      d
ej                  dededej                   deej                  ej                  f   f
d       Z edd	      d
ej                  dej                  dededee   dej                   dej                  fd       Z edd	      d
ej                  dej                  d ee   dej                  dej                  dedej                  fd!       Zy)"    )SequenceN)get_ptr   )register_kernel)lib)      z bitsandbytes::int8_linear_matmulcpu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     o/var/www/catia.catastroantioquia-mas.com/valormas/lib/python3.12/site-packages/bitsandbytes/backends/cpu/ops.py_r      sh    u}}IIb!''"+&CCE
 '- 773B<- "#- 	-    z bitsandbytes::quantize_blockwisecode	blocksizereturnc           
      @    t        j                  |       t        j                   j                  t         j                  k(   fd        j                         }|| z   }t        j                  |f j                  t         j                        }t        j                   t         j                        }t        j                  t        |      t               t        |      t        |      t        j                  |      t        j                  |             ||fS )Nc                  "    d j                    S )NzA must be float32 on cpu, got dtyper   s   r   <lambda>z_.<locals>.<lambda>   s    5STUT[T[S\3] r   )devicer   r   )r   _check_is_size_checkr   float32numelemptyr    
empty_likeuint8r   cquantize_blockwise_cpu_fp32r   ct
c_longlong)r   r   r   nblocksabsmaxouts   `      r   r   r      s    	#	LLEMM)+]^		AYJF[[&1885==IF


1EKK
0C$$

i 
a ;r   z"bitsandbytes::dequantize_blockwiser-   r   c                     t        j                  |       t        j                   j                  t         j                  k(   fd       t        j                  t         j
                  k(  fd       t        j                         }t        j                  t        |      t               t        |      t        |      t        j                  |      t        j                   j                                      |S )Nc                  "    d j                    S )NzA must be uint8, got r   r   s   r   r   z_.<locals>.<lambda>4   s    3H	1R r   c                      d  S )Nz"dtype must be float32 on cpu, got  r   s   r   r   z_.<locals>.<lambda>5   s    3UV[U\1] r   r   )r   r!   r"   r   r'   r#   r&   r   cdequantize_blockwise_cpu_fp32r   r)   r*   r$   )r   r-   r   r   r   r.   s   `   ` r   r   r   1   s    	#	LLEKK')RS	LL%--')]^


1E
*C&&

i 
aggi  Jr   )g      g    6Gg    fg    TFٿg   I4ҿg   ০ǿg    Og        g   __?g   `\?g   ?g   @g?g    4?g   ` ?g   `v"?g      ?)r   r    zbitsandbytes::quantize_4bit
quant_typequant_storagec                    	 t        j                         t        j                  dk(  fd       t        j                   j                  t         j                  t         j
                  t         j                  fv  fd        j                         	t        j                  	z  dk(  	fd        j                  d      }|j                         j                  d      j                  j                         }||j                  d      z  }t        j                  t        j                  |j                  dd      t         z
        dd	
      j#                  t         j$                        }|d d d   dz  |dd d   z  }|t         j$                  k7  r.|j'                         j                  |      j                  d      }||j                         fS )Nnf4c                      d  S Nz#quant_type must be nf4 on CPU, got r2   r4   s   r   r   z_.<locals>.<lambda>b       0ST^S_.` r   c                  "    d j                    S )NzDBlockwise 4bit quantization only supports 16/32-bit floats, but got r   r   s   r   r   z_.<locals>.<lambda>e   s    VWXW^W^V_` r   r   c                      d d  S )Nz&n must be divisible by blocksize, got z and r2   )r   r+   s   r   r   z_.<locals>.<lambda>k   s    /UVWUXX]^g]h-i r   r      dimT)r@   keepdimr      )r   r!   r"   r   bfloat16float16r#   r$   r   absmaxvaluesfloat	unsqueezeargminview_NF4_QUANT_TABLEtor'   squeeze)
r   r   r4   r5   r,   r-   scaled	quantizedpackedr+   s
   ```      @r   r   r   ]   so    
#	LLu$&`a	LL	ENNEMM5==AA`
 	
	A 
LLY!#%ij YYr9%FZZ\!$++113Ff&&r**F UYYv{{2q'9<L'LMSU_cdgghmhshstI ss^q 9QTT?2F#!&&}5??B6<<>!!r   zbitsandbytes::dequantize_4bitr   c                     t        j                  |       t        j                  dk(  fd       t        j                  t         j                  t         j                  t         j
                  fv fd       t        j                   j                  t         j                  k(   fd        j                  dd        dz	  j                  t         j                        } dz  j                  t         j                        }t        j                  ||fd	      j                  d|      }t        |   |d d d f   z  } |j                  dg|dd   }|j                        S )
Nr7   c                      d  S r9   r2   r:   s   r   r   z_.<locals>.<lambda>   r;   r   c                      d  S )NzFBlockwise 4bit dequantization only supports 16/32-bit floats, but got r2   r   s   r   r   z_.<locals>.<lambda>   s    XY^X_` r   c                  "    d j                    S )NzFBlockwise 4bit dequantization on CPU only supports uint8 storage, got r   r   s   r   r   z_.<locals>.<lambda>   s    XYZY`Y`Xab r   r   r>   rB      r?   )r   r!   r"   rC   rD   r#   r   r'   rK   rM   int64catr   rL   )	r   r-   r   r4   r   r   upperlowerr,   s	   `  ` `   r   r   r   ~   s    
#	LLu$&`a	LL%..%--??` 
LL	5;;b
 	
r1A !VKK$EXMM%++&E YYu~1-55b)DF f%q$w7F V^^B+qr+F99Ur   zbitsandbytes::gemv_4bitshapeBc                     t         j                  j                  j                  j	                  |||d|| j
                        }t         j                  j                  j                  | |d       S )Nr7   )r   r   )bias)	r   opsbitsandbytesdequantize_4bitdefaultr   nn
functionallinear)r   r   r[   r-   r   r   B_dqs          r   r   r      sl     99!!1199	gg : D 88%%	 &  r   )collections.abcr   ctypesr)   r   bitsandbytes.functionalr   _opsr   
cextensionr   __version__Tensorr   inttupler   tensorr#   rL   strr2   r   r   <module>rq      sy   $   + #  	7?-U\\ -ell - @- 3U; U\\ c eELLRWR^R^D^>_  <, 5u= u|| 5<< C X]XcXc hmhtht  >&  5<<$ --) 0 .6"||" #"14"EJ[["
5<<%&" 7"@ 0%8"||"LL" " 	"
 C=" ;;" \\" 9"J *E2|||| SM LL	
 ,,  \\ 3r   