+
    –°³jx  ã                   ó4   € ^ RI t ^ RIHt R.t ! R R4      tR# )é    N)ÚdtypeÚ	GPULimitsc                   ó”   a € ] tR t^t o RtV 3R lR ltV 3R lR ltV 3R lR ltRV 3R lR	 lltV 3R
 lR lt	V 3R lR lt
RtV tR# )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.
c                ó4   <€ V ^8„  d   QhRS[ P                  /# )é   Útarget_device)ÚtorchÚdevice)ÚformatÚ__classdict__s   "€ÚZ/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/cuda/_device_limits.pyÚ__annotate__ÚGPULimits.__annotate__   s   ø€ ÷ 	
ñ 	
¡e§l¡lñ 	
ó    c                óÆ   € \         P                  P                  V4      V n        \	        V P                  P
                   V P                  P                   24      V n        R # )N)r	   ÚcudaÚget_device_propertiesÚdevice_propertiesÚintÚmajorÚminorÚcompute_capability)Úselfr   s   &&r   Ú__init__ÚGPULimits.__init__   sP   € ô "'§¡×!AÑ!AÀ-Ó!PˆÔô #&Ø×%Ñ%×+Ñ+Ð,¨T×-CÑ-C×-IÑ-IÐ,JÐKó#
ˆÖr   c                ó&   <€ V ^8„  d   QhRS[ RS[/# ©r   Ú	data_typeÚreturn©r   r   )r   r   s   "€r   r   r      s   ø€ ÷ 1ñ 1¹Uð 1Ásñ 1r   c                ó^  € R RR^@R^ R^@R^€R^@RRR^€R	^@/	pR
pV\         P                  J d   RV P                   2pMJV\         P                  J d   RV P                   2pM&V\         P                  J d   RV P                   2pMRpW29  d   \        RV P                   RV R24      hW#,          # )Ú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Ù   € ð �sØ�rØ�rà�rØ�sØ�rà˜Ø˜Ø˜ð#
Ðð ˆØœŸ™Ó%Ø˜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                ó&   <€ V ^8„  d   QhRS[ RS[/# r   r    )r   r   s   "€r   r   r   A   s   ø€ ÷ '1ñ '1¹uð '1Éñ '1r   c                óþ  € R RRRRRR^@RRR	RR
RRRR^€RRRRRRRR/pRpV\         P                  J d   RV P                   2pM’V\         P                  J d   RV P                   2pMnV\         P                  J d   RV P                   2pMJV\         P
                  J d   RV P                   2pM&V\         P                  J d   RV P                   2pMRpW29  d   \        RV P                   RV R24      hW#,          # )Úint8_80i   r"   i   r$   i   r%   Úint8_90i   Úfp8_90r&   r'   r(   Úint8_100i    Úfp8_100r)   r*   r,   r-   r.   Úint8_r/   r0   r1   r2   r3   )r	   r4   r   Úbfloat16r5   Úint8r6   r7   r8   s   &&  r   Ú%get_fma_per_cycle_per_sm_tensor_coresÚ/GPULimits.get_fma_per_cycle_per_sm_tensor_coresA   s+  € ð �tØ�tØ�sØ�rà�tØ�dØ�tØ�tØ�sà˜Ø�tØ˜Ø˜ð!#
Ðð$ ˆØœŸ™Ó%Ø˜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   c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r   r   Úuse_tensor_coresr   )r   ÚboolÚfloat)r   r   s   "€r   r   r   j   s%   ø€ ÷ !ñ !Ùð!Ù26ð!á	ñ!r   c                óò   € V P                   P                  pV P                   P                  p^ pV'       d   V P                  V4      pMV P	                  V4      pW5,          ^,          V,          R,          pV# )r   g    eÍÍA)r   Úmulti_processor_countÚ
clock_raterG   r;   )r   r   rJ   Únum_smsrO   Ú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                ó    <€ V ^8„  d   QhRS[ /# ©r   r   ©r   )r   r   s   "€r   r   r   {   s   ø€ ÷  ñ  ©#ñ  r   c                óª   € \        ^V P                  P                  ,          ^,          4      pV P                  P                  R,          pW,          pV# )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                ó    <€ V ^8„  d   QhRS[ /# rV   rW   )r   r   s   "€r   r   r   ƒ   s   ø€ ÷ 	 ñ 	 ±ñ 	 r   c                óŒ   € V P                   P                  p^€pW,          pW0P                   P                  ,          R,          pV# )é€   rY   )r   rN   rO   )r   rP   Úbytes_per_cycle_per_smÚbytes_per_cycle_per_devicer^   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   r;   rG   rS   r_   rf   Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r      sH   ø‡ € ñ÷	
ð 	
÷ 1ð 1÷D'1ð '1÷R!ò !÷" ð  ÷	 ö 	 r   )r	   Útorch._Cr   Ú__all__r   © r   r   Ú<module>rr      s    ðÛ Ý ð ˆ-€÷D ó D r   