
    3jt)                     
   S SK r S SKr/ SQr\ R                  S 5       rS rSS\R                  4S jjrSS\R                  4S jjrSS\R                  4S jjr	SS\R                  4S	 jjr
S\R                  4S
 jrSS\R                  4S jjrSS\R                  4S jjrSS\R                  4S jjrSS\R                  4S jjrSS\R                  4S jjrSS\R                  4S jjrSS\R                  4S jjrg)    N)fallback_dispatchersemi_sparse_valuessemi_sparse_indicessemi_sparse_tsemi_sparse_viewsemi_sparse_detachsemi_sparse_mmsemi_sparse_addmmsemi_sparse_linearsemi_sparse_scaled_mmsemi_sparse_clonesemi_sparse_tosemi_sparse_to_copyc               #   `   #    [         R                  R                  5       n  S v   A g ! A f = f7fN)torch_C_DisableTorchDispatch)guards    [/home/wildlama/miniconda3/lib/python3.13/site-packages/torch/sparse/_semi_structured_ops.pyno_dispatchr      s%     HH**,EEs   .( .+.c                 V    [        5          U " U6 sS S S 5        $ ! , (       d  f       g = fr   )r   )functypesargskwargss       r   r   r   !   s    	T{ 
s   
(returnc                    [        U5      S:w  a  [        S[        U5       35      eUS   n[        U[        R                  R
                  5      (       d!  [        S[        U5      R                   35      eUR                  c  [        S5      eUR                  cB  UR                  u  pVXV-  S-  nUR                  R                  5       S U R                  US5      $ UR                  R                  5       $ N   expected 1 arg, got r   )expected SparseSemiStructuredTensor, got A.packed must not be None   )lenAssertionError
isinstancer   sparseSparseSemiStructuredTensortype__name__packedmetashaperavelviewdetach)r   r   r   r   Amknum_kept_elementss           r   r   r   &   s    
4yA~3CI;?@@QAa@@AA7Q8H8H7IJ
 	
 	xx899vv~wwEQJxx~~ 3!2499!R@@xx      c                 t   [        U5      S:w  a  [        S[        U5       35      eUS   n[        U[        R                  R
                  5      (       d!  [        S[        U5      R                   35      eUR                  c  [        S5      eUR                  c  UR                  u  pVXV-  S-  nUR                  R                  5       US  R                  US5      nUR                  UR                  [        R                  :X  a  [        R                  5      $ [        R                  5      $ UR                  $ r   )r&   r'   r(   r   r)   r*   r+   r,   r-   r.   r/   r0   r1   dtypeint32int16)	r   r   r   r   r3   r4   r5   r6   metadatas	            r   r   r   8   s    
4yA~3CI;?@@QAa@@AA7Q8H8H7IJ
 	
 	xx899vv~wwEQJ88>>#$5$67<<QC}}AGGu{{,BU[[TTTTvvr7   c                    [        U5      S:w  a  [        S[        U5       35      eUS   n[        U[        R                  R
                  5      (       d!  [        S[        U5      R                   35      e[        UR                  5      S:w  a"  [        S[        UR                  5       S35      eUR                  [        R                  " UR                  S   UR                  S   /5      UR                  UR                  UR                  UR                  UR                  b  UR                  R!                  SS5      OS US   R"                  US   R$                  S	9$ )
Nr    r!   r   r"   r$   zexpected 2D tensor, got Dr%   )r-   r.   packed_tmeta_tcompressed_swizzled_bitmaskfuse_transpose_cusparseltalg_id_cusparselt)r&   r'   r(   r   r)   r*   r+   r,   r/   	__class__Sizer?   r@   r-   r.   rA   	transposerB   rC   r   r   r   r   selfs        r   r   r   K   s.   
4yA~3CI;?@@7DdELLCCDD7T
8K8K7LM
 	
 4::!7DJJ7HJKK
 >>

DJJrNDJJqM23}}[[yy //; ,,66q!<"&q'"C"Cq'33   r7   c                     [        U5      S:w  a  [        S[        U5       35      eUu  pE[        U5      UR                  :w  a  [	        SU S35      eU$ )Nr$   expected 2 args, got z[`view` is not implemented for SparseSemiStructuredTensor, except for the dummy case (shape=))r&   r'   tupler/   NotImplementedError)r   r   r   r   rH   r/   s         r   r   r   i   s^    
4yA~4SYK@AAKDU|tzz!!ijoippqr
 	
 Kr7   c                 &   [        U5      S:w  a  [        S[        U5       35      eUS   nUR                  UR                  UR                  UR
                  UR                  UR                  UR                  UR                  UR                  SS9	$ )Nr    r!   r   F	r/   r-   r.   r?   r@   rA   rB   rC   requires_grad)r&   r'   rD   r/   r-   r.   r?   r@   rA   rB   rC   rG   s        r   r   r   t   s    
4yA~3CI;?@@7D>>jj{{YY{{$($D$D"&"@"@00  
 
r7   c                    [        U5      S:w  a  [        S[        U5       35      eUu  pEUR                  S:w  d  UR                  S:w  a  [        S5      e[	        U[
        R                  R                  5      (       a  UR                  U5      $ UR                  5       n[	        U[
        R                  R                  5      (       d!  [        S[        U5      R                   35      eUR                  USS9R                  5       $ )Nr$   rJ   D`SparseSemiStructuredTensor` matmul: Broadcasting is not implementedr"   T)should_transpose_dense)r&   r'   ndimrM   r(   r   r)   r*   _mmtr+   r,   )r   r   r   r   r3   BB_ts          r   r	   r	      s    
4yA~4SYK@AADAvv{affk!R
 	
 !U\\<<==uuQxcce#u||FFGG ;DI<N<N;OP  wwqw688::r7   c                 r   [        U5      S:w  a  [        S[        U5       35      eUu  pEnUR                  S:w  d  UR                  S:w  a  [        S5      eUR                  S:w  a  [        SUR                   35      e[        U[        R                  R                  5      (       a  [        S5      eUR                  5       n[        U[        R                  R                  5      (       d!  [        S[        U5      R                   35      eUR                  u  pUR                  XTS	S
9R                  5       $ )N   zexpected 3 args, got r$   rR   r    zF`SparseSemiStructuredTensor` matmul: only bias dim=1 supported. Shape=zL`SparseSemiStructuredTensor` matmul: only operand B of `addmm` can be sparser"   T)biasrS   )r&   r'   rT   rM   r/   r(   r   r)   r*   rV   r+   r,   rU   )
r   r   r   r   r[   r3   rW   rX   row_cols
             r   r
   r
      s   
4yA~4SYK@AAJDQvv{affk!R
 	
 yyA~!TUYU_U_T`a
 	
 !U\\<<==!Z
 	
 ##%Cc5<<BBCC7S	8J8J7KL
 	
 IC7717=??AAr7   c                 Z   [        U5      S;  a  [        S[        U5       35      eUS S u  pE[        U5      S:X  a  US   OS nUR                  nUR                  SUS   5      nUc  XR	                  5       -  n	O[        S S XhUR	                  5       /S9n	U	R                  " / US S QSP76 $ )N)r$   rZ   zexpected 2 or 3 args, got r$   rZ   r%   )r   r   r   )r&   r'   r/   r1   rV   r
   )
r   r   r   r   r3   rW   r[   r/   A_2dress
             r   r   r      s    
4y9#d)EFF8DA$i1n47$DGGE66"eBi D|SSUlacce$

 88$U3BZ$$$r7   c                 h   US S u  pEpgpn
UR                   [        R                  :w  a  [        SUR                    35      eUR                   [        R                  :w  a  [        SUR                    35      e[	        U[        R
                  R                  5      (       d!  [        S[        U5      R                   35      eUR                  c  [        S5      eUR                  5       S:w  d  UR                  5       S:w  a-  [        SUR                  5        SUR                  5        35      eUR                   [        R                  :w  d  UR                   [        R                  :w  a%  [        S	UR                    SUR                    35      e[        R                  " UR                  UXg-  U
S
9nU$ )N   z$expected A.dtype float8_e4m3fn, got z$expected B.dtype float8_e4m3fn, got z3expected SparseSemiStructuredTensorCUSPARSELT, got r#   r    z2expected A_scale and B_scale to have numel 1, got z and z0expected A_scale and B_scale dtype float32, got )alpha	out_dtype)r9   r   float8_e4m3fnr'   r(   r)   $SparseSemiStructuredTensorCUSPARSELTr+   r,   r-   numelfloat32_cslt_sparse_mm)r   r   r   r   r3   rW   A_scaleB_scaler[   scale_resultrd   sparse_results               r   r   r      s{   <@!H9A'D	ww%%%%CAGG9MNNww%%%%CAGG9MNNaJJKKA$q'BRBRAST
 	
 	xx899}}!w}}!3@@QQVW^WdWdWfVgh
 	
 }}%%--)G>w}}oUSZS`S`Rab
 	
 ))			M r7   c                    [        U5      S:w  a  [        S[        U5       35      eUS   n[        U[        R                  R
                  5      (       d!  [        S[        U5      R                   35      eUR                  UR                  UR                  c  S OUR                  R                  5       UR                  c  S OUR                  R                  5       UR                  c  S OUR                  R                  5       UR                  c  S OUR                  R                  5       UR                  c  S OUR                  R                  5       UR                   UR"                  UR$                  S9	$ )Nr    r!   r   r"   rO   )r&   r'   r(   r   r)   r*   r+   r,   rD   r/   r-   cloner.   r?   r@   rA   rB   rC   rP   rG   s        r   r   r      s/   
4yA~3CI;?@@7DdELLCCDD7T
8K8K7LM
 	

 >>jj{{*t0A0A0CYY&TDIIOO,=.DMM4G4G4I{{*t0A0A0C //7 11779"&"@"@00((   r7   c                     US   nU=(       d    0 nUR                  SS 5      nUb=  [        R                  " U5      R                  S:X  a  UR	                  5       nU " U40 UD6$ [        SU S35      e)Nr   devicecpuz`_to_copy()` with kwargs=zb is not implemented for SparseSemiStructuredTensor. Only converting to CPU is supported currently.)getr   rq   r+   to_denserM   )r   r   r   r   rH   rq   denses          r   r   r     s{    7D\rFZZ$'Fell62775@E$V$$

#F8 ,Y 	Y r7   c                    US   nUSS  nU=(       d    0 nS nU(       aA  US   n[        U[        R                  [        45      (       a   [        R                  " U5      nSU;   a  [        R                  " US   5      nUb,  UR
                  S:X  a  UR                  5       nU " U/UQ70 UD6$ [        SU SU S35      e! [         a     Nlf = f)Nr   r    rq   rr   z`to()` with args=z	, kwargs=z\ is not implemented for SparseSemiStructuredTensor. Only `to('cpu')` is supported currently.)r(   r   rq   strRuntimeErrorr+   rt   rM   )	r   r   r   r   rH   remaining_argsrq   	first_argru   s	            r   r   r     s    7D!"XN\rF F"1%	i%,,!455i0 6fX./fkkU2E5N5f55

N+9VH =S 	S    s   
C   
CC) Nr   )
contextlibr   __all__contextmanagerr   r   Tensorr   r   r   r   r   r	   r
   r   r   r   r   r   r{   r7   r   <module>r      s     "  
!U\\ !$ell & <5<< U\\ "; ;&BELL B2%U\\ %&! !HELL 85<<  ell r7   