+
    –°³j¾Z  ã                   óB  € ^ RI t ^ RIt^ RIHt ^ RIt ^ RIHtHt	 Rt
^ RIHt R R ltR	 R
 ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR%R R llt ! R R4      t ! R R 4      tR&R! R" lltR'R# R$ lltR#   ] d
    RtRt	Rt
 Li ; i)(é    N©ÚAny)ÚdriverÚruntimeTF)Ú_get_device_indexc                ó8   € V ^8„  d   QhR\         P                  /# ©é   Úreturn©ÚctypesÚCDLL)Úformats   "ÚR/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/cuda/_utils.pyÚ__annotate__r      s   € ÷ ñ ¤&§+¡+ñ ó    c                  ó  €  ^ RI p \        P                  ! \        V P	                  R4      ^ ,          4      4      pVP                  Vn        VP                  Vn        VP                   Vn        VP$                  Vn        VP(                  Vn        V#   \
        \        3 dj    \        P                  R8X  d<   \        P                  ! R\        P                  P                  ^ ,           R24      p L¸\        P                  ! R4      p LÐi ; i)r   NÚamdhip64Úwin32Ú	amdhip64_ú.dllzlibamdhip64.so)Úrocm_sdkr   r   ÚstrÚfind_librariesÚImportErrorÚ
IndexErrorÚsysÚplatformÚtorchÚversionÚhipÚhipGetErrorStringÚcuGetErrorStringÚhipModuleLoadDataÚcuModuleLoadDataÚhipModuleGetFunctionÚcuModuleGetFunctionÚhipModuleLaunchKernelÚcuLaunchKernelÚhipFuncSetAttributeÚcuFuncSetAttribute)r   Úlibs     r   Ú_get_hip_runtime_libraryr-      sÒ   € ð	0ãä�kŠkœ#˜h×5Ñ5°jÓAÀ!ÕDÓEÓFˆð ×0Ñ0€CÔØ×0Ñ0€CÔØ!×6Ñ6€CÔØ×2Ñ2€CÔØ ×4Ñ4€CÔØ€Jøô œÐ$ô 0Ü�<‰<˜7Ô"Ü—+’+ 	¬%¯-©-×*;Ñ*;¸AÕ*>Ð)?¸tÐDÓEŠCä—+’+Ð.Ó/ŠCð	0ús   ‚9B ÂADÃ3DÄDc                ó8   € V ^8„  d   QhR\         P                  /# r	   r   )r   s   "r   r   r   /   s   € ÷ +ñ +œ6Ÿ;™;ñ +r   c                  ó„   € \         P                  R 8X  d   \        P                  ! R4      # \        P                  ! R4      # )r   z
nvcuda.dllzlibcuda.so.1)r   r   r   r   © r   r   Ú_get_cuda_libraryr1   /   s,   € Ü
‡|�|�wÔÜ�{Š{˜<Ó(Ð(ä�{Š{˜>Ó*Ð*r   c                ó8   € V ^8„  d   QhR\         P                  /# r	   r   )r   s   "r   r   r   7   s   € ÷ #ñ #¤&§+¡+ñ #r   c                  ój   € \         P                  P                  '       d   \        4       # \	        4       # ©N)r   r    r!   r-   r1   r0   r   r   Ú_get_gpu_runtime_libraryr5   7   s$   € Ü‡}�}××ÐÜ'Ó)Ð)ä Ó"Ð"r   c                ó(   € V ^8„  d   QhR\         RR/# ©r
   Úresultr   N©Úint)r   s   "r   r   r   ?   s   € ÷ 	7ñ 	7œð 	7 ñ 	7r   c                 ó  € V ^ 8X  d   R# \         P                  ! 4       p\        4       pVP                  V \         P                  ! V4      4       VP
                  e   VP
                  P                  4       MRp\        RV 24      h)r   NúUnknown CUDA errorúCUDA error: )r   Úc_char_pr5   r#   ÚbyrefÚvalueÚdecodeÚRuntimeError)r8   Úerr_strÚlibcudaÚerror_messages   &   r   Ú_check_cudarF   ?   sn   € Ø�„{ÙÜ�oŠoÓ€GÜ&Ó(€GØ×Ñ˜V¤V§\¢\°'Ó%:Ô;à")§-¡-Ò";ˆ�‰×ÑÔÐAUð ô ˜ m _Ð5Ó
6Ð6r   c                ó0   € V ^8„  d   QhR\         R\         /# ©r
   r8   r   r   )r   s   "r   r   r   K   s   € ÷ (ñ (¤ð (¬ñ (r   c                ó^  € \         '       g   \        R4      hV vrVP                  '       dÖ   \        V\        P
                  4      '       d>   \        P                  ! V4      w  r4\        P
                  P                  pW58X  d   TMRpM@\        V\        P                  4      '       d   \        P                  ! V4      ^,          pMRp\        V\        4      '       d   VP                  4       p\        RV RV R24      h\        V4      ^ 8X  d   R# \        V4      ^8X  d
   V^ ,          # V# )a  Check a cuda.bindings (cuda-python) call result for errors.

All cuda.bindings driver/runtime calls return ``(error, *outputs)``. This
helper unpacks the tuple, raises on non-success, and returns the
outputs (``None`` for zero outputs, scalar for one, tuple otherwise).
úcuda.bindings is not availablez	<unknown>zunknown error typer=   ú (Ú)N)Ú_HAS_CUDA_BINDINGSrB   r@   Ú
isinstanceÚ_cuda_bindings_driverÚCUresultr#   ÚCUDA_SUCCESSÚ_cuda_bindings_runtimeÚcudaError_tÚcudaGetErrorStringÚbytesrA   Úlen)r8   ÚerrÚoutÚerr2ÚnameÚsuccessrC   s   &      r   Ú_check_cuda_bindingsr\   K   sô   € ÷ ÓÜÐ;Ó<Ð<ð €I€CØ
‡y‡y€yä�cÔ0×9Ñ9×:Ò:ä.×?Ò?ÀÓD‰JˆDä+×4Ñ4×AÑAˆGð #œo‘d°;‰Gä˜Ô3×?Ñ?×@Ò@ä,×?Ò?ÀÓDÀQÕG‰Gà*ˆGÜ�gœu×%Ò%Ø—n‘nÓ&ˆGÜ˜\¨#¨¨b°°	¸Ð;Ó<Ð<ä
ˆ3ƒx�1„}ÙÜ
ˆ3ƒx�1„}Ø�1�vˆØ€Jr   c                ó0   € V ^8„  d   QhR\         R\         /# rH   r   )r   s   "r   r   r   v   s   € ÷ ñ ¬ð ´ñ r   c                ón  € \         '       g   \        R4      hV vrV\        P                  P                  8w  dQ   \        P
                  ! V4      w  r4\        V\        4      '       d   VP                  4       p\        RV RV R24      h\        V4      ^ 8X  d   R# \        V4      ^8X  d
   V^ ,          # V# )z×Check a cuda.bindings (cuda-python) driver call result for errors.

Like ``_check_cuda_bindings`` but for the CUDA driver API, whose calls
return ``(CUresult, *outputs)`` and report errors via ``cuGetErrorString``.
rJ   zCUDA driver error: rK   rL   N)
rM   rB   rO   rP   rQ   r#   rN   rU   rA   rV   )r8   rW   rX   Ú_rC   s   &    r   Ú_check_cuda_bindings_driverr`   v   s«   € ÷ ÓÜÐ;Ó<Ð<Ø€I€CàÜ ×)Ñ)×6Ñ6ô	7ô "×2Ò2Øóñ 	ˆô
 �gœu×%Ò%Ø—n‘nÓ&ˆGÜÐ0°°°R¸°yÀÐBÓCÐCÜ
ˆ3ƒx�1„}ÙÜ
ˆ3ƒx�1„}Ø�1�vˆØ€Jr   c                ó8   € V ^8„  d   QhR\         P                  /# r	   r   )r   s   "r   r   r   ’   s   € ÷ ñ œVŸ[™[ñ r   c                  ó4  €  ^ RI p \        P                  ! \        V P	                  R4      ^ ,          4      4      pVP                  Vn        VP                  Vn        VP"                  Vn        VP&                  Vn        VP*                  Vn        VP.                  Vn        VP2                  Vn        VP6                  Vn        VP:                  Vn        VP>                  Vn         V#   \
        \        3 d     \        P                  R8X  dq   RP                  R\        P                  P                  ^ ,          R\        P                  P                  ^,          .4      p\        P                  ! RT R24      p ELB\        P                  ! R4      p EL[i ; i)r   NÚhiprtcr   Ú Ú0r   zlibhiprtc.so)!r   r   r   r   r   r   r   r   r   Újoinr   r    r!   ÚhiprtcGetErrorStringÚnvrtcGetErrorStringÚhiprtcCreateProgramÚnvrtcCreateProgramÚhiprtcDestroyProgramÚnvrtcDestroyProgramÚhiprtcCompileProgramÚnvrtcCompileProgramÚhiprtcGetCodeSizeÚnvrtcGetCUBINSizeÚhiprtcGetCodeÚnvrtcGetCUBINÚhiprtcGetProgramLogSizeÚnvrtcGetProgramLogSizeÚhiprtcGetProgramLogÚnvrtcGetProgramLogÚhiprtcAddNameExpressionÚnvrtcAddNameExpressionÚhiprtcGetLoweredNameÚnvrtcGetLoweredName)r   r,   Úversion_strs      r   Ú_get_hiprtc_libraryr|   ’   sA  € ð.ãä�kŠkœ#˜h×5Ñ5°hÓ?ÀÕBÓCÓDˆð "×6Ñ6€CÔØ ×4Ñ4€CÔØ!×6Ñ6€CÔØ!×6Ñ6€CÔØ×1Ñ1€CÔØ×)Ñ)€CÔØ!$×!<Ñ!<€CÔØ ×4Ñ4€CÔØ!$×!<Ñ!<€CÔØ!×6Ñ6€CÔØ€Jøô) œÐ$ô .Ü�<‰<˜7Ô"ØŸ'™'Ø”e—m‘m×'Ñ'¨Õ*¨C´·±×1BÑ1BÀ1Õ1EÐFóˆKô —+’+  { m°4Ð8Ó9‹Cä—+’+˜nÓ-‹Cð.ús   ‚9C' Ã'BFÅ=FÆFc                ó8   € V ^8„  d   QhR\         P                  /# r	   r   )r   s   "r   r   r   ¯   s   € ÷ 6ñ 6œFŸK™Kñ 6r   c                  ó6  € \        \        P                  P                  P	                  R 4      ^ ,          4      p \
        P                  R8X  d	   RV  R2.pMRV  2R.pV F  p \        P                  ! V4      u # 	  \        R4      h  \         d     K7  i ; i)Ú.r   Únvrtc64_z0_0.dllzlibnvrtc.so.zlibnvrtc.soz Could not find any NVRTC library)
r:   r   r    ÚcudaÚsplitr   r   r   r   ÚOSError)Úmajor_versionÚ
nvrtc_libsÚlib_names      r   Ú_get_nvrtc_libraryr‡   ¯   s�   € ÜœŸ™×*Ñ*×0Ñ0°Ó5°aÕ8Ó9€MÜ
‡|�|�wÔà�}�o WÐ-ð
‰
ð
 ˜=˜/Ð*Øð
ˆ
ó ˆð	Ü—;’;˜xÓ(Ò(ñ ô
 Ð4Ó
5Ð5øô ô 	Úð	ús   Á$B	Â	BÂBc                ó8   € V ^8„  d   QhR\         P                  /# r	   r   )r   s   "r   r   r   Â   s   € ÷ $ñ $œfŸk™kñ $r   c                  ój   € \         P                  P                  '       d   \        4       # \	        4       # r4   )r   r    r!   r|   r‡   r0   r   r   Ú_get_gpu_rtc_libraryrŠ   Â   s&   € ô ‡}�}××ÐÜ"Ó$Ð$ä!Ó#Ð#r   c                ó:   € V ^8„  d   QhR\         \        ,          /# r	   )Úlistr   )r   s   "r   r   r   Ë   s   € ÷ ñ ¤t¬C¥yñ r   c                 óº   € ^ RI Hp Hp R0pV Uu. uF  q3V9  g   K  VNK  	  pp\        P                  P
                  '       d   VP                  V 4       V# u upi )z�
Get HIPCC/NVCC flags that are compatible with NVRTC compilation.

Returns:
    List of HIPCC/NVCC flags that can be safely used with NVRTC.
)ÚCOMMON_HIPCC_FLAGSÚCOMMON_NVCC_FLAGSz--expt-relaxed-constexpr)Útorch.utils.cpp_extensionrŽ   r�   r   r    r!   Úextend)rŽ   r�   Únvrtc_unsupported_flagsÚflagÚcompatible_flagss        r   Ú_get_gpu_rtc_compatible_flagsr•   Ë   sh   € ÷ Pð 	#ðÐñ +óÙ*�Ð:QÑ.Q�ˆÑ*ð ð ô ‡}�}××ÐØ×ÑÐ 2Ô3àÐùòs
   �A�Ac                ó¸   € V ^8„  d   QhR\         R\         R\         R,          R\        R,          R\        R,          R\        R\        \        \         3,          /# )	r
   Úkernel_sourceÚkernel_nameÚcompute_capabilityNÚcuda_include_dirsÚnvcc_optionsÚauto_pchr   )r   rŒ   ÚboolÚtuplerU   )r   s   "r   r   r   ã   sl   € ÷ O$ñ O$ÜðO$äðO$ô ˜d�
ðO$ô ˜d•{ð	O$ô
 ˜•+ðO$ô ðO$ô Œ5”#ˆ:ÕñO$r   c           
     óp	  aa€ ^ RI p\        4       o^ oR VV3R llpV P                  R4      pVfx   VP                  P	                  VP                  P                  4       4      p	VP                  P                  '       d   V	P                   pMV	P                   V	P                   2p. p
VP                  P                  '       d$   V
P                  RV 2P                  4       4       M"V
P                  RV 2P                  4       4       ^ RIHp V! R4      pV F%  pV
P                  R	V 2P                  4       4       K'  	  V'       d,   V F%  pV
P                  R	V 2P                  4       4       K'  	  V'       d^   \        VP                  P                  4      R
8  d#   \        RVP                  P                   24      hVf   . pVP                  R4       V'       d*   V F#  pV
P                  VP                  R4      4       K%  	  \!        4       pT
P#                  V Uu. uF  pVP                  R4      NK  	  up4       \%        V
4      p\&        P(                  V,          ! V
!  p\&        P*                  ! 4       pV! SP-                  \&        P.                  ! V4      VV R2P                  4       ^ RR4      4       VP                  R4      pV! SP1                  VV4      4       SP3                  VVV4      pVS8w  d”   \&        P4                  ! 4       pSP7                  V\&        P.                  ! V4      4       \&        P8                  ! VP:                  4      pSP=                  VV4       \?        RVP:                  PA                  4        24      h\&        P4                  ! 4       pV! SPC                  V\&        P.                  ! V4      4      4       \&        P8                  ! VP:                  4      pV! SPE                  VV4      4       \&        P(                  ! 4       pV! SPG                  VV\&        P.                  ! V4      4      4       VP:                  e   VP:                  PA                  4       pMRpSPI                  \&        P.                  ! V4      4       VPJ                  V3# u upi )a•  
Compiles a CUDA kernel using NVRTC and returns the PTX code.

Args:
    kernel_source (str): The CUDA kernel source code as a string
    kernel_name (str): The name of the kernel function to compile
    compute_capability (str, None): The compute capability to target (e.g., "86").
                                       If None, will detect from current device.
    cuda_include_dirs (list, None): List of directories containing CUDA headers
    nvcc_options (list, None): Additional options to pass to NVRTC
    auto_pch (bool): Enable automatic precompiled headers (CUDA 12.8+)

Returns:
    Tuple[bytes, str]: The compiled PTX code and mangled kernel name
Nc                ó(   € V ^8„  d   QhR\         RR/# r7   r9   )r   s   "r   r   Ú$_nvrtc_compile.<locals>.__annotate__  s   € ÷ 	?ñ 	?œCð 	? Dñ 	?r   c                 óü   <€ V S8w  dt   \         P                  ! 4       pSP                  V \         P                  ! V4      4       VP                  e   VP                  P                  4       MRp\        RV 24      hR # )Nr<   r=   )r   r>   rh   r?   r@   rA   rB   )r8   rC   rE   ÚNVRTC_SUCCESSÚlibnvrtcs   &  €€r   Úcheck_nvrtcÚ#_nvrtc_compile.<locals>.check_nvrtc  so   ø€ Ø�]Ô"Ü—o’oÓ'ˆGØ×(Ñ(¨´·²¸gÓ1FÔGð —=‘=Ò,ð —‘×$Ñ$Ô&à)ð ô
  ¨m¨_Ð=Ó>Ð>ñ #r   úutf-8z--offload-arch=z--gpu-architecture=sm_)Úinclude_pathsr�   z-Iz12.8zPCH requires CUDA 12.8+, got z--pchz.cuzKernel compilation failed:
rd   )&Ú
torch.cudarŠ   Úencoder�   Úget_device_propertiesÚcurrent_devicer    r!   ÚgcnArchNameÚmajorÚminorÚappendr�   r¨   r   ÚAssertionErrorr•   r‘   rV   r   r>   Úc_void_prj   r?   rx   rn   Úc_size_trt   Úcreate_string_bufferr@   rv   rB   rA   rp   rr   rz   rl   Úraw)r—   r˜   r™   rš   r›   rœ   r   r¥   Úsource_bytesÚpropsÚoptionsr¨   Úcuda_include_pathsÚ	cuda_pathÚ	directoryÚoptionÚnvrtc_compatible_flagsr“   Únum_optionsÚoptions_arrayÚprogÚc_kernel_nameÚresÚlog_sizeÚlogÚbinary_sizeÚbinaryÚc_mangled_nameÚmangled_namer£   r¤   s   &&&&&&                       @@r   Ú_nvrtc_compilerÉ   ã   sî  ù€ ó0 ô $Ó%€Hð €M÷	?ñ 	?ð !×'Ñ'¨Ó0€Lð Ò!Ø—
‘
×0Ñ0°·±×1JÑ1JÓ1LÓMˆØ�=‰=××ÐØ$)×$5Ñ$5Ð#6Ñà$)§K¡K =°·±°Ð!>Ðð €GØ‡}�}××ÐØ�‰˜Ð);Ð(<Ð=×DÑDÓFÕGà�‰Ð/Ð0BÐ/CÐD×KÑKÓMÔNõ 8á& vÓ.ÐÛ'ˆ	Ø�‰˜˜I˜;Ð'×.Ñ.Ó0Ö1ñ (÷ Û*ˆIØ�N‰N˜R 	˜{Ð+×2Ñ2Ó4Ö5ñ +÷ Üˆu�}‰}×!Ñ!Ó" VÔ+Ü Ð#@ÀÇÁ×ASÑASÐ@TÐ!UÓVÐVØÒØˆLØ×Ñ˜GÔ$÷ Û"ˆFØ�N‰N˜6Ÿ=™=¨Ó1Ö2ñ #ô ;Ó<ÐØ‡N�NÑ5KÓLÑ5K¨T�D—K‘K Ö(Ñ5KÑLÔMô �g“,€KÜ—_‘_ {Ö2°WÑ=€Mô �?Š?Ó€DÙØ×#Ñ#Ü�LŠL˜ÓØØˆm˜3Ð×&Ñ&Ó(ØØØó	
ô	ð  ×&Ñ& wÓ/€MÙ�×/Ñ/°°mÓDÔEð ×
&Ñ
& t¨[¸-Ó
H€Cð ˆmÔä—?’?Ó$ˆØ×'Ñ'¨¬f¯lªl¸8Ó.DÔEÜ×)Ò)¨(¯.©.Ó9ˆØ×#Ñ# D¨#Ô.ÜÐ9¸#¿)¹)×:JÑ:JÓ:LÐ9MÐNÓOÐOô —/’/Ó#€KÙ�×*Ñ*¨4´·²¸kÓ1JÓKÔLÜ×(Ò(¨×):Ñ):Ó;€FÙ�×&Ñ& t¨VÓ4Ô5ô —_’_Ó&€NÙØ×$Ñ$ T¨=¼&¿,º,À~Ó:VÓWôð ×ÑÒ'Ø%×+Ñ+×2Ñ2Ó4‰àˆà× Ñ ¤§¢¨dÓ!3Ô4ð �:‰:�|Ð#Ð#ùòo Ms   È'R3c                   óD   a € ] tR tRt o V 3R lR ltV 3R lR ltRtV tR# )Ú_CudaModuleiu  c                ó8   <€ V ^8„  d   QhRS[ P                  RR/# )r
   Úmoduler   N©r   r²   )r   Ú__classdict__s   "€r   r   Ú_CudaModule.__annotate__v  s   ø€ ÷ 3ñ 3™vŸ™ð 3°4ñ 3r   c                ó    € Wn         / V n        R # r4   )Ú_moduleÚ_kernels)ÚselfrÍ   s   &&r   Ú__init__Ú_CudaModule.__init__v  s   € ØŒØ02ˆŽr   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r
   rZ   r   Ú_CudaKernel)r   )r   rÏ   s   "€r   r   rÐ   z  s   ø€ ÷ Vñ V¡ð V¨ñ Vr   c           	     ó°  € WP                   9   d   V P                   V,          # ^ RIHp V! 4       p\        P                  ! 4       p \        VP                  \        P                  ! V4      V P                  VP                  R4      4      4       \        W@P                  4      pWPP                   V&   V#   \         d   p\        RT R24      ThRp?ii ; i)r   )r5   r§   zNo kernel named 'z' in this moduleN)rÓ   Útorch.cuda._utilsr5   r   r²   rF   r'   r?   rÒ   rª   rØ   rB   ÚAttributeError)rÔ   rZ   r5   rD   ÚfuncÚkernelrW   s   &&     r   Ú__getattr__Ú_CudaModule.__getattr__z  s¹   € Ø—=‘=Ô Ø—=‘= Õ&Ð&õ 	?á*Ó,ˆä�ŠÓ ˆð	VÜØ×+Ñ+Ü—L’L Ó&¨¯©°d·k±kÀ'Ó6Jóôô
 ! §|¡|Ó4ˆFØ"(�M‰M˜$ÑØˆMøäô 	VÜ Ð#4°T°FÐ:JÐ!KÓLÐRUÐUûð	Vús   ÁA-B5 Â5CÃ CÃC)rÓ   rÒ   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rÕ   rÞ   Ú__static_attributes__Ú__classdictcell__©rÏ   s   @r   rË   rË   u  s   ø‡ € ÷3ð 3÷Vö Vr   rË   c                   ó^   a € ] tR tRt o RtV 3R lR ltRV 3R lR lltV 3R lR	 ltR
tV t	R# )rØ   i“  zL
Represents a compiled CUDA kernel that can be called with PyTorch tensors.
c                óR   <€ V ^8„  d   QhRS[ P                  RS[ P                  RR/# )r
   rÜ   rÍ   r   NrÎ   )r   rÏ   s   "€r   r   Ú_CudaKernel.__annotate__˜  s*   ø€ ÷ 'ñ '™VŸ_™_ð '±f·o±oð 'È$ñ 'r   c                ó,   € Wn         W n        ^ V n        R# )r   N)rÜ   rÍ   Ú_max_shared_mem_bytes)rÔ   rÜ   rÍ   s   &&&r   rÕ   Ú_CudaKernel.__init__˜  s   € ØŒ	ØŒØ%&ˆÖ"r   Nc                óŒ   <€ V ^8„  d   QhRS[ S[S[S[3,          RS[ S[S[S[3,          RS[R,          RS[RS[R,          RR/# )r
   ÚgridÚblockÚargsNÚ
shared_memÚstreamr   )rž   r:   rŒ   r   )r   rÏ   s   "€r   r   ré   �  sm   ø€ ÷ _
ñ _
á‘C™™c�MÕ"ð_
ñ ‘S™#™s�]Õ#ð_
ñ �T�kð	_
ñ
 ð_
ñ �d•
ð_
ð 
ñ_
r   c                óú  € ^ RI pVP                  P                  P                  4       pV'       g   . p. p. p	V EF|  p
\	        W¦P
                  4      '       d¢   V
P                  '       g4   V
P                  '       d   V
P                  4       '       g   \        R4      h\        P                  ! V
P                  4       4      pVP                  V4       V	P                  \        P                  ! V4      4       KÀ  \	        V
\        4      '       d?   \        P                   ! V
4      pV	P                  \        P                  ! V4      4       EK  \	        V
\"        4      '       d?   \        P$                  ! V
4      pV	P                  \        P                  ! V4      4       EKh  \'        R\)        V
4       24      h	  \        P                  \+        V	4      ,          ! 4       p\-        V	4       F,  w  rú\        P.                  ! V
\        P                  4      Wï&   K.  	  Vf   ^ RIpVP                  P3                  4       pVR
8¼  dW   V P4                  ^ 8X  g   W@P4                  8”  d6   V P4                  ^ 8X  d   RMRV P4                   R2p\7        RV RV R	24      h\9        VP;                  V P<                  V^ ,          V^,          V^,          V^ ,          V^,          V^,          VVP>                  VR4      4       R# )a¶  
Call the compiled CUDA kernel

Args:
    grid (tuple): Grid dimensions (grid_x, grid_y, grid_z)
    block (tuple): Block dimensions (block_x, block_y, block_z)
    args (list): List of arguments to pass to the kernel.
                 PyTorch tensor arguments will be automatically converted to pointers.
    shared_mem (int): Shared memory size in bytes
    stream (torch.cuda.Stream): CUDA stream to use. If None, uses current stream.
Nz?All tensor arguments must be CUDA tensors or pinned CPU tensorszUnsupported argument type: znot configuredzonly z bytes configuredzKernel requires z' bytes of shared memory (>= 48KB), but ze. Call kernel.set_shared_memory_config(shared_mem) after compilation and before launching the kernel.é À  ) r   r�   Ú_utilsr5   rN   ÚTensorÚis_cudaÚis_cpuÚ	is_pinnedÚ
ValueErrorr   r²   Údata_ptrr°   r?   r:   Úc_intÚfloatÚc_doubleÚ	TypeErrorÚtyperV   Ú	enumerateÚcastr©   Úcurrent_streamrë   rB   rF   r)   rÜ   Ú_as_parameter_)rÔ   rî   rï   rð   rñ   rò   r   rD   Úprocessed_argsÚc_argsÚargÚptrrü   rþ   Úc_args_arrayÚiÚconfigured_msgs   &&&&&&           r   Ú__call__Ú_CudaKernel.__call__�  sX  € ó& 	à—*‘*×#Ñ#×<Ñ<Ó>ˆçØˆDð 13ˆØˆäˆCÜ˜#Ÿ|™|×,Ò,Ø—{—{�{¨C¯J¯J¨J¸3¿=¹=¿?º?Ü$ØYóð ô —o’o c§l¡l£nÓ5�Ø×%Ñ% cÔ*Ø—‘œfŸlšl¨3Ó/Ö0Ü˜C¤×%Ò%äŸš SÓ)�à—‘œfŸlšl¨5Ó1×2Ü˜C¤×'Ò'ä!Ÿ?š?¨3Ó/�à—‘œfŸlšl¨8Ó4×5äÐ"=¼dÀ3»i¸[Ð IÓJÐJñ+ ô0 Ÿ™¬#¨f«+Ö5Ó8ˆÜ Ö'‰FˆAÜ$Ÿkšk¨#¬v¯©Ó?ˆL‹Oñ (ð Š>ãà—Z‘Z×.Ñ.Ó0ˆFð ˜Ô"Ø×&Ñ&¨!Ô+¨z×<VÑ<VÔ/Vð ×-Ñ-°Ô2ñ !à˜T×7Ñ7Ð8Ð8IÐJð ô
 Ø" : ,ð /Ø%Ð&ð '3ð3óð ô 	Ø×"Ñ"Ø—	‘	Ø�Q•Ø�Q•Ø�Q•Ø�a•Ø�a•Ø�a•ØØ×%Ñ%ØØóö	
r   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r
   Úshared_mem_bytesr   Nr9   )r   rÏ   s   "€r   r   ré   þ  s   ø€ ÷ ,6ñ ,6¹ð ,6Àñ ,6r   c                óÎ  € VR8  d	   Wn         R# \        4       p\        P                  P	                  4       p\        P
                  P                  '       d;   VP                  P                  R^4      ^ ,          pVR8X  d   RpMVR8X  d   RpMRpM\        VRR4      pW8”  d   \        RV R	V R
24      h^p\        VP                  V P                  VV4      4       Wn         R# )é0   NÚ:Úgfx950Úgfx1250i   Úshared_memory_per_block_optinrô   zRequested shared memory (z bytes) exceeds device limit (z= bytes). Consider reducing block size or shared memory usage.i € i   )rë   r5   r   r�   r«   r    r!   r­   r‚   ÚgetattrrB   rF   r+   rÜ   )rÔ   r  rD   Údevice_propsÚgcn_archÚmax_shared_memÚ+cudaFuncAttributeMaxDynamicSharedMemorySizes   &&     r   Úset_shared_memory_configÚ$_CudaKernel.set_shared_memory_configþ  s÷   € Ø˜iÔ'à)9Ô&Ùä*Ó,ˆô —z‘z×7Ñ7Ó9ˆä�=‰=××Ðð $×/Ñ/×5Ñ5°c¸1Ó=¸aÕ@ˆHØ˜8Ô#Ø!+‘Ø˜YÔ&Ø!+‘à!&‘ä$ØÐ=¸uóˆNð Ô,ÜØ+Ð,<Ð+=ð >!Ø!/Ð 0ð 1GðGóð ð 78Ð3ÜØ×&Ñ&Ø—	‘	Ø;Ø óô	
ð &6Ö"r   )rë   rÜ   rÍ   )©é   r  r  r  Nr   N)
rà   rá   râ   rã   Ú__doc__rÕ   r  r  rä   rå   ræ   s   @r   rØ   rØ   “  s+   ø‡ € ñ÷'ð '÷
_
ò _
÷B,6ö ,6r   rØ   c          	      ó¦   € V ^8„  d   QhR\         \        ,          R\        \         ,          R,          R\        \        \         R3,          ,          /# )r
   ÚptxÚkernel_namesNr   rØ   )r   rU   rŒ   rË   Údict)r   s   "r   r   r   -  s@   € ÷ -ñ -Ü	Œu�ð-Ü$(¬¥I°Õ$4ð-ä”4œ˜]Ð*Õ+Õ+ñ-r   c           
     ót  € ^ RI p\        4       p\        V \        4      '       d   V P	                  R4      p \
        P                  ! 4       pVP                  P                  4       pV;_uu_ 4        \        VP                  \
        P                  ! V4      V 4      4       RRR4       V'       g   \        V4      # / pV Fc  p\
        P                  ! 4       p\        VP                  \
        P                  ! V4      WGP	                  R4      4      4       \        W„4      Wg&   Ke  	  V#   + '       g   i     L�; i)a  
Loads a CUDA module from PTX code and returns a module object that can access kernels.

Args:
    ptx (bytes or str): The PTX code to load
    kernel_names (list, optional): List of kernel names to extract from the module.
                                  If None, will return a module object with __getattr__.

Returns:
    object: If kernel_names is None, returns a module object with __getattr__ to access kernels.
           If kernel_names is provided, returns a dict mapping kernel names to _CudaKernel objects.
Nr§   )r©   r5   rN   r   rª   r   r²   r�   r  rF   r%   r?   rË   r'   rØ   )	r!  r"  r   rD   rÍ   rò   ÚkernelsrZ   rÜ   s	   &&       r   Ú_cuda_load_moduler&  -  sí   € ó  ô 'Ó(€Gô �#”s×ÒØ�j‰j˜Ó!ˆô �_Š_Ó€Fà�Z‰Z×&Ñ&Ó(€Fß	ŠÜ�G×,Ñ,¬V¯\ª\¸&Ó-AÀ3ÓGÔH÷ 
÷ Ü˜6Ó"Ð"ð €GÛˆÜ�ŠÓ ˆÜØ×'Ñ'Ü—’˜TÓ" F¯K©K¸Ó,@óô	
ô
 $ DÓ1ˆ‹ñ ð €N÷! 
�ús   Á/0D'Ä'D7	c                óH   € V ^8„  d   QhR\         R\        R\        R\        /# )r
   ÚdeviceÚoptionalÚ	allow_cpur   )r   r�   r:   )r   s   "r   r   r   ]  s2   € ÷ @ñ @Üð@Üð@Ü48ð@äñ@r   c                ó$  € \        V \        4      '       d   V # \        V \        4      '       d   \        P                  ! V 4      p \        V \        P                  4      '       dH   V'       d!   V P
                  R9  d   \        RV  24      hMV P
                  R8w  d   \        RV  24      h\        P                  P                  4       '       g7   \        V \        P                  P                  4      '       d   V P                  # \        WV4      # )a�  Get the device index from :attr:`device`, which can be a torch.device object, a Python integer, or ``None``.

If :attr:`device` is a torch.device object, returns the device index if it
is a CUDA device. Note that for a CUDA device without a specified index,
i.e., ``torch.device('cuda')``, this will return the current default CUDA
device if :attr:`optional` is ``True``. If :attr:`allow_cpu` is ``True``,
CPU devices will be accepted and ``-1`` will be returned in this case.

If :attr:`device` is a Python integer, it is returned as is.

If :attr:`device` is ``None``, this will return the current default CUDA
device if :attr:`optional` is ``True``.
r�   z(Expected a cuda or cpu device, but got: z!Expected a cuda device, but got: )r�   Úcpu)rN   r:   r   r   r(  r   rú   ÚjitÚis_scriptingr�   ÚidxÚ_torch_get_device_index)r(  r)  r*  s   &&&r   r   r   ]  sÉ   € ô  �&œ#×ÒØˆÜ�&œ#×ÒÜ—’˜fÓ%ˆÜ�&œ%Ÿ,™,×'Ò'ßØ�{‰{ /Ô1Ü Ð#KÈFÈ8Ð!TÓUÐUð 2à�[‰[˜FÔ"ÜÐ@ÀÀÐIÓJÐJÜ�9‰9×!Ñ!×#Ò#Ü�fœeŸj™j×/Ñ/×0Ò0Ø—:‘:ÐÜ" 6°YÓ?Ð?r   )NNNFr4   )FF)r   r   Útypingr   r   Úcuda.bindingsr   rO   r   rR   rM   r   Útorch._utilsr   r0  r-   r1   r5   rF   r\   r`   r|   r‡   rŠ   r•   rÉ   rË   rØ   r&  r0   r   r   Ú<module>r4     s²   ðÛ Û 
Ý ã ð
÷ð
 Ðõ Fõõ.+õ#õ	7õ(õVõ8õ:6õ&$õ÷0O$÷dVñ V÷<W6ñ W6÷t-÷`@ñ @øð] ô Ø ÐØ!ÐØÒðús   ”
B ÂBÂB