
    ^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    	'

#zz~~:C@H88C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K7J6NNiQhPl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FG#&OPWyXh$ij(		) !!9!9#**T:JL\^_aegk!lm 	&//!,-!))&*?*?*a*acij
 "))&*?*?*a*acij
 +5+=+=+?@;1$	"	.vhawugFP 	
 $ 	>GKK/'3::<=	>
	e77c$iNO )%*A*A$*GHI)#De11$=>)%*?*?*EFI)#De//d;<'(=(=bggmmD>Q(RS'  	()E)Ed)KLH/Ce66tSAB#**,SZZ0#CJJ'CHHQKK	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   