ó
    N– jx  ã                   ó2   • S SK r S SKJr  S/r " S S5      rg)é    N)ÚdtypeÚ	GPULimitsc                   ó–   • \ rS rSrSrS\R                  4S jrS\S\	4S jr
S\S\	4S jr SS\S	\S\4S
 jjrS\	4S jrS\	4S jrSrg)r   é   a  Utility class that provides the theoretical limits of Nvidia GPU devices. The
limits don't take into account thermal throttling (assume that the GPU run at its
peak rated frequency). This is because user hardware configuration may influence
power behavior.
Útarget_devicec                 óÄ   • [         R                  R                  U5      U l        [	        U R                  R
                   U R                  R                   35      U l        g )N)ÚtorchÚcudaÚget_device_propertiesÚdevice_propertiesÚintÚmajorÚminorÚcompute_capability)Úselfr   s     Új/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/torch/cuda/_device_limits.pyÚ__init__ÚGPULimits.__init__   sP   € ô "'§¡×!AÑ!AÀ-Ó!PˆÔô #&Ø×%Ñ%×+Ñ+Ð,¨T×-CÑ-C×-IÑ-IÐ,JÐKó#
ˆÕó    Ú	data_typeÚreturnc           
      ó>  • SSSSSSSSSS.	nSnU[         R                  L a  SU R                   3nOHU[         R                  L a  SU R                   3nO%U[         R                  L a  S	U R                   3nOS
nX2;  a  [        SU R                   SU S35      eX#   $ )Né   é@   é    é€   )	Úfp16_80Úfp32_80Úfp64_80Úfp16_90Úfp32_90Úfp64_90Úfp16_100Úfp32_100Úfp64_100Ú Úfp16_Úfp32_Úfp64_ÚunknownúNo data for sm_ú and Ú.)r	   Úfloat16r   Úfloat32Úfloat64ÚRuntimeError©r   r   Úhardcoded_device_valuesÚdict_keys       r   Ú#get_fma_per_cycle_per_sm_cuda_coresÚ-GPULimits.get_fma_per_cycle_per_sm_cuda_cores   sÇ   € ð ØØàØØàØØñ#
Ðð ˆØœŸ™Ò%Ø˜t×6Ñ6Ð7Ð8‰HØœ%Ÿ-™-Ò'Ø˜t×6Ñ6Ð7Ð8‰HØœ%Ÿ-™-Ò'Ø˜t×6Ñ6Ð7Ð8‰Hà ˆHàÓ2ÜØ! $×"9Ñ"9Ð!:¸%À	¸{È!ÐLóð ð 'Ñ0Ð0r   c                 óÒ  • SSSSSSSSSSSSSS.nS	nU[         R                  L a  S
U R                   3nOŽU[         R                  L a  S
U R                   3nOkU[         R                  L a  SU R                   3nOHU[         R
                  L a  SU R                   3nO%U[         R                  L a  SU R                   3nOSnX2;  a  [        SU R                   SU S35      eX#   $ )Ni   i   i   r   i   r   i    )Úint8_80r   r   r   Úint8_90Úfp8_90r    r!   r"   Úint8_100Úfp8_100r#   r$   r&   r'   r(   Úint8_r)   r*   r+   r,   r-   )r	   r.   r   Úbfloat16r/   Úint8r0   r1   r2   s       r   Ú%get_fma_per_cycle_per_sm_tensor_coresÚ/GPULimits.get_fma_per_cycle_per_sm_tensor_coresA   s  € ð ØØØàØØØØàØØØñ!#
Ðð$ ˆØœŸ™Ò%Ø˜t×6Ñ6Ð7Ð8‰HØœ%Ÿ.™.Ò(à˜t×6Ñ6Ð7Ð8‰HØœ%Ÿ-™-Ò'Ø˜t×6Ñ6Ð7Ð8‰HØœ%Ÿ*™*Ò$Ø˜t×6Ñ6Ð7Ð8‰HØœ%Ÿ-™-Ò'Ø˜t×6Ñ6Ð7Ð8‰Hà ˆHàÓ2ÜØ! $×"9Ñ"9Ð!:¸%À	¸{È!ÐLóð ð 'Ñ0Ð0r   Úuse_tensor_coresc                 óÐ   • U R                   R                  nU R                   R                  nSnU(       a  U R                  U5      nOU R	                  U5      nX5-  S-  U-  S-  nU$ )Nr   é   g    eÍÍA)r   Úmulti_processor_countÚ
clock_rater@   r5   )r   r   rB   Únum_smsrF   Úfma_per_cycleÚtflops_per_seconds          r   Úget_tflops_per_secondÚGPULimits.get_tflops_per_secondj   sn   € ð ×(Ñ(×>Ñ>ˆØ×+Ñ+×6Ñ6ˆ
àˆÞØ ×FÑFÀyÓQ‰Mà ×DÑDÀYÓOˆMð $Ñ3°aÑ7¸*ÑDÀsÑJÐØ Ð r   c                 óŠ   • [        SU R                  R                  -  S-  5      nU R                  R                  S-  nX-  nU$ )NrD   r   éè  )r   r   Úmemory_bus_widthÚmemory_clock_rate)r   Úbus_bytes_per_cycleÚmem_clock_rate_HzÚbytes_per_seconds       r   Úget_memory_bandwidth_BpsÚ"GPULimits.get_memory_bandwidth_Bps{   sL   € ô " ! d×&<Ñ&<×&MÑ&MÑ"MÐPQÑ"QÓRÐØ ×2Ñ2×DÑDÀtÑKÐØ.ÑBÐØÐr   c                 ót   • U R                   R                  nSnX-  nX0R                   R                  -  S-  nU$ )Nr   rM   )r   rE   rF   )r   rG   Úbytes_per_cycle_per_smÚbytes_per_cycle_per_devicerR   s        r   Úget_shared_memory_bandwidth_BpsÚ)GPULimits.get_shared_memory_bandwidth_Bpsƒ   sH   € ð ×(Ñ(×>Ñ>ˆØ!$ÐØ%,Ñ%EÐ"à&×)?Ñ)?×)JÑ)JÑJÈTÑQð 	ð  Ðr   )r   r   N)T)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r	   Údevicer   r   r   r5   r@   ÚboolÚfloatrJ   rS   rX   Ú__static_attributes__© r   r   r   r      sy   † ñð	
 e§l¡lô 	
ð 1¸Uð 1Àsô 1ðD'1¸uð '1Èô '1ðT :>ñ!Øð!Ø26ð!à	õ!ð" ¨#ô  ð	 °÷ 	 r   )r	   Útorch._Cr   Ú__all__r   rc   r   r   Ú<module>rf      s    ðÛ Ý ð ˆ-€÷D ò D r   