o
    ùe?…  ã                   @   s2  d dl Z d dlZd dlmZ d dlmZ d dlZd dlZd dl	Z	d dl
mZ dd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zejjedƒpheƒ  d d!d"d#„ ƒZejjedƒpzeƒ  d d!d$d%„ ƒZejjeƒ  d d!d&d'„ ƒZejjed(ƒpšeƒ  d)d!d*d+„ ƒZejjed,ƒp²ed-ƒ p²ed.ƒ d/d!d0d1„ ƒZ d2d3„ Z!ejjed4ƒ d5d!d6d7„ ƒZ"ejjedƒd8d!d9d:„ ƒZ#d;d<„ Z$d=d>„ Z%d?d@„ Z&dAdB„ Z'dCdD„ Z(dEdF„ Z)dGdH„ Z*ejjedIƒpedJƒ pedKƒ pedLƒ dMd!dNdO„ ƒZ+dS )Pé    N)Ú	get_pathsc                 C   s@   t  d¡\}|t jjksJ ‚t  ¡ \}}|t jjksJ ‚|| k S ©Nr   )ÚcudaÚcuInitÚCUresultÚCUDA_SUCCESSZcuDriverGetVersion)ÚtargetÚerrÚversion© r   úDD:\Projects\ConvertPro\env\Lib\site-packages\cuda/tests/test_cuda.pyÚdriverVersionLessThan   s
   r   c                  C   ó$   t  t jjd¡\} }| t jjko|S r   )ÚcudartÚcudaDeviceGetAttributeÚcudaDeviceAttrZcudaDevAttrMemoryPoolsSupportedÚcudaError_tÚcudaSuccess©r	   ZisSupportedr   r   r   ÚsupportsMemoryPool   ó   r   c                  C   r   r   )r   r   r   ZcudaDevAttrManagedMemoryr   r   r   r   r   r   ÚsupportsManagedMemory   r   r   c                 C   s   | t tƒv S ©N)Údirr   ©Únamer   r   r   ÚsupportsCudaAPI    s   r   c                 C   s   t  | ¡d kS r   )ÚshutilÚwhichr   r   r   r   ÚcallableBinary#   s   r   c                  C   sR  t  d¡\} | t jjksJ ‚t  d¡\} }| t jjksJ ‚t  d|¡\} }| t jjks-J ‚tdt ¡ j	 ƒ}t  
|¡\} }| t jjksEJ ‚t |d¡ tj¡}t |d¡ tj¡}t ||¡du scJ ‚t  |||¡\} | t jjkssJ ‚t  |||¡\} | t jjksƒJ ‚t ||¡s‹J ‚t  |¡\} | t jjks™J ‚t  |¡\} | t jjks§J ‚d S )Nr   é   é   é   F)r   r   r   r   ÚcuDeviceGetÚcuCtxCreateÚintÚnpÚuint8ÚitemsizeÚ
cuMemAllocÚfullÚastypeÚarray_equalÚcuMemcpyHtoDÚcuMemcpyDtoHÚ	cuMemFreeÚcuCtxDestroy)r	   ÚdeviceÚctxÚsizeÚdptrÚh1Úh2r   r   r   Útest_cuda_memcpy&   s*   r7   c                  C   s  t  d¡\} | t jjksJ ‚t  d¡\} }| t jjksJ ‚t  ¡ }t  |¡\} }| t jjks6| t jjks6J ‚t  	d|¡\} }| t jjksFJ ‚t  |¡\} }| t jjksUJ ‚t j
j|_d|_d|_t  |¡\} }| t jjksoJ ‚t  |¡\} | t jjks}J ‚t  |¡\} | t jjks‹J ‚d S ©Nr   r!   )r   r   r   r   r#   ZCUDA_ARRAY_DESCRIPTORZcuArrayCreateZCUDA_ERROR_INVALID_CONTEXTZCUDA_ERROR_INVALID_VALUEr$   ZCUarray_formatZCU_AD_FORMAT_SIGNED_INT8ZFormatZNumChannelsZWidthZcuArrayDestroyr0   )r	   r1   ÚdescZarrr2   r   r   r   Útest_cuda_arrayN   s(   
r:   c               
   C   s  t  d¡\} | t jjksJ ‚t  d¡\} }| t jjksJ ‚t|ƒdks%J ‚t|ƒdks-J ‚t  d|¡\} }| t jjks=J ‚t|ƒ d¡sFJ ‚t|ƒdksNJ ‚t	|ƒt	t|ƒƒksZJ ‚t  
dt ¡ j ¡\} }| t jjksnJ ‚t|ƒ d¡swJ ‚t|ƒdksJ ‚t  |¡\} d}t  |¡}t|ƒd |¡ks—J ‚t|ƒ|ksŸJ ‚d}t  |¡}t|ƒd |¡ks±J ‚t|ƒ|ks¹J ‚d	}t  |¡}t|ƒd |¡ksËJ ‚t|ƒ|ksÓJ ‚d}t  |¡}t|ƒd
 |¡ksåJ ‚t|ƒ|ksíJ ‚d}t  |¡}t|ƒd
 |¡ksÿJ ‚t|ƒ|ksJ ‚d	}z	t  |¡}tdƒ‚ ty& }  zW Y d } ~ nd } ~ ww d}t  |¡}t|ƒd |¡ks:J ‚t|ƒ|ksCJ ‚d}t  |¡}t|ƒd |¡ksVJ ‚t|ƒ|ks_J ‚d	}t  |¡}t|ƒd |¡ksrJ ‚t|ƒ|ks{J ‚t  |¡\} | t jjksŠJ ‚d S )Nr   z<CUdevice 0>ú<CUcontext 0xr    z<CUdeviceptr é   z<CUdeviceptr {}>l   ÿÿ l   ÿÿÿÿ z<cuuint32_t {}>z:int32 = cuda.cuuint32_t(18446744073709551615) did not failz<cuuint64_t {}>)r   r   r   r   r#   Ústrr%   r$   Ú
startswithÚhexr)   r&   r'   r(   r/   ZCUdeviceptrÚformatZ
cuuint32_tÚRuntimeErrorÚOverflowErrorÚ
cuuint64_tr0   )r	   r1   r2   r4   r3   Zint32Zint64r   r   r   Útest_cuda_repr_primitivel   st   





€ÿ


rD   c                  C   sL  t  d¡\} | t jjksJ ‚t  d¡\} }| t jjksJ ‚t  d|¡\} }| t jjks-J ‚t|ƒ d¡s6J ‚t|ƒdks>J ‚t	|ƒt	t|ƒƒksJJ ‚d}t  
|¡}t|ƒd t	|ƒ¡ks^J ‚t|ƒ|ksfJ ‚t	|ƒt	|ƒkspJ ‚d}t  |¡}t|ƒd t	|ƒ¡ks„J ‚t|ƒ|ksŒJ ‚t	|ƒt	|ƒks–J ‚t  |¡\} | t jjks¤J ‚d S )Nr   r;   i90  z<CUcontext {}>z<CUoccupancyB2DSize {}>)r   r   r   r   r#   r$   r=   r>   r%   r?   Z	CUcontextr@   ZCUoccupancyB2DSizer0   )r	   r1   r2   ZrandomCtxPointerZ	randomCtxÚfuncZb2d_cbr   r   r   Útest_cuda_repr_pointer¯   s*   

rF   c               
   C   sÒ   t  d¡\} | t jjksJ ‚t  d¡\} }| t jjksJ ‚t  d|¡\} }| t jjks-J ‚t  |¡\} }| t jjks<J ‚t|jƒdksEJ ‚t j	}|j
d|jd|jd|jd|jdi}t  |¡\} | t jjksgJ ‚d S )Nr   é   r!   r"   é   é   é   )r   r   r   r   r#   r$   ZcuDeviceGetUuidÚlenÚbytesÚCUjit_optionÚCU_JIT_INFO_LOG_BUFFERÚ!CU_JIT_INFO_LOG_BUFFER_SIZE_BYTESÚCU_JIT_ERROR_LOG_BUFFERÚ"CU_JIT_ERROR_LOG_BUFFER_SIZE_BYTESÚCU_JIT_LOG_VERBOSEr0   )r	   r1   r2   ÚuuidZ
jit_optionÚoptionsr   r   r   Útest_cuda_uuid_list_accessË   s$   ûrU   c                  C   s°   t  d¡\} | t jjksJ ‚t  d¡\} }| t jjksJ ‚t  d|¡\} }| t jjks-J ‚t jjt jjt jj	t jj
t jjg}t  dd|g ¡\} }t  |¡\} | t jjksVJ ‚d S r   )r   r   r   r   r#   r$   rM   rN   rO   rP   rQ   rR   ZcuModuleLoadDataExr0   )r	   Údevr2   Zoption_keysÚmodr   r   r   Útest_cuda_cuModuleLoadDataExã   s   ûrX   c                  C   sl   t  ¡ } t| t jƒsJ ‚|  ¡ }t d¡}| ¡ | ¡ ksJ ‚t  ¡  ¡ }t d¡}| ¡ | ¡ ks4J ‚d S )Na   
    params :
    fence :
        value : 0
    nvSciSync :
        fence : 0x0
        reserved : 0
    keyedMutex :
        key : 0
    reserved : [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
flags : 0
reserved : [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
zœ
    func : <CUfunction 0x0>
gridDimX : 0
gridDimY : 0
gridDimZ : 0
blockDimX : 0
blockDimY : 0
blockDimZ : 0
sharedMemBytes : 0
kernelParams : 0
extra : 0
)r   Z%CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMSÚ
isinstanceÚ__repr__ÚtextwrapÚdedentÚsplitZCUDA_KERNEL_NODE_PARAMS_st)ÚactualZactual_reprZexpected_reprr   r   r   Útest_cuda_reprù   s   

r_   c                  C   s$   t  ¡ } t jjt jjt jjg| _d S r   )r   ZCUDA_TEXTURE_DESC_stZCUaddress_modeZCU_TR_ADDRESS_MODE_WRAPZCU_TR_ADDRESS_MODE_CLAMPZCU_TR_ADDRESS_MODE_MIRRORZaddressMode)r9   r   r   r   Útest_cuda_struct_list_of_enums  s
   
þr`   c                  C   sV   t  ¡ } t jj| _t jj| j_t jj| j_t jj| j_d| j_t	| jjƒdks)J ‚d S )Niš  )
r   ZCUstreamBatchMemOpParamsZCUstreamBatchMemOpTypeZCU_STREAM_MEM_OP_WAIT_VALUE_32Z	operationZ	waitValueZ
writeValueZflushRemoteWritesZvalue64r%   )Úparamsr   r   r   Ú"test_cuda_CUstreamBatchMemOpParams-  s   
rb   i+  z#When new attributes were introduced)Úreasonc            
   	   C   sp  t  d¡\} | t jjksJ ‚t  d¡\} }| t jjksJ ‚t  d|¡\} }| t jjks-J ‚t  ¡ }t jj|_	d|j
_t jj|j
_d gd }t  |¡\} }| t jjksTJ ‚tt jjt jjt jjt jjt jjt jjt jjt jjgƒD ]\}}t  ||¡\} }| t jjks„J ‚|||< qptt jjt jjt jjgƒD ]\}	}t  ||d¡\} | t jjksªJ ‚q–tt jjgƒD ]\}}t  ||t  d¡¡\} | t jjksÉJ ‚q²tt jjt jjt jjt jjgƒD ]\}}t  ||¡\} }| t jjksîJ ‚|||< qÚ|d dksûJ ‚|d dksJ ‚|d dksJ ‚t|d ƒdksJ ‚t  |¡\} | t jjks'J ‚t  |¡\} | t jjks6J ‚d S )Nr   é   é	   r!   r"   rH   ) r   r   r   r   r#   r$   ZCUmemPoolPropsÚCUmemAllocationTypeÚCU_MEM_ALLOCATION_TYPE_PINNEDÚ	allocTypeÚlocationÚidÚCUmemLocationTypeÚCU_MEM_LOCATION_TYPE_DEVICEÚtypeZcuMemPoolCreateÚ	enumerateZCUmemPool_attributeZ/CU_MEMPOOL_ATTR_REUSE_FOLLOW_EVENT_DEPENDENCIESZ)CU_MEMPOOL_ATTR_REUSE_ALLOW_OPPORTUNISTICZ1CU_MEMPOOL_ATTR_REUSE_ALLOW_INTERNAL_DEPENDENCIESZ!CU_MEMPOOL_ATTR_RELEASE_THRESHOLDZ$CU_MEMPOOL_ATTR_RESERVED_MEM_CURRENTZ!CU_MEMPOOL_ATTR_RESERVED_MEM_HIGHZ CU_MEMPOOL_ATTR_USED_MEM_CURRENTZCU_MEMPOOL_ATTR_USED_MEM_HIGHZcuMemPoolGetAttributeZcuMemPoolSetAttributerC   r%   ZcuMemPoolDestroyr0   )
r	   r1   r2   Ú	poolPropsÚ	attr_listÚpoolÚidxÚattrÚattr_tmpZidxAr   r   r   Útest_cuda_memPool_attr6  sd   

ù
þý
ru   c                  C   s  t  d¡\} | t jjksJ ‚t  d¡\} }| t jjksJ ‚t  d|¡\} }| t jjks-J ‚t  dt jjj	¡\} }| t jjks@J ‚t j
jt j
jt j
jt j
jt j
jt j
jt j
jt j
jt j
jt j
jt j
jt j
jt j
jt j
jt j
jt j
jg}d gt|ƒ }t|ƒD ]\}}t  ||¡\} }| t jjks‘J ‚|||< q}t  t|ƒ||¡\} }	| t jjks©J ‚t||	ƒD ]\}
}t |
ƒt |ƒks¼J ‚q®dD ],}t  !|t j
j|¡\} | t jjksÓJ ‚t  t j
j|¡\} }| t jjksåJ ‚||ksëJ ‚q¿t  "|¡\} | t jjksúJ ‚t  #|¡\} | t jjks	J ‚d S )Nr   é   )TF)$r   r   r   r   r#   r$   ÚcuMemAllocManagedÚCUmemAttach_flagsÚCU_MEM_ATTACH_GLOBALÚvalueZCUpointer_attributeZCU_POINTER_ATTRIBUTE_CONTEXTZ CU_POINTER_ATTRIBUTE_MEMORY_TYPEZ#CU_POINTER_ATTRIBUTE_DEVICE_POINTERZ!CU_POINTER_ATTRIBUTE_HOST_POINTERZ CU_POINTER_ATTRIBUTE_SYNC_MEMOPSZCU_POINTER_ATTRIBUTE_BUFFER_IDZCU_POINTER_ATTRIBUTE_IS_MANAGEDZ#CU_POINTER_ATTRIBUTE_DEVICE_ORDINALZ/CU_POINTER_ATTRIBUTE_IS_LEGACY_CUDA_IPC_CAPABLEZ%CU_POINTER_ATTRIBUTE_RANGE_START_ADDRZCU_POINTER_ATTRIBUTE_RANGE_SIZEZCU_POINTER_ATTRIBUTE_MAPPEDZ)CU_POINTER_ATTRIBUTE_ALLOWED_HANDLE_TYPESZ/CU_POINTER_ATTRIBUTE_IS_GPU_DIRECT_RDMA_CAPABLEZ!CU_POINTER_ATTRIBUTE_ACCESS_FLAGSZ#CU_POINTER_ATTRIBUTE_MEMPOOL_HANDLErK   rn   ZcuPointerGetAttributeZcuPointerGetAttributesÚzipr=   ZcuPointerSetAttributer/   r0   )r	   r1   r2   ÚptrÚattr_type_listÚattr_value_listrr   rs   rt   Úattr_value_list_v2Úattr1Úattr2Úvalr   r   r   Útest_cuda_pointer_attrn  sX   ð
rƒ   c                  C   sÌ  t  d¡\} | t jjksJ ‚t  d¡\} }| t jjksJ ‚t  d|¡\} }| t jjks-J ‚tdƒ}t  |t jj	j
¡\} }| t jjksDJ ‚t  ||t jj|¡\} | t jjksWJ ‚t  ||t jjt j¡\} | t jjkskJ ‚t  ||t jjt j¡\} | t jjksJ ‚t  t jj|¡\} }| t jjks‘J ‚|r°t  ||t jj|¡\} | t jjks¦J ‚ddg d¢dgf}nddg d¢dgddg d¢dgf}t jjt jjt jjt jjg}g d	¢}d gt|ƒ }	tt|ƒƒD ]}
t  ||
 ||
 ||¡\} }| t jjks÷J ‚||	|
< qßd
}|D ]}||	krd} nq |std|	› d|› ƒ‚t  ||t|ƒ||¡\} }| t jjks0J ‚t|	|ƒD ]\}}t|ƒt|ƒksDJ ‚q5t   |¡\} | t jjksUJ ‚t  !|¡\} | t jjksdJ ‚d S )Nr   rv   r!   éÿÿÿÿ)r   r„   éþÿÿÿr…   )r„   r…   r…   )r…   r…   r…   )rI   rI   é   rI   FTzattr_value_list z did not match any )"r   r   r   r   r#   r$   r%   rw   rx   ry   rz   ZcuMemAdviseZCUmem_adviseZCU_MEM_ADVISE_SET_READ_MOSTLYZ$CU_MEM_ADVISE_SET_PREFERRED_LOCATIONZCU_DEVICE_CPUZCU_MEM_ADVISE_SET_ACCESSED_BYZcuDeviceGetAttributeZCUdevice_attributeZ-CU_DEVICE_ATTRIBUTE_CONCURRENT_MANAGED_ACCESSZCUmem_range_attributeZ"CU_MEM_RANGE_ATTRIBUTE_READ_MOSTLYZ)CU_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATIONZ"CU_MEM_RANGE_ATTRIBUTE_ACCESSED_BYZ-CU_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATIONrK   ÚrangeZcuMemRangeGetAttributerA   ZcuMemRangeGetAttributesr{   r=   r/   r0   )r	   r1   r2   r3   r|   ZconcurrentSupportedZexpected_values_listr}   Zattr_type_size_listr~   rr   rt   ZmatchedZexpected_valuesr   r€   r   r   r   r   Útest_cuda_mem_range_attr¤  sb    ý

þrˆ   i +  z Mempool for graphs not supportedc                  C   s–  t  d¡\} | t jjksJ ‚t  d¡\} }| t jjksJ ‚t  d|¡\} }| t jjks-J ‚t  d¡\} }| t jjks<J ‚t  d¡\} }| t jjksKJ ‚d}t  ¡ }t j	j
|jj_||jj_t jj|j_||_t  |d d|¡\} }| t jjksxJ ‚t  ||gd|j¡\} }| t jjksŒJ ‚t  |d¡\} }	| t jjksœJ ‚t  |	|¡\} | t jjks«J ‚t  |t jj¡\} }
| t jjks½J ‚t  |t jj¡\} }| t jjksÏJ ‚t  |t jj¡\} }| t jjksáJ ‚t  |t jj¡\} }| t jjksóJ ‚t|
ƒ|ksûJ ‚t|ƒt|
ƒksJ ‚t|ƒt|ƒksJ ‚t|ƒt|ƒksJ ‚t  |¡\} | t jjks+J ‚t   |¡\} | t jjks:J ‚t  !|¡\} | t jjksIJ ‚d S r8   )"r   r   r   r   r#   r$   ÚcuStreamCreateÚcuGraphCreateZCUDA_MEM_ALLOC_NODE_PARAMSrk   rl   ro   ri   rm   rj   rf   rg   rh   ZbytesizeZcuGraphAddMemAllocNodeZcuGraphAddMemFreeNoder4   ÚcuGraphInstantiateÚcuGraphLaunchZcuDeviceGetGraphMemAttributeZCUgraphMem_attributeZ"CU_GRAPH_MEM_ATTR_USED_MEM_CURRENTZCU_GRAPH_MEM_ATTR_USED_MEM_HIGHZ&CU_GRAPH_MEM_ATTR_RESERVED_MEM_CURRENTZ#CU_GRAPH_MEM_ATTR_RESERVED_MEM_HIGHr%   ÚcuGraphDestroyÚcuStreamDestroyr0   )r	   r1   r2   ÚstreamÚgraphZ	allocSizera   Z	allocNodeZfreeNodeÚ	graphExecÚusedZusedHighÚreservedZreservedHighr   r   r   Útest_cuda_graphMem_attrÝ  sT   
r”   iê.  ÚcuCoredumpSetAttributeGlobalÚcuCoredumpGetAttributeGlobalzCoredump API not presentc                  C   sœ  t  d¡\} | t jjksJ ‚t  d¡\} }| t jjksJ ‚t  d|¡\} }| t jjks-J ‚d gd }t  t jjd¡\} | t jjksCJ ‚t  t jj	d¡\} | t jjksTJ ‚t  t jj
d¡\} | t jjkseJ ‚t  t jjd¡\} | t jjksvJ ‚tt jjt jj	t jj
t jjgƒD ]\}}t  |¡\} }| t jjks™J ‚|||< q†|d dks¦J ‚|d dks®J ‚|d dks¶J ‚|d	 dks¾J ‚t  |¡\} | t jjksÌJ ‚d S )
Nr   é   Fs   corefiles   corepipeTr!   r"   rH   )r   r   r   r   r#   r$   r•   ZCUcoredumpSettingsZCU_COREDUMP_TRIGGER_HOSTZCU_COREDUMP_FILEZCU_COREDUMP_PIPEZCU_COREDUMP_LIGHTWEIGHTrn   r–   r0   )r	   r1   r2   rp   rr   rs   rt   r   r   r   Útest_cuda_coredump_attr  s:   
ý
r˜   c                  C   sþ   t  d¡\} | t jjksJ ‚t  d¡\} }| t jjksJ ‚t  d|¡\} }| t jjks-J ‚t  d¡\} }t  | ¡\}}|dksAJ ‚t  | ¡\}}|dksNJ ‚t  d¡\} }t  | ¡\}}|dksbJ ‚t  | ¡\}}|dksoJ ‚t  |¡\} | t jjks}J ‚d S )Nr   s   no errors   CUDA_SUCCESSr„   s   invalid device ordinals   CUDA_ERROR_INVALID_DEVICE)	r   r   r   r   r#   r$   ZcuGetErrorStringZcuGetErrorNamer0   )r	   r1   r2   Ú_Úsr   r   r   Útest_get_error_name_and_string;  s$   r›   ú
nvidia-smizBinary existance neededc            
      C   sî   dd l } t d¡\}|tjjksJ ‚t d¡\}}|tjjks!J ‚t d|¡\}}|tjjks1J ‚| jg d¢| j| jd}t	 
¡ dkrEdnd}|j |¡}d}t |t d¡¡\}}	|	 d¡d }	|	|v sgJ ‚t |¡\}|tjjksuJ ‚d S )	Nr   )rœ   z--query-gpu=namez--format=csv,noheader)ÚstdoutÚstderrÚWindowss   
ó   
é@   ó    )Ú
subprocessr   r   r   r   r#   r$   ÚrunÚPIPEÚplatformÚsystemr   r]   ZcuDeviceGetNameZCUdevicer0   )
r£   r	   r1   r2   ÚpÚ	delimiterÚexpectr3   r™   Úgotr   r   r   Útest_device_get_nameQ  s&   þr¬   z,Driver too old for cuStreamGetCaptureInfo_v2c                   C   s   d S r   r   r   r   r   r   Útest_stream_capturen  s   r­   c                  C   sz   t  d¡\} | t jjksJ ‚t  d¡\} }| t jjksJ ‚t  d|¡\} }| t jjks-J ‚t  |¡\} | t jjks;J ‚d S r   )r   r   r   r   r#   r$   r0   ©r	   r1   r2   r   r   r   Útest_c_func_callbackr  s   r¯   c                  C   s®   t  d¡\} | t jjksJ ‚t  d¡\} }| t jjksJ ‚t  d|¡\} }| t jjks-J ‚t  ¡ \} | t jjks:J ‚t  ¡ \} | t jjksGJ ‚t  |¡\} | t jjksUJ ‚d S r   )	r   r   r   r   r#   r$   ZcuProfilerStartZcuProfilerStopr0   r®   r   r   r   Útest_profiler  s   

r°   c                  C   s¬  t  ¡ } t| jjd ƒdksJ ‚t| jjd ƒdksJ ‚t| jjd ƒdks(J ‚g d¢| j_t| jjd ƒdks:J ‚t| jjd ƒdksFJ ‚t| jjd ƒdksRJ ‚t  d¡ddg| j_t| jjd ƒdkshJ ‚t| jjd ƒdkstJ ‚t| jjd ƒdks€J ‚g d¢| j_t| jjd ƒdks’J ‚t| jjd ƒdksžJ ‚t| jjd ƒdksªJ ‚g d¢| j_t| jjd ƒdks¼J ‚t| jjd ƒdksÈJ ‚t| jjd ƒdksÔJ ‚d S )Nr   r!   r"   )r!   r"   rH   rH   rI   )rI   r"   rH   )r   Z
CUeglFramer%   ÚframeZpArrayZCUarrayZpPitch)r‚   r   r   r   Útest_eglFrame  s(   r²   c                  C   sl   t  ¡ } tddƒD ]}|gd | _| jd d| ksJ ‚q	tddƒD ]}|gd | _| jd |ks3J ‚q"d S )Ni€ÿÿÿr   r¡   é   )r   ZCUipcMemHandle_str‡   r“   )r‚   Úxr   r   r   Útest_char_range§  s   þrµ   c                  C   sx   t  ¡ } t  ¡ }| jjjdksJ ‚d| jj_| jjjdksJ ‚d|jj_|jjjdks-J ‚|j| _| jjjdks:J ‚d S )Nr   rJ   é   )r   ZCUexecAffinityParam_stÚparamZsmCountr‚   )Zval1Zval2r   r   r   Útest_anon_assign°  s   

r¸   c                  C   s`   t  ¡ } d\| j_| j_| j_t  ¡ }| |_| jjdksJ ‚| jjdks&J ‚| jjdks.J ‚d S )N)re   re   re   re   )r   ÚCUlaunchAttributeValueZ
clusterDimr´   ÚyÚzZCUlaunchAttributerz   )r‚   rs   r   r   r   Útest_union_assign½  s   r¼   c                  C   s   t  ¡ } t| ƒ}d S r   )r   r¹   r=   )r‚   Ústringr   r   r   Útest_invalid_repr_attributeÇ  s   r¾   iô.  ÚcuGraphAddNodeÚcuGraphNodeSetParamsÚcuGraphExecNodeSetParamszPolymorphic graph APIs requiredc                  C   sr  t  d¡\} | t jjksJ ‚t  d¡\} }| t jjksJ ‚t  d|¡\} }| t jjks-J ‚t  d¡\} }| t jjks<J ‚tdt 	¡ j
 ƒ}g }tdƒD ] }t  |¡\} }| t jjks\J ‚|t |d¡ tj	¡|fg7 }qK|D ]\}}t  |||¡\} | t jjks‚J ‚qng }	t  d¡\} }
| t jjks”J ‚|d \}}t  ¡ }t jj|_t 	¡ j
|j_||j_d|j_||j_d|j_t  |
d d|¡\} }| t jjksÌJ ‚|	|g7 }	|d \}}t  ¡ }t jj|_t jj|jj _!||jj _"t jj#|jj _$||jj _%||jj _&d|jj _'d|jj _(t  |
d d|¡\} }| t jjksJ ‚|	|g7 }	t  )|
d¡\} }| t jjks0J ‚t  *||¡\} | t jjks@J ‚t  +|¡\} | t jjksOJ ‚|D ]\}}t  ,|||¡\} | t jjksfJ ‚qQt -|d d t |d¡ tj	¡¡s}J ‚t -|d d t |d¡ tj	¡¡s’J ‚|d \}}t  .|	d ¡\} }| t jjksªJ ‚t|j"ƒt|ƒks¶J ‚|d \}}||jj _"t  /|	d |¡\} | t jjksÓJ ‚t  .|	d ¡\} }| t jjksåJ ‚t|j"ƒt|ƒksñJ ‚d|j_t  0||	d |¡\} | t jjksJ ‚t  *||¡\} | t jjksJ ‚t  +|¡\} | t jjks'J ‚t  ,|d d |d d |¡\} | t jjks@J ‚t -|d d t |d¡ tj	¡¡sUJ ‚t  1|d d ¡\} | t jjkshJ ‚t  1|d d ¡\} | t jjks{J ‚t  2|¡\} | t jjksŠJ ‚t  3|
¡\} | t jjks™J ‚t  4|¡\} | t jjks¨J ‚t  5|¡\} | t jjks·J ‚d S )Nr   r    r"   r!   r¶   )6r   r   r   r   r#   r$   r‰   r%   r&   r'   r(   r‡   r)   r*   r+   r-   rŠ   ZCUgraphNodeParamsZCUgraphNodeTypeZCU_GRAPH_NODE_TYPE_MEMSETrm   ÚmemsetZelementSizeÚwidthÚheightÚdstrz   r¿   ZCU_GRAPH_NODE_TYPE_MEMCPYZCUmemorytypeZCU_MEMORYTYPE_DEVICEZmemcpyZ
copyParamsZsrcMemoryTypeZ	srcDeviceZCU_MEMORYTYPE_HOSTZdstMemoryTypeZdstHostZWidthInBytesZHeightZDepthr‹   rŒ   ZcuStreamSynchronizer.   r,   ZcuGraphMemcpyNodeGetParamsrÀ   rÁ   r/   ZcuGraphExecDestroyr   rŽ   r0   )r	   r1   r2   r   r3   Úbuffersr™   r4   ÚhostÚnodesr   ZmemsetParamsÚnodeZmemcpyParamsr‘   ZmemcpyParamsCopyr   r   r   Útest_graph_polyË  s°    








**
 *rÊ   ),r¦   ZpytestZ	cuda.cudar   Zcuda.cudartr   Únumpyr&   r[   r   Ú	sysconfigr   r   r   r   r   r   r7   r:   rD   rF   rU   rX   r_   r`   rb   ÚmarkZskipifru   rƒ   rˆ   r”   r˜   r›   r¬   r­   r¯   r°   r²   rµ   r¸   r¼   r¾   rÊ   r   r   r   r   Ú<module>   sp   (C$	
7
5
8
6ÿ
þ
$

	
ÿþ
ý