
    ΅i                         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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_mmc               #   `   #    [         R                  R                  5       n  S v   A g ! A f = f7fN)torch_C_DisableTorchDispatch)guards    [/home/james-whalen/.local/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,   r-   r.   dtypeint32int16)	r   r   r   r   r0   r1   r2   r3   metadatas	            r   r   r   5   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r4   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+   r>   	transposer?   r@   r   r   r   r   selfs        r   r   r   H   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   r4   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   rE   r,   s         r   r   r   f   s^    
4yA~4SYK@AAKDU|tzz!!ijoippqr
 	
 Kr4   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=   r>   r?   r@   requires_grad)r#   r$   rA   r,   r*   r+   r<   r=   r>   r?   r@   rD   s        r   r   r   q   s    
4yA~3CI;?@@7D>>jj{{YY{{$($D$D"&"@"@00  
 
r4   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  pgUR                  U5      nUR                  U5      n	U	S S 2S U24   $ UR                  5       n
[	        U
[
        R                  R                  5      (       d!  [        S[        U
5      R                   35      eUR                  u  pgUR                  U5      nU
R                  UR                  5       5      R                  5       n	U	S U2S S 24   $ )Nr!   rG   D`SparseSemiStructuredTensor` matmul: Broadcasting is not implementedr   )r#   r$   ndimrJ   r%   r   r&   r'   r,   _pad_dense_input_mmtr(   r)   )r   r   r   r   r0   BrowcolB_paddedresB_tA_paddeds               r   r	   r	      s3   
4yA~4SYK@AADAvv{affk!R
 	
 !U\\<<==77%%a(eeHo1dsd7|cce#u||FFGG ;DI<N<N;OP  77%%a(gghjjl#%%'4C47|r4   c                    [        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                  U5      n
UR                  U
R                  5       US	9R                  5       nUS U2S S 24   $ )
N   zexpected 3 args, got r!   rN   r   zF`SparseSemiStructuredTensor` matmul: only bias dim=1 supported. Shape=zL`SparseSemiStructuredTensor` matmul: only operand B of `addmm` can be sparser   )bias)r#   r$   rO   rJ   r,   r%   r   r&   r'   rR   r(   r)   rP   rQ   )r   r   r   r   r\   r0   rS   rX   rT   _colrY   results               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##A&HWWXZZ\W-//1F$3$'?r4   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!   r[   zexpected 2 or 3 args, got r!   r[   r"   )r   r   r   )r#   r$   r,   r.   rR   r
   )
r   r   r   r   r0   rS   r\   r,   A_2drW   s
             r   r   r      s    
4y9#d)EFF8DA$i1n47$DGGE66"eBi D|SSUlacce$
 88$U3BZ$$$r4   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)r6   r   float8_e4m3fnr$   r%   r&   $SparseSemiStructuredTensorCUSPARSELTr(   r)   r*   numelfloat32_cslt_sparse_mm)r   r   r   r   r0   rS   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 r4   ) N)
contextlibr   __all__contextmanagerr   r   Tensorr   r   r   r   r   r	   r
   r   r   rn   r4   r   <module>rs      s       
!U\\ !$ell & <5<< U\\ " 2ELL 6%U\\ %*! !r4   