ó
    "Eñ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/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/sparse/_semi_structured_ops.pyÚno_dispatchr      s%   é € ä�H‰H×*Ñ*Ó,€EðÛáø‰Eüs   ‚.¢( ¦.¨+«.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Ö   € Ü
ˆ4ƒy�Aƒ~ÜÐ3´C¸³I°;Ð?Ó@Ð@ØˆQ‰€AÜ�aœŸ™×@Ñ@×AÑAÜØ7¼¸Q»×8HÑ8HÐ7IÐJó
ð 	
ð 	‡x�xÑÜÐ8Ó9Ð9Ø‡v�v�~Ø�w‰w‰ˆØ™E Q™JÐØ�x‰x�~‰~ÓÐ 3Ð!2Ð4×9Ñ9¸!¸RÓ@Ð@à�x‰x�‰Ó Ð ó    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û   € Ü
ˆ4ƒy�Aƒ~ÜÐ3´C¸³I°;Ð?Ó@Ð@ØˆQ‰€AÜ�aœŸ™×@Ñ@×AÑAÜØ7¼¸Q»×8HÑ8HÐ7IÐJó
ð 	
ð 	‡x�xÑÜÐ8Ó9Ð9Ø‡v�v�~Ø�w‰w‰ˆØ™E Q™JÐØ—8‘8—>‘>Ó#Ð$5Ð$6Ð7×<Ñ<¸QÀÓCˆØ�}‰}¨A¯G©G´u·{±{Ó,BœUŸ[™[ÓTÐTÌÏÉÓTÐTà�v‰vˆ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.  € Ü
ˆ4ƒy�Aƒ~ÜÐ3´C¸³I°;Ð?Ó@Ð@Ø�‰7€DÜ�dœEŸL™L×CÑC×DÑDÜØ7¼¸T»
×8KÑ8KÐ7LÐMó
ð 	
ô ˆ4�:‰:ƒ˜!ÓÜÐ7¼¸D¿J¹J»Ð7HÈÐJÓKÐKð
 �>‰>Ü�
Š
�D—J‘J˜r‘N D§J¡J¨q¡MÐ2Ó3Ø�}‰}Ø�[‰[Ø—‘Ø�y‰yð ×/Ñ/Ñ;ð ×,Ñ,×6Ñ6°q¸!Ô<àà"& 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^   € Ü
ˆ4ƒy�Aƒ~ÜÐ4´S¸³Y°KÐ@ÓAÐAØ�K€DÜˆUƒ|�t—z‘zÓ!Ü!ØiÐjoÐipÐpqÐ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„   € Ü
ˆ4ƒy�Aƒ~ÜÐ3´C¸³I°;Ð?Ó@Ð@Ø�‰7€DØ�>‰>Ø�j‰jØ�{‰{Ø�Y‰YØ—‘Ø�{‰{Ø$(×$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  € Ü
ˆ4ƒy�Aƒ~ÜÐ4´S¸³Y°KÐ@ÓAÐAØ�D€AØ‡v�v�ƒ{�a—f‘f “kÜ!ØRó
ð 	
ô �!”U—\‘\×<Ñ<×=Ñ=Ø—7‘7‰ˆØ×%Ñ% aÓ(ˆØ�e‰e�H‹oˆØ’1�d�s�d�7‰|Ðà�c‰c‹eˆÜ˜#œuŸ|™|×FÑF×GÑGÜ Ø;¼DÀ»I×<NÑ<NÐ;OÐPóð ð —7‘7‰ˆØ×%Ñ% aÓ(ˆØ�g‰g�h—j‘j“lÓ#×%Ñ%Ó'ˆØ�4�C�4š�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  p‰U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=  € Ü
ˆ4ƒy�Aƒ~ÜÐ4´S¸³Y°KÐ@ÓAÐAØ�J€DˆQØ‡v�v�ƒ{�a—f‘f “kÜ!ØRó
ð 	
ð ‡y�y�Aƒ~Ü!ØTÐUY×U_ÑU_ÐT`Ðaó
ð 	
ô �!”U—\‘\×<Ñ<×=Ñ=Ü!ØZó
ð 	
ð �#‰#‹%€CÜ�cœ5Ÿ<™<×BÑB×CÑCÜØ7¼¸S»	×8JÑ8JÐ7KÐLó
ð 	
ð —‘�I€CØ×#Ñ# AÓ&€HØ�W‰W�X—Z‘Z“\¨ˆWÐ-×/Ñ/Ó1€FØ�$�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  X…R	                  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³   € Ü
ˆ4ƒy˜ÓÜÐ9¼#¸d»)¸ÐEÓFÐFØ��ˆ8�D€AÜ˜$“i 1“nˆ4�Š7¨$€Dà�G‰G€EØ�6‰6�"�e˜B‘iÓ €Dà�|Ø—S‘S“U‰l‰äØØØ˜aŸc™c›eÐ$ñ
ˆð �8Š8Ð$�U˜3˜B�ZÐ$ Ò$Ð$r4   c                 óh  • US S u  pEpgp‰n
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Ñ9€Aˆ'˜D°	à‡w�w”%×%Ñ%Ó%ÜÐCÀAÇGÁGÀ9ÐMÓNÐNØ‡w�w”%×%Ñ%Ó%ÜÐCÀAÇGÁGÀ9ÐMÓNÐNä�aœŸ™×JÑJ×KÑKÜØAÄ$ÀqÃ'×BRÑBRÐASÐTó
ð 	
ð 	‡x�xÑÜÐ8Ó9Ð9à‡}�}ƒ˜!Ó˜wŸ}™}›°!Ó3ÜØ@ÀÇÁÃÐ@QÐQVÐW^×WdÑWdÓWfÐVgÐhó
ð 	
ð ‡}�}œŸ™Ó%¨¯©¼%¿-¹-Ó)GÜØ>¸w¿}¹}¸oÈUÐSZ×S`Ñ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¿\¹\õ !ñ$¸e¿l¹lõ ñ&¸¿¹õ ñ<¸5¿<¹<õ ð°U·\±\ô ñ"¸¿¹õ ñ2¸E¿L¹Lõ ñ6%¸U¿\¹\õ %ñ*!ÀÇÁö !r4   