o
    e                     @   sL   d dl Z d dlmZmZmZ d dlZdd Ze jdd Ze jdd Z	dS )	    N)cudacudartnvrtcc                 C   s   t | tjr| tjjkrtd| d S t | tjr*| tjjkr(td| d S t | t	j
r?| t	j
jkr=td| d S td| )NzCuda Error: {}zCudart Error: {}zNvrtc Error: {}zUnknown error type: {})
isinstancer   ZCUresultZCUDA_SUCCESSRuntimeErrorformatr   ZcudaError_tZcudaSuccessr   ZnvrtcResultZNVRTC_SUCCESS)err r	   OD:\Projects\ConvertPro\env\Lib\site-packages\cuda/benchmarks/perf_test_utils.py
ASSERT_DRV   s   r   c                  c   s    t d\} t|  t d\} }t|  t d|\} }t|  t t jjj\} }t|  |||fV  t 	|\} t|  t 
|\} t|  d S )Nr   )r   ZcuInitr   ZcuDeviceGetZcuCtxCreateZcuStreamCreateZCUstream_flagsZCU_STREAM_NON_BLOCKINGvalueZcuStreamDestroyZcuCtxDestroy)r   devicectxstreamr	   r	   r
   	init_cuda   s   r   c                  #   s0    d   fdd} | V  t  \}t| d S )Nc                    s<  t t jj|\}}t| t t jj|\}}t| tt	| ddg g \}}t| dt
dt| t| dg}t|d|\}t|\}}t| d| }	t||	\}t| |	 }
t|
dkrmt|
 t| t|\}}t| d| }t||\}t| tj|}t |\} t|  S )	Ns   kernelString.cur   s   --fmad=falsez--gpu-architecture=sm_ascii          )r   ZcuDeviceGetAttributeZCUdevice_attributeZ,CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJORr   Z,CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINORr   ZnvrtcCreateProgramstrencodebytesZnvrtcCompileProgramZnvrtcGetProgramLogSizeZnvrtcGetProgramLogdecodelenprintZnvrtcGetCUBINSizeZnvrtcGetCUBINnpchararrayZcuModuleLoadData)Zkernel_stringr   r   majorminorprogoptsZerr_logZlogSizelogresultZ	cubinSizeZcubinmoduler	   r
   _load_module1   s4   z!load_module.<locals>._load_module)r   ZcuModuleUnloadr   )r&   r   r	   r$   r
   load_module.   s   "r'   )
Zpytestr   r   r   numpyr   r   Zfixturer   r'   r	   r	   r	   r
   <module>   s   
