ó
    Këgjâ  ã                   óœ  • S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKJr  S SKJ	r	J
r
  S SKrS SKrS SKJr  \R                   " \5      r\
" SS9S 5       r\" 5         S r\	S5S
\S\4S jj5       r\	S6S\S\4S jj5       r\	S\4S j5       rS\4S jr\" 5       S:w  a  \" 5       OSr\" \\5      r\" 5       r\" 5       r \S:H  r!\RD                  " 5       RG                  5       S;   r$\S:H  r%\%=(       a    S\RL                  RO                  S 5      ;   r(\S:H  r)\S:H  r*\*=(       aE    S\RV                  RO                  S 5      ;   =(       d     \RV                  RY                  5       S    S:H  r-\*=(       a     \RV                  RY                  5       S    S:H  r.\*=(       a     \RV                  RY                  5       S    S;   r/\*=(       a!    \RV                  RY                  S 5      S    S:¬  r0\1" \Rd                  S5      r3\*=(       a{    \RV                  RY                  S 5      S    S:¬  =(       aS    \Rh                  Rk                  SS5      S:H  =(       a-    \1" \Rd                  S 5      =(       d    \1" \Rd                  S!5      r6\*(       a  \0(       d  S"\Rh                  S#'   S$\S%\S&\S-  4S' jr7\6(       a$  \Rq                  S(5        \Rr                  " \75        O*\/(       a#  \Rq                  S)5        \Rr                  " \75        S* r: " S+ S,\5      r;\	S7S-\S\S\4S. jj5       r<\" S	5      (       ac  \S/:X  a  Sr\" \\5      r\Rz                  " \R|                  R~                  \S09r@\Rz                  " \R|                  R‚                  \S09rBS1\4S2 jrCg\S:X  d   S35       e\R|                  R~                  r@\R|                  R‚                  rBS1\4S4 jrCg)8é    N)ÚEnum)ÚcacheÚ	lru_cache)Úversioné   )Úmaxsizec                  ó>  • [         R                  S:X  a   SSKJn Jn  U" S5        [        R                  " [        R                  5      n[        R                  " S5      nX#:  a  [
        R                  SU S35        [        R                  " [         R                  R                   S	[         R                  R                   35      n[        R                  " S
5      nXE:  a  [
        R                  SU S35        g! W  a    [
        R                  S5         Nõf = f)zµ
Checks the current operating system, Triton version, and Python version,
issuing warnings if they don't meet recommendations.
This function's body only runs once due to lru_cache.
Úwin32r   )ÚPackageNotFoundErrorÚmetadataztriton-windowszÁDetected Windows operating system. Consider installing triton-windows (https://github.com/triton-lang/triton-windows) for better compatibility. Without it, some features may not work correctly.z3.3.0zCurrent Triton version z is below the recommended 3.3.0 version. Errors may occur and these issues will not be fixed. Please consider upgrading Triton.Ú.z3.11zCurrent Python version zv is below the recommended 3.11 version. It is recommended to upgrade to Python 3.11 or higher for the best experience.N)ÚsysÚplatformÚimportlib.metadatar   r   ÚloggerÚwarningÚpackage_versionÚparseÚtritonÚ__version__Úversion_infoÚmajorÚminor)r   r   Útriton_versionÚrequired_triton_versionÚ
py_versionÚrequired_py_versions         ÚŸC:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\fla/utils/_device.pyÚcheck_environmentsr      s  € ô ‡|�|�wÓð		ßIÙÐ%Ô&ô %×*Ò*¬6×+=Ñ+=Ó>€NÜ-×3Ò3°GÓ<ÐàÓ/Ü�‰Ø% nÐ%5ð 60ð 0ô	
ô !×&Ò&¬#×*:Ñ*:×*@Ñ*@Ð)AÀÄ3×CSÑCS×CYÑCYÐBZÐ'[Ó\€JÜ)×/Ò/°Ó7ÐàÓ'Ü�‰Ø% j \ð 2]ð ]ô	
ð
 øð7 $ó 	Ü�N‰NðDöð	ús   –C> Ã>DÄDc                  ó.   • [         R                  " SSS9  g )Nz>Triton is not supported on current platform, roll back to CPU.é   )Ú
stacklevel)ÚwarningsÚwarn© ó    r   Ú_cpu_device_warningr'   H   s   € Ü‡M‚MÐSÐabÓcr&   ú2.4Ú	version_sÚreturnc                 óx   • [         R                  " [        R                  5      [         R                  " U 5      :¬  $ ©N)r   r   Útorchr   )r)   s    r   Úcheck_pytorch_versionr.   L   s)   € ä× Ò ¤×!2Ñ!2Ó3´×7LÒ7LÈYÓ7WÑWÐWr&   Ú
tensor_idxc                 óô  •  [         R                  R                  R                  R                  R                  U 5      S   $ ! [         a«     [         R                  R                  R                  R                  5       R                  S:X  aB  [         R                  R                  R                  R                  R                  U 5      S   s $ O$! [         a    [        R                  SSS9   Of = f gf = f)NÚmultiprocessor_countÚnpuÚnum_vectorcorez:Failed to get NPU multiprocessor count, falling back to 1.T)Úexc_infor   )r   ÚruntimeÚdriverÚactiveÚutilsÚget_device_propertiesÚ	ExceptionÚget_current_targetÚbackendr   Údebug)r/   s    r   Úget_multiprocessor_countr>   Q   sÊ   € ð	Ü�~‰~×$Ñ$×+Ñ+×1Ñ1×GÑGÈ
ÓSÐTjÑkÐkøÜó ð	fÜ�~‰~×$Ñ$×+Ñ+×>Ñ>Ó@×HÑHÈEÓQÜ—~‘~×,Ñ,×3Ñ3×9Ñ9×OÑOÐPZÓ[Ð\lÑmÒmð Røäó 	fÜ�L‰LÐUÐ`dˆLÓeð	fúáðús<   ‚?A Á
C7ÁA?CÃC7ÃC7ÃC1Ã.C7Ã0C1Ã1C7Ã6C7c                  ó°   •  [         R                  R                  R                  R	                  5       R
                  $ ! [         a    [        5          gf = f)NÚcpu)r   r5   r6   r7   r;   r<   r:   r'   r%   r&   r   Úget_available_devicerA   _   sD   € ðÜ�~‰~×$Ñ$×+Ñ+×>Ñ>Ó@×HÑHÐHøÜó ÜÔÙðús   ‚;> ¾AÁAc                  ó@   • [        5       n SSSS.R                  X 5      $ )NÚcudaÚxpu)rC   ÚhiprD   )rA   Úget)r<   s    r   Ú"map_triton_backend_to_torch_devicerG   h   s"   € Ü"Ó$€GØ 6°%Ñ8×<Ñ<¸WÓNÐNr&   rE   rC   )Úaarch64Úarm64rD   zIntel(R) Arc(TM) Ar2   zNVIDIA Hé	   é
   )rK   é   é   ÚgatherÚFLA_USE_TMAÚ0Ú1Ú$_experimental_make_tensor_descriptorÚmake_tensor_descriptorÚieeeÚTRITON_F32_DEFAULTÚsizeÚ	alignmentÚstreamc                 ó    • [         R                  " U [         R                  " [        [        R                  5       5      [         R                  S9$ )N)ÚdeviceÚdtype)r-   ÚemptyrZ   Údevice_nameÚdevice_torch_libÚcurrent_deviceÚint8)rV   rW   rX   s      r   Ú_default_alloc_fnra   ›   s1   € Ü�;Š;�t¤E§L¢L´Ô>N×>]Ñ>]Ó>_Ó$`Ôhm×hrÑhrÑsÐsr&   z'TMA is supported, using TMA by default.zABlackwell detected: registering default global_scratch allocator.c                  ó   •  [        [        R                  5       5       V s/ s HC  n [        R                  R
                  R                  R                  R                  U 5      S   PME     sn $ s  sn f ! [         a    [        5         S/s $ f = f)NÚmax_shared_meméÿÿÿÿ)Úranger^   Údevice_countr   r5   r6   r7   r8   r9   r:   r'   )Úis    r   Úget_all_max_shared_memrh   ª   s‚   € ðô Ô+×8Ñ8Ó:Ô;ó
â;�ô �N‰N×!Ñ!×(Ñ(×.Ñ.×DÑDÀQÓGÐHXÔYÙ;ñ
ð 	
ùò 
øô ó ÜÔØˆtŠðús#   ‚A3 ¡A
A.Á+A3 Á.A3 Á3BÂBc                   ó@   • \ rS rSrSrSrSrSr\S\	S\
4S j5       rS	rg
)ÚBackendéµ   i Œ i Œ i Œ i � Úarchr*   c                 óˆ   •  XR                  5          R                  $ ! [         a    U R                  R                  s $ f = fr,   )ÚupperÚvalueÚKeyErrorÚDEFAULT)Úclsrl   s     r   Úget_shared_memoryÚBackend.get_shared_memory»   s;   € ð	%Ø—z‘z“|Ñ$×*Ñ*Ð*øÜó 	%Ø—;‘;×$Ñ$Ò$ð	%ús   ‚ ž AÁ Ar%   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚADAÚAMPEREÚHOPPERrq   ÚclassmethodÚstrÚintrs   Ú__static_attributes__r%   r&   r   rj   rj   µ   s6   † Ø
€CØ€FØ€FØ€Gàð% Sð %¨Só %ó ó%r&   rj   rl   c                 óp   •  [        5       nX!   nU[        R                  U 5      :¬  $ ! [         a     gf = f)NF)rh   rj   rs   r:   )rl   r/   Údevice_shared_mem_listÚmax_shared_memorys       r   Úcheck_shared_memrƒ   Ã   sA   € ðÜ!7Ó!9ÐØ2Ñ>ÐØ ¤G×$=Ñ$=¸dÓ$CÑCÐCøÜó Ùðús   ‚%( ¨
5´5r@   )Údevice_typeÚindexc                 ó¾   • U c  [         R                  " 5       $  [        R                  U 5      $ ! [        [
        [        4 a    [         R                  " 5       s $ f = fr,   )Ú
contextlibÚnullcontextr^   rZ   ÚAttributeErrorÚAssertionErrorÚRuntimeError©r…   s    r   Úcustom_device_ctxr�   Ô   sQ   € Ø‰=Ü×)Ò)Ó+Ð+ð	,Ü#×*Ñ*¨5Ó1Ð1øÜ¤´Ð=ó 	,Ü×)Ò)Ó+Ò+ð	,ús   š/ ¯*AÁAz:Only cuda device is supported for PyTorch version < 2.4.0.c                 óÒ   • U c  [         R                  " 5       $  [        R                  R	                  U 5      $ ! [
        [        [        4 a    [         R                  " 5       s $ f = fr,   )r‡   rˆ   r-   rC   rZ   r‰   rŠ   r‹   rŒ   s    r   r�   r�   à   sU   € Ø‰=Ü×)Ò)Ó+Ð+ð	,Ü—:‘:×$Ñ$ UÓ+Ð+øÜ¤´Ð=ó 	,Ü×)Ò)Ó+Ò+ð	,ús   š9 ¹*A&Á%A&)r(   )r   )Únoner   )Dr‡   Ú	functoolsÚloggingÚosr   r   r#   Úenumr   r   r   r-   r   Ú	packagingr   r   Ú	getLoggerru   r   r   r'   r}   Úboolr.   r~   r>   rA   rG   rZ   Úgetattrr^   Údevice_platformr]   ÚIS_AMDÚmachineÚlowerÚIS_ARMÚIS_INTELrD   Úget_device_nameÚIS_INTEL_ALCHEMISTÚIS_NPUÚ	IS_NVIDIArC   Úget_device_capabilityÚIS_NVIDIA_HOPPERÚIS_NVIDIA_SM100ÚIS_NVIDIA_BLACKWELLÚIS_TF32_SUPPORTEDÚhasattrÚlanguageÚIS_GATHER_SUPPORTEDÚenvironrF   ÚIS_TMA_SUPPORTEDra   ÚinfoÚset_allocatorrh   rj   rƒ   ÚpartialÚampÚ
custom_fwdÚautocast_custom_fwdÚ
custom_bwdÚautocast_custom_bwdr�   r%   r&   r   Ú<module>r´      s  ðó Û Û Û 	Û Û 
Û Ý ß &ã Û Ý 0à	×	Ò	˜8Ó	$€ñ �1Ññ(ó ð(ñV Ô òdð ñX Sð X°Tô Xó ðXð ñ
¨ð 
°Sô 
ó ð
ð ð˜có ó ððO¨Cô Oñ $8Ó#9¸UÓ#BÑ	Ô	È€Ù˜5 &Ó)Ð Ù&Ó(€Ù0Ó2€à
˜UÑ
"€à	×	Ò	Ó	×	!Ñ	!Ó	#Ð';Ñ	;€à˜uÑ$€Ø×WÐ#7¸5¿9¹9×;TÑ;TÐUVÓ;WÑ#WÐ à
˜UÑ
"€à Ñ&€	à÷ Ø�e—j‘j×0Ñ0°Ó3Ñ3÷ 	6Ø�:‰:×+Ñ+Ó-¨aÑ0°AÑ5ð ð ×L §¡×!AÑ!AÓ!CÀAÑ!FÈ"Ñ!L€Ø ×V U§Z¡Z×%EÑ%EÓ%GÈÑ%JÈhÑ%VÐ ð ×N 5§:¡:×#CÑ#CÀAÓ#FÀqÑ#IÈQÑ#NÐ Ù˜fŸo™o¨xÓ8Ð à÷ Ø�
‰
×(Ñ(¨Ó+¨AÑ.°!Ñ3÷à
�
‰
�‰�} cÓ*¨cÑ1÷ñ 	�—‘Ð!GÓH÷ 	>Ù�6—?‘?Ð$<Ó=ð ö Ö&ð (.€B‡J�JÐ#Ñ$ðt˜Cð t¨Cð t¸¸t¹ô tö Ø
‡K�KÐ9Ô:Ø
×ÒÐ*Õ+Þð ‡K�KÐSÔTØ
×ÒÐ*Ô+òô%ˆdô %ð ñ˜3ð °Sð Àô ó ðñ ˜×ÑØ�ƒØˆÙ" 5¨&Ó1ÐØ#×+Ò+¨E¯I©I×,@Ñ,@ÈfÑUÐØ#×+Ò+¨E¯I©I×,@Ñ,@ÈfÑUÐð, õ ,ð �VÓÐYÐYÓYÐØ*×.Ñ.×9Ñ9ÐØ*×.Ñ.×9Ñ9Ðð, õ ,r&   