§
    U�’j˜*  ã                   ób  — d dl Z d dlZg d¢Ze j        d„ ¦   «         Zd„ Zddej        fd„Zddej        fd„Zddej        fd	„Z	ddej        fd
„Z
dej        fd„Zddej        fd„Zddej        fd„Zddej        fd„Zddej        fd„Zddej        fd„Zddej        fd„Zddej        fd„ZdS )é    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               #   ó^   K  — t           j                             ¦   «         } 	 d V — ~ d S # ~ w xY w©N)ÚtorchÚ_CÚ_DisableTorchDispatch)Úguards    úOC:\Projects\DSCons\.venv\Lib\site-packages\torch\sparse\_semi_structured_ops.pyÚno_dispatchr      s9   è è € åŒH×*Ò*Ñ,Ô,€EðØˆˆˆàˆEˆEøˆEˆ	ˆ	ˆ	ˆ	s   ¢) ©,c                 ó\   — t          ¦   «         5   | |Ž cd d d ¦  «         S # 1 swxY w Y   d S r   )r   )ÚfuncÚtypesÚargsÚkwargss       r   r   r   !   sy   € Ý	‰Œð ð Øˆt�Tˆ{ðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s   �!¡%¨%© Úreturnc                 óö  — t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚|d         }t          |t          j        j        ¦  «        s$t          dt          |¦  «        j        › �¦  «        ‚|j        €t          d¦  «        ‚|j	        €G|j
        \  }}||z  dz  }|j                             ¦   «         d |…                              |d¦  «        S |j                             ¦   «         S ©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„y�A‚~€~ÝÐ?µC¸±I´IÐ?Ð?Ñ@Ô@Ð@ØˆQŒ€AÝ�a�œÔ@ÑAÔAð 
ÝØJ½¸Q¹¼Ô8HÐJÐJñ
ô 
ð 	
ð 	„xÐÝÐ8Ñ9Ô9Ð9Ø„v€~ØŒw‰ˆˆ1Ø ™E Q™JÐØŒx�~Š~ÑÔÐ 3Ð!2Ð 3Ô4×9Ò9¸!¸RÑ@Ô@Ð@àŒx�ŠÑ Ô Ð ó    c                 óR  — t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚|d         }t          |t          j        j        ¦  «        s$t          dt          |¦  «        j        › �¦  «        ‚|j        €t          d¦  «        ‚|j	        €‡|j
        \  }}||z  dz  }|j                             ¦   «         |d …                              |d¦  «        }|                     |j        t          j        k    rt          j        nt          j        ¦  «        S |j	        S r    )r'   r(   r)   r   r*   r+   r,   r-   r.   r/   r0   r1   r2   ÚdtypeÚint32Úint16)	r   r   r   r   r4   r5   r6   r7   Úmetadatas	            r   r   r   8   s	  € Ý
ˆ4�y„y�A‚~€~ÝÐ?µC¸±I´IÐ?Ð?Ñ@Ô@Ð@ØˆQŒ€AÝ�a�œÔ@ÑAÔAð 
ÝØJ½¸Q¹¼Ô8HÐJÐJñ
ô 
ð 	
ð 	„xÐÝÐ8Ñ9Ô9Ð9Ø„v€~ØŒw‰ˆˆ1Ø ™E Q™JÐØ”8—>’>Ñ#Ô#Ð$5Ð$6Ð$6Ô7×<Ò<¸QÀÑCÔCˆØ�}Š}¨A¬Gµu´{Ò,BÐ,B�Uœ[˜[ÍÌÑTÔTÐTàŒvˆr8   c                 óœ  — t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚|d         }t          |t          j        j        ¦  «        s$t          dt          |¦  «        j        › �¦  «        ‚t          |j        ¦  «        dk    r%t          dt          |j        ¦  «        › d�¦  «        ‚| 	                    t          j
        |j        d         |j        d         g¦  «        |j        |j        |j        |j        |j        �|j                             dd¦  «        nd |d         j        |d         j        ¬	¦  «        S )
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-   r0   Ú	__class__ÚSizer@   rA   r.   r/   rB   Ú	transposerC   rD   ©r   r   r   r   Úselfs        r   r   r   K   s7  € Ý
ˆ4�y„y�A‚~€~ÝÐ?µC¸±I´IÐ?Ð?Ñ@Ô@Ð@Ø�Œ7€DÝ�d�EœLÔCÑDÔDð 
ÝØM½¸T¹
¼
Ô8KÐMÐMñ
ô 
ð 	
õ ˆ4Œ:�„˜!ÒÐÝÐJ½¸D¼J¹¼ÐJÐJÐJÑKÔKÐKð
 �>Š>ÝŒ
�D”J˜r”N D¤J¨q¤MÐ2Ñ3Ô3ØŒ}ØŒ[Ø”ØŒyð Ô/Ð;ð Ô,×6Ò6°q¸!Ñ<Ô<Ð<àà"& q¤'Ô"CØ˜qœ'Ô3ð ñ ô ð r8   c                 óÊ   — t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚|\  }}t          |¦  «        |j        k    rt	          d|› d�¦  «        ‚|S )Nr%   úexpected 2 args, got z[`view` is not implemented for SparseSemiStructuredTensor, except for the dummy case (shape=ú))r'   r(   Útupler0   ÚNotImplementedError)r   r   r   r   rI   r0   s         r   r   r   i   sr   € Ý
ˆ4�y„y�A‚~€~ÝÐ@µS¸±Y´YÐ@Ð@ÑAÔAÐAØ�K€Dˆ%ÝˆU�|„|�t”zÒ!Ð!Ý!ØrÐjoÐrÐrÐrñ
ô 
ð 	
ð €Kr8   c                 ó  — t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚|d         }|                     |j        |j        |j        |j        |j        |j        |j	        |j
        d¬¦	  «	        S )Nr!   r"   r   F©	r0   r.   r/   r@   rA   rB   rC   rD   Úrequires_grad)r'   r(   rE   r0   r.   r/   r@   rA   rB   rC   rD   rH   s        r   r   r   t   s€   € Ý
ˆ4�y„y�A‚~€~ÝÐ?µC¸±I´IÐ?Ð?Ñ@Ô@Ð@Ø�Œ7€DØ�>Š>ØŒjØŒ{ØŒYØ”ØŒ{Ø$(Ô$DØ"&Ô"@ØÔ0Øð ñ 
ô 
ð 
r8   c                 óþ  — t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚|\  }}|j        dk    s|j        dk    rt          d¦  «        ‚t	          |t
          j        j        ¦  «        r|                     |¦  «        S | 	                    ¦   «         }t	          |t
          j        j        ¦  «        s$t          dt          |¦  «        j        › �¦  «        ‚|                     |d¬¦  «        S )Nr%   rK   úD`SparseSemiStructuredTensor` matmul: Broadcasting is not implementedr#   T)Úshould_transpose_dense)r'   r(   ÚndimrN   r)   r   r*   r+   Ú_mmÚtr,   r-   )r   r   r   r   r4   ÚBÚB_ts          r   r	   r	   …   së   € Ý
ˆ4�y„y�A‚~€~ÝÐ@µS¸±Y´YÐ@Ð@ÑAÔAÐAØ�D€A€qØ„v�‚{€{�a”f ’k�kÝ!ØRñ
ô 
ð 	
õ �!•U”\Ô<Ñ=Ô=ð 7Ø�uŠu�Q‰xŒxˆà�cŠc‰eŒeˆÝ˜#�uœ|ÔFÑGÔGð 	Ý ØP½DÀ¹I¼IÔ<NÐPÐPñô ð ð �wŠw�q°ˆwÑ6Ô6Ð6r8   c                 óN  — t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚|\  }}}|j        dk    s|j        dk    rt          d¦  «        ‚|j        dk    rt          d|j        › �¦  «        ‚t          |t          j        j        ¦  «        rt          d¦  «        ‚| 	                    ¦   «         }t          |t          j        j        ¦  «        s$t          dt          |¦  «        j        › �¦  «        ‚|j        \  }}	|                     ||d	¬
¦  «        S )Né   zexpected 3 args, got r%   rS   r!   zF`SparseSemiStructuredTensor` matmul: only bias dim=1 supported. Shape=zL`SparseSemiStructuredTensor` matmul: only operand B of `addmm` can be sparser#   T)ÚbiasrT   )r'   r(   rU   rN   r0   r)   r   r*   r+   rW   r,   r-   rV   )
r   r   r   r   r\   r4   rX   rY   ÚrowÚ_cols
             r   r
   r
   ˜   s0  € Ý
ˆ4�y„y�A‚~€~ÝÐ@µS¸±Y´YÐ@Ð@ÑAÔAÐAØ�J€Dˆ!ˆQØ„v�‚{€{�a”f ’k�kÝ!ØRñ
ô 
ð 	
ð „y�A‚~€~Ý!ØaÐUYÔU_ÐaÐañ
ô 
ð 	
õ �!•U”\Ô<Ñ=Ô=ð 
Ý!ØZñ
ô 
ð 	
ð �#Š#‰%Œ%€CÝ�c�5œ<ÔBÑCÔCð 
ÝØL½¸S¹	¼	Ô8JÐLÐLñ
ô 
ð 	
ð ”�I€CˆØ�7Š7�1˜4¸ˆ7Ñ=Ô=Ð=r8   c                 ó¬  — t          |¦  «        dvrt          dt          |¦  «        › �¦  «        ‚|d d…         \  }}t          |¦  «        dk    r|d         nd }|j        }|                     d|d         ¦  «        }|€||                     ¦   «         z  }	n't          d d |||                     ¦   «         g¬¦  «        }	 |	j        g |d d…         ¢d‘R Ž S )N)r%   r[   zexpected 2 or 3 args, got r%   r[   r&   )r   r   r   )r'   r(   r0   r2   rW   r
   )
r   r   r   r   r4   rX   r\   r0   ÚA_2dÚress
             r   r   r   ±   så   € Ý
ˆ4�y„y˜ÐÐÝÐE½#¸d¹)¼)ÐEÐEÑFÔFÐFØ���Œ8�D€A€qÝ˜$‘i”i 1’n�nˆ4�Œ7ˆ7¨$€DàŒG€EØ�6Š6�"�e˜B”iÑ Ô €DØ€|Ø�Q—S’S‘U”U‰lˆˆåØØØ˜˜aŸcšc™eœeÐ$ð
ñ 
ô 
ˆð
 ˆ3Œ8Ð$�U˜3˜B˜3”ZÐ$ Ð$Ð$Ð$Ð$r8   c                 ó0  — |d d…         \  }}}}}}	}
|j         t          j        k    rt          d|j         › �¦  «        ‚|j         t          j        k    rt          d|j         › �¦  «        ‚t	          |t          j        j        ¦  «        s$t          dt          |¦  «        j        › �¦  «        ‚|j	        €t          d¦  «        ‚| 
                    ¦   «         dk    s| 
                    ¦   «         dk    r9t          d| 
                    ¦   «         › d| 
                    ¦   «         › �¦  «        ‚|j         t          j        k    s|j         t          j        k    rt          d	|j         › d|j         › �¦  «        ‚t          j        |j	        |||z  |
¬
¦  «        }|S )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)r:   r   Úfloat8_e4m3fnr(   r)   r*   Ú$SparseSemiStructuredTensorCUSPARSELTr,   r-   r.   ÚnumelÚfloat32Ú_cslt_sparse_mm)r   r   r   r   r4   rX   ÚA_scaleÚB_scaler\   Úscale_resultre   Úsparse_results               r   r   r   Ä   s£  € à<@ÀÀ!À¼HÑ9€A€qˆ'�7˜D ,°	à„w•%Ô%Ò%Ð%ÝÐMÀAÄGÐMÐMÑNÔNÐNØ„w•%Ô%Ò%Ð%ÝÐMÀAÄGÐMÐMÑNÔNÐNå�a�œÔJÑKÔKð 
ÝØTÅ$ÀqÁ'Ä'ÔBRÐTÐTñ
ô 
ð 	
ð 	„xÐÝÐ8Ñ9Ô9Ð9à‡}‚}�„˜!ÒÐ˜wŸ}š}™œ°!Ò3Ð3ÝØhÀÇÂÁÄÐhÐhÐW^×WdÒWdÑWfÔWfÐhÐhñ
ô 
ð 	
ð „}�œÒ%Ð%¨¬½%¼-Ò)GÐ)GÝØb¸w¼}ÐbÐbÐSZÔS`ÐbÐbñ
ô 
ð 	
õ Ô)Ø	ŒØ	Ø˜ÑØð	ñ ô €Mð Ðr8   c                 ó   — t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚|d         }t          |t          j        j        ¦  «        s$t          dt          |¦  «        j        › �¦  «        ‚|                     |j	        |j
        €d n|j
                             ¦   «         |j        €d n|j                             ¦   «         |j        €d n|j                             ¦   «         |j        €d n|j                             ¦   «         |j        €d n|j                             ¦   «         |j        |j        |j        ¬¦	  «	        S )Nr!   r"   r   r#   rP   )r'   r(   r)   r   r*   r+   r,   r-   rE   r0   r.   Úcloner/   r@   rA   rB   rC   rD   rQ   rH   s        r   r   r   è   s:  € Ý
ˆ4�y„y�A‚~€~ÝÐ?µC¸±I´IÐ?Ð?Ñ@Ô@Ð@à�Œ7€DÝ�d�EœLÔCÑDÔDð 
ÝØM½¸T¹
¼
Ô8KÐMÐMñ
ô 
ð 	
ð
 �>Š>ØŒjØ”{Ð*ˆtˆt°´×0AÒ0AÑ0CÔ0CØ”YÐ&ˆTˆT¨D¬I¯OªOÑ,=Ô,=ØœÐ.��°D´M×4GÒ4GÑ4IÔ4IØ”{Ð*ˆtˆt°´×0AÒ0AÑ0CÔ0Cð Ô/Ð7ð ˆDàÔ1×7Ò7Ñ9Ô9à"&Ô"@ØÔ0ØÔ(ð ñ ô ð r8   c                 óä   — |d         }|pi }|                      dd ¦  «        }|�:t          j        |¦  «        j        dk    r|                     ¦   «         } | |fi |¤ŽS t          d|› d�¦  «        ‚)Nr   ÚdeviceÚcpuz`_to_copy()` with kwargs=zb is not implemented for SparseSemiStructuredTensor. Only converting to CPU is supported currently.)Úgetr   rr   r,   Úto_denserN   )r   r   r   r   rI   rr   Údenses          r   r   r     s•   € Ø�Œ7€DØˆ\�r€Fà�ZŠZ˜ $Ñ'Ô'€FàÐ�eœl¨6Ñ2Ô2Ô7¸5Ò@Ð@Ø—’‘”ˆØˆt�EÐ$Ð$˜VÐ$Ð$Ð$å
ð	Y Fð 	Yð 	Yð 	Yñô ð r8   c                 ó–  — |d         }|dd …         }|pi }d }|rO|d         }t          |t          j        t          f¦  «        r&	 t          j        |¦  «        }n# t          $ r Y nw xY wd|v rt          j        |d         ¦  «        }|�+|j        dk    r |                     ¦   «         } | |g|¢R i |¤ŽS t          d|› d|› d�¦  «        ‚)Nr   r!   rr   rs   z`to()` with args=z	, kwargs=z\ is not implemented for SparseSemiStructuredTensor. Only `to('cpu')` is supported currently.)r)   r   rr   ÚstrÚRuntimeErrorr,   ru   rN   )	r   r   r   r   rI   Úremaining_argsrr   Ú	first_argrv   s	            r   r   r     s!  € Ø�Œ7€DØ˜!˜"˜"”X€NØˆ\�r€Fð €FØð Ø" 1Ô%ˆ	Ý�i¥%¤,µÐ!4Ñ5Ô5ð 	ðÝœ iÑ0Ô0��øÝð ð ð Ø�ðøøøà�6ÐÐÝ”˜f XÔ.Ñ/Ô/ˆàÐ˜fœk¨UÒ2Ð2Ø—’‘”ˆØˆt�EÐ5˜NÐ5Ð5Ð5¨fÐ5Ð5Ð5å
ð	S˜Nð 	Sð 	S°Vð 	Sð 	Sð 	Sñô ð s   ÁA Á
A'Á&A')r   Nr   )Ú
contextlibr   Ú__all__Úcontextmanagerr   r   ÚTensorr   r   r   r   r   r	   r
   r   r   r   r   r   r   r8   r   ú<module>r€      s÷  ðà Ð Ð Ð à €€€ðð ð €ð" Ôðð ñ Ôððð ð ð
!ð !¸U¼\ð !ð !ð !ð !ð$ð ¸e¼lð ð ð ð ð&ð ¸¼ð ð ð ð ð<ð ¸5¼<ð ð ð ð ð°U´\ð ð ð ð ð"7ð 7¸¼ð 7ð 7ð 7ð 7ð&>ð >¸E¼Lð >ð >ð >ð >ð2%ð %¸U¼\ð %ð %ð %ð %ð&!ð !ÀÄð !ð !ð !ð !ðHð ¸E¼Lð ð ð ð ð8ð ¸5¼<ð ð ð ð ð ð °e´lð ð ð ð ð ð r8   