Ë
    »Ó^jý  ã                   óx   — d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dlm	Z
 ddlmZ d„ Zd	„ Z G d
„ d«      Zy)é    N)Ú
pathfinder)Údriver)Únvrtc)Úruntimeé   )Úcheck_cuda_errorsc                 ó´   — t        | t        j                  ¬«       t        j                  j                  dd«      }t        j                  t        |«      «      S )N©ÚfileÚCUDA_BINDINGS_SKIP_EXAMPLEÚ1)ÚprintÚsysÚstderrÚosÚenvironÚgetÚexitÚint)ÚmessageÚexitcodes     úp/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/cuda/bindings/_example_helpers/common.pyÚrequirement_not_metr      s8   € Ü	ˆ'œŸ
™
Õ#Ü�z‰z�~‰~Ð:¸CÓ@€HÜ�8‰8”C˜“MÓ"Ð"ó    c                 ó  — t        t        j                  t        j                  j                  | «      «      }t        t        j                  t        j                  j
                  | «      «      }||f}||k  rt        d|›d|›�«       y y )Nz<CUDA device compute capability too low: have_cc_major_minor=z, required_cc_major_minor=)r   ÚcudartÚcudaDeviceGetAttributeÚcudaDeviceAttrÚ!cudaDevAttrComputeCapabilityMajorÚ!cudaDevAttrComputeCapabilityMinorr   )Údev_idÚrequired_cc_major_minorÚcc_majorÚcc_minorÚhave_cc_major_minors        r   Ú check_compute_capability_too_lowr&      sŠ   € Ü Ü×%Ñ%¤f×&;Ñ&;×&]Ñ&]Ð_eÓfó€Hô !Ü×%Ñ%¤f×&;Ñ&;×&]Ñ&]Ð_eÓfó€Hð $ XÐ.ÐØÐ4Ò4ÜØKÐ7JÐ6NÐNiÐQhÐPlÐmõ	
ð 5r   c                   ó   — e Zd Zd„ Zd„ Zy)ÚKernelHelperc           	      ó  — g }dD ]9  }t        j                  |«      }|€t        d|› d�«       |j                  |«       Œ; t	        t        j                  t        j                  |«      ddd d «      «      }t	        t        j                  d«      «       t	        t        j                  t        j                  j                  |«      «      }t	        t        j                  t        j                  j                  |«      «      }t	        t        j                  «       «      \  }	}
|
dk\  }|rdnd}t!        d	|› d
|› |› �d«      }d|ddg}|D ]$  }|j                  d|› �j                  «       «       Œ& 	 t	        t        j"                  |t%        |«      |«      «       |rCt	        t        j6                  |«      «      }d|z  }t	        t        j8                  ||«      «       nBt	        t        j:                  |«      «      }d|z  }t	        t        j<                  ||«      «       t	        t?        j@                  tB        jD                  jG                  |«      «      «      | _$        y # t&        $ rŸ}t	        t        j(                  |«      «      }d|z  }t	        t        j*                  ||«      «       dd l}t/        |j1                  «       |j2                  ¬«       t/        ||j2                  ¬«        |j4                  d«       Y d }~�Œkd }~ww xY w)N)r   Úccclz)pathfinder.find_nvidia_header_directory("z") returned Nones   sourceCode.cur   r   ÚsmÚcomputez--gpu-architecture=Ú_Úasciis   --fmad=trues   --std=c++17s   -default-devicez--include-path=ó    r
   )%r   Úfind_nvidia_header_directoryr   Úappendr   r   ÚnvrtcCreateProgramÚstrÚencoder   ÚcudaFreer   r   r   r    ÚnvrtcVersionÚbytesÚnvrtcCompileProgramÚlenÚRuntimeErrorÚnvrtcGetProgramLogSizeÚnvrtcGetProgramLogr   r   Údecoder   r   ÚnvrtcGetCUBINSizeÚnvrtcGetCUBINÚnvrtcGetPTXSizeÚnvrtcGetPTXÚcudaÚcuModuleLoadDataÚnpÚcharÚarrayÚmodule)ÚselfÚcoder!   Úinclude_dirsÚlibnameÚhdr_dirÚprogÚmajorÚminorr-   Únvrtc_minorÚ	use_cubinÚprefixÚarch_argÚoptsÚinc_dirÚerrÚlog_sizeÚlogr   Ú	data_sizeÚdatas                         r   Ú__init__zKernelHelper.__init__'   s’  € ØˆØ)ò 	)ˆGÜ ×=Ñ=¸gÓFˆGØˆÜ#Ð&OÐPWÈyÐXhÐ$iÔjØ×Ñ Õ(ð		)ô !¤×!9Ñ!9¼#¿*¹*ÀTÓ:JÐL\Ð^_ÐaeÐgkÓ!lÓmˆô 	œ&Ÿ/™/¨!Ó,Ô-ä!Ü×)Ñ)¬&×*?Ñ*?×*aÑ*aÐciÓjó
ˆô "Ü×)Ñ)¬&×*?Ñ*?×*aÑ*aÐciÓjó
ˆô +¬5×+=Ñ+=Ó+?Ó@‰ˆˆ;Ø 1Ñ$ˆ	Ù"‘¨	ˆÜÐ.¨v¨h°a¸°w¸u¸gÐFÈÓPˆð ØØØð	
ˆð $ò 	>ˆGØ�K‰K˜/¨'¨Ð3×:Ñ:Ó<Õ=ð	>ð
	Üœe×7Ñ7¸¼cÀ$»iÈÓNÔOñ Ü)¬%×*AÑ*AÀ$Ó*GÓHˆIØ˜)Ñ#ˆDÜœe×1Ñ1°$¸Ó=Õ>ä)¬%×*?Ñ*?ÀÓ*EÓFˆIØ˜)Ñ#ˆDÜœe×/Ñ/°°dÓ;Ô<ä'¬×(=Ñ(=¼b¿g¹g¿m¹mÈDÓ>QÓ(RÓSˆ�øô' ò 	Ü(¬×)EÑ)EÀdÓ)KÓLˆHØ˜‘/ˆCÜœe×6Ñ6°t¸SÓAÔBÛä�#—*‘*“, S§Z¡ZÕ0Ü�#˜CŸJ™JÕ'ØˆC�H‰H�Q�KŠKûð	ús   Å1)I" É"	L
É+BLÌL
c                 óT   — t        t        j                  | j                  |«      «      S )N)r   rB   ÚcuModuleGetFunctionrG   )rH   Únames     r   Úget_functionzKernelHelper.get_function_   s   € Ü ¤×!9Ñ!9¸$¿+¹+ÀtÓ!LÓMÐMr   N)Ú__name__Ú
__module__Ú__qualname__r[   r_   © r   r   r(   r(   &   s   „ ò6TópNr   r(   )r   r   ÚnumpyrD   rB   r   Úcuda.bindingsr   r   r   r   Úhelper_cudar   r   r&   r(   rc   r   r   ú<module>rg      s5   ðó
 
Û 
ã å Ý (Ý Ý +å *ò#ò
÷:Nò :Nr   