
    ~Uh                     ,   d dl mZ d dlmZ d dlZddlmZ  edd      	 	 d!dej                  d	ej                  d
ej                  deej                     deej                     dej                  fd       Z	 edd      	 	 d!dej                  dej                  dej                  dej                  dej                  deej                     deej                     de
ej                  eej                     f   fd       Z	 edd      	 	 d!dej                  dej                  d	ej                  d
ej                  deej                     deej                     dej                  fd       Z	 edd      dej                  dej                  fd       Z	 edd      dej                  dej                  dej                  fd       Z	d"dej                  dej                  deej                     fdZ edd      d#dej                  fd        Z	y)$    )prod)OptionalN   )register_kernelzbitsandbytes::int8_mm_dequantdefaultA	row_stats	col_statsdtypebiasreturnc                 h    t        j                   j                  t         j                  k(   fd       t        j                  j                  t         j                  k(  fd       t        j                  j                  t         j                  k(  fd        j                  d j                  d         }j                  d      j                  d      j                  d      j                  d      |z  z  dz  }|||z  }|j                  |xs t         j                        S )Nc                  "    d j                    S )NzA must be int32, got r   )r   s   s/var/www/catia.catastroantioquia-mas.com/valormas/lib/python3.12/site-packages/bitsandbytes/backends/default/ops.py<lambda>z_.<locals>.<lambda>   s    3H	1R     c                  "    d j                    S )Nzrow_stats must be float32, got r   )r	   s   r   r   z_.<locals>.<lambda>       =\]f]l]l\m;n r   c                  "    d j                    S )Nzcol_stats must be float32, got r   )r
   s   r   r   z_.<locals>.<lambda>   r   r   r   g D1@?)torch_checkr   int32float32viewshapereshape	unsqueezetofloat16)r   r	   r
   r   r   A_calcouts   ```    r   _r$   	   s     
LLEKK')RS	LLEMM13no	LLEMM13noVVB$F!!"%//3I!!"%//2I
I	)
*\
9Ct66%(5==))r   z"bitsandbytes::int8_mixed_scaled_mmCACBSCASCBoutlier_colsc                 H   d }||j                         r| d d |f   j                         }t        j                  j                  j
                  j                  |d d |f   j                         |      j                  | j                        j                         }n,t        j                  d| j                  | j                        }t        j                  j                  j                  j                  |||||| j                        }	||	j                  ||      }	|	|fS )Nr   devicer   )r   r   )numel
contiguousr   opsbitsandbytesint8_vectorwise_dequantr   r    r   temptyr,   int8_scaled_mmaddmm)
r   r%   r&   r'   r(   r)   r   subBsubAoutputs
             r   r$   r$       s     DL$6$6$8L!,,. II""::BB2aoCVCaCaCcehiR[QS 	 {{1QXXQWW= YY##22::2r3RV^_^e^e:fFdD)4<r   zbitsandbytes::int8_scaled_mmBc                     t         j                  j                  j                  j	                  | |      }t         j                  j                  j
                  j	                  ||||xs t         j                  |      S )N)r   r   )r   r/   r0   int8_linear_matmulr   int8_mm_dequantr!   )r   r9   r	   r
   r   r   out_i32s          r   r$   r$   G   sf     ii$$77??1EG99!!1199$u}} :  r   z bitsandbytes::int8_linear_matmulc                     t        | |      S N)_int8_linear_matmul_impl)r   r9   s     r   r$   r$   Z   s    #Aq))r   z$bitsandbytes::int8_linear_matmul.outr#   c                 ~    t        j                  |j                  t         j                  k(         t	        | ||       y r?   )r   r   r   r   r@   )r   r9   r#   s      r   r$   r$   _   s'    	LLekk)*Q3'r   c                     t        j                  | j                         |j                         j                               j	                  t         j
                        }||j                  |      }|S r?   )r   matmulfloatr2   r    r   copy_)r   r9   r#   results       r   r@   r@   e   sK    \\!'')QWWY[[]366u{{CF
6"Mr   z#bitsandbytes::int8_vectorwise_quantc                    t        | j                  d d       }d }d }|dkD  r| j                         |k\  }|j                         rMt	        j
                  |j                  d            j                  d      }| |   j                         }d| |<   n0t	        j                  d| j                  t        j                        }t	        j                  | j                         d      j                  j                         }t	        j                  | d|j                  d      z  z        j!                  t        j"                        }|dkD  r|	d|d d |f<   ||| <   |||fS )Nr           r   )dimr+      g     _@)r   r   absanyr   argwherer   cloner3   r,   int64maxvaluesrD   roundr   r    int8)r   	thresholdrowsr)   outlier_restoreoutliersr	   out_rows           r   r$   r$   m   s2   DLO3557i'<<> !>>(,,1,*=>CCBGLk//1OAhK !;;qML 		!%%'q)00668I kk!uy':':2'>>?@CCEJJOG axL,#$<  "%(I|++r   )NNr?   )rH   )mathr   typingr   r   _opsr   Tensorr   r$   tupler@    r   r   <module>r_      s      # 0)<
 $(#'*||*||* ||* EKK 	*
 5<<
 * \\* =*, 5yA ,0#'#||## 	# 
	#
 
# 5<<(# 5<<
 # 5<<%,,//0# B#L /; $(#'|||| || ||	
 5<<
  EKK  \\ <$ 3Y?* *%,, * @* 7C( (%,, (U\\ ( D(
  HU\\DZ  6	B", ", C",r   