o
    ùe«¤  ã                   @   sˆ  d dl m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„ 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ddd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zejjed!ƒpjeƒ  d"dd#d$„ ƒZd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Z d1d2„ Z!d3d4„ Z"d5d6„ Z#d7d8„ Z$d9d:„ Z%d;d<„ Z&d=d>„ Z'd?d@„ Z(dAdB„ Z)dCdD„ Z*dEdF„ Z+dGdH„ Z,dIdJ„ Z-dKdL„ Z.dS )Mé    )Ú
store_markNc                 C   s   | t jjkS ©N)ÚcudartÚcudaError_tZcudaSuccess©Úerr© r   úFD:\Projects\ConvertPro\env\Lib\site-packages\cuda/tests/test_cudart.pyÚ	isSuccess   s   r
   c                 C   s   t | ƒsJ ‚d S r   )r
   r   r   r   r	   ÚassertSuccess   s   r   c                 C   s   t  ¡ \}}t|ƒ || k S r   )r   ZcudaDriverGetVersionr   )Útargetr   Úversionr   r   r	   ÚdriverVersionLessThan   s   r   c                  C   ó    t  t jjd¡\} }t| ƒo|S ©Nr   )r   ÚcudaDeviceGetAttributeÚcudaDeviceAttrZcudaDevAttrMemoryPoolsSupportedr
   ©r   ZisSupportedr   r   r	   ÚsupportsMemoryPool   ó   r   c                  C   r   r   )r   r   r   Z#cudaDevAttrSparseCudaArraySupportedr
   r   r   r   r	   Ú"supportsSparseTexturesDeviceFilter   r   r   c                  C   sÄ   dt  ¡ j } t | ¡\}}t|ƒ t  | d¡ t j¡}t  | d¡ t j¡}t  ||¡du s0J ‚t 	||| tj
j¡\}t|ƒ t 	||| tj
j¡\}t|ƒ t  ||¡sVJ ‚t |¡\}t|ƒ d S )Né   é   é   F)ÚnpÚuint8Úitemsizer   Ú
cudaMallocr   ÚfullÚastypeÚarray_equalÚ
cudaMemcpyÚcudaMemcpyKindÚcudaMemcpyHostToDeviceÚcudaMemcpyDeviceToHostÚcudaFree)Úsizer   ÚdptrÚh1Úh2r   r   r	   Útest_cudart_memcpy"   s   r*   c                  C   sÐ   d} t  | d d¡ t j¡}|jj}d|  d }|td|  d ƒ }d|  d }|td|  d ƒ }t ||d¡\}t	|ƒ t ||d¡\}|tj
jksNJ ‚t |¡\}|tj
jks\J ‚t |¡\}t	|ƒ d S )NéP   é   r   é   é   r   )r   r   r   r   ÚctypesÚdataÚintr   ZcudaHostRegisterr   r   Z$cudaErrorHostMemoryAlreadyRegisteredZcudaHostUnregisterZcudaErrorInvalidValue)Z	page_sizeZ	addr_hostÚaddrZsize_0Zaddr_0Zsize_1Zaddr_1r   r   r   r	   Útest_cudart_hostRegister<   s   r3   c            	      C   sö  d} d}d}d}d}d}t  ¡ }t  ¡ }t  ¡ }||_||_||_d|_d|_d|_	d|_
t jj|_| |_||_||_||_||_|d |j_|d |j_|d |j_|jj|d ks]J ‚|jj|d ksgJ ‚|jj|d ksqJ ‚d|j_d|j_d	|j_	d
|j_
t jj|j_|jjdksJ ‚|jjdks—J ‚|jj	d	ksŸJ ‚|jj
d
ks§J ‚|jjt jjks±J ‚||_|jj|ks¼J ‚|jj|ksÄJ ‚|jj|ksÌJ ‚||_|jjdks×J ‚|jjdksßJ ‚|jj	dksçJ ‚|jj
dksïJ ‚|jjt jjksùJ ‚d S )Nr   é   é   é   r   r.   é   é   é   é   )r   Ú
cudaExtentÚcudaChannelFormatDescZ$cudaExternalMemoryMipmappedArrayDescÚwidthÚheightÚdepthÚxÚyÚzÚwÚcudaChannelFormatKindZcudaChannelFormatKindSignedÚfÚoffsetÚ
formatDescÚextentÚflagsÚ	numLevelsÚcudaChannelFormatKindFloat)	rF   r=   r>   r?   rI   ZnumMipLevelsrH   rG   Z externalMemoryMipmappedArrayDescr   r   r	   Útest_cudart_class_referenceQ   s`   
rL   zSparse Texture Device Filter)Úreasonc                  C   s^  t  ¡ } d| _d| _d| _t  ¡ }d|_d|_d|_d|_	t j
j|_d}|jd }|| }t j}t| j| jƒ}ttdƒt |d¡ ƒ}t  || ||¡\}}	t|ƒ t  |	¡\}}
t|ƒ |
jjd	ksdJ ‚|
jjd	kslJ ‚|
jjd
kstJ ‚t  ¡ }d|j_d|j_d|j_|j|
_|
jjdksJ ‚|
jjdks˜J ‚|
jjdks J ‚|
jdks§J ‚|
jdks®J ‚|
jdksµJ ‚t  |	¡\}t|ƒ t  ¡ }t  d¡t  d¡t  d¡g|_t  ¡ }d|j j!_"d|j j#_!d|j j$_%d
|_t  ¡ }d|j j!_"d|j j#_!d|j j$_%d|_t  ¡ }d|j j!_"d|j j#_!d|j j$_%d|_|g|_&d|j j!_"d|j j#_!d|j j$_%d|_d|_'d S )Niè  iô  r   é    r4   r.   g      ð?r   é@   r   é   r-   é   r,   i   é{   éç  é   é	   )(r   r;   r=   r>   r?   r<   r@   rA   rB   rC   rD   rK   rE   ZcudaArraySparseÚmaxr1   ÚfloatÚmathÚlogZcudaMallocMipmappedArrayr   Z%cudaMipmappedArrayGetSparsePropertiesZ
tileExtentZcudaArraySparsePropertiesZmiptailFirstLevelZmiptailSizerI   ZcudaFreeMipmappedArrayÚ%cudaExternalSemaphoreSignalNodeParamsÚcudaExternalSemaphore_tÚextSemArrayÚ!cudaExternalSemaphoreSignalParamsÚparamsÚfenceÚvalueÚ	nvSciSyncÚ
keyedMutexÚkeyÚparamsArrayÚ
numExtSems)rH   ÚdescZnumChannelsZnumBytesPerChannelZnumBytesPerTexelrI   ZmaxDimrJ   r   ZmipmapZ
sparsePropZsparsePropNewÚexampleÚa1Úa2Úa3r   r   r	   Útest_cudart_class_inlineŽ   sv   














rk   c            
      C   sÀ   t  d¡\} }t| ƒ t  |d d¡\} }t| ƒ t  ||gd¡\} }t| ƒ t  |||gd¡\} }t| ƒ t  |¡\} }}t  ||¡\} }}t  t j¡}t  t j¡}t  t j	¡\} }	t| ƒ d S )Nr   r   r   )
r   ÚcudaGraphCreater   ZcudaGraphAddEmptyNodeZcudaGraphGetNodesZcudaStream_tZcudaStreamLegacyZcudaStreamPerThreadZcudaStreamCreateWithFlagsZcudaStreamNonBlocking)
r   ÚgraphZpGraphNode0ZpGraphNode1ZpGraphNode2ÚnodesZnumNodesZstream_legacyZstream_per_threadZstream_with_flagsr   r   r	   Útest_cudart_graphsÝ   s   ro   c                  C   s,   t  d¡\} }|jddt|jƒ   |_d S )Nr   ó    é   )r   ÚcudaGetDevicePropertiesÚnameÚlen)r   Úpropr   r   r	   Útest_cudart_list_accessð   s   rv   c                  C   sH   t  ¡ } d| _d| _d| _| jdksJ ‚| jdksJ ‚| jdks"J ‚d S )Nr   r   r,   )r   Zdim3r@   rA   rB   )Údimr   r   r	   Útest_cudart_class_settersô   s   rx   c                  C   sœ   t  t jj¡\} }t| ƒ t  t jj¡\} }t| ƒ |t jjks"J ‚t  t jj¡\} }t| ƒ |t jjks7J ‚t  t jj¡\} }t| ƒ |t jjksLJ ‚d S r   )r   Z#cudaThreadExchangeStreamCaptureModeÚcudaStreamCaptureModeÚcudaStreamCaptureModeGlobalr   ZcudaStreamCaptureModeRelaxedZ cudaStreamCaptureModeThreadLocal)r   Úmoder   r   r	   Útest_cudart_both_typeÿ   s   r|   c                  C   sF  t  d¡\} }t| ƒ g d¢}|D ]	}t||ƒsJ ‚qt|j d¡ƒdks'J ‚t|jj 	¡ ƒdks3J ‚t  
¡ }t  d¡t  d¡t  d¡g|_t  ¡ }d|jj_d|jj_d|jj_d|_t  ¡ }d|jj_d|jj_d|jj_d	|_t  ¡ }d|jj_d|jj_d|jj_d
|_|g|_d|jj_d|jj_d|jj_d|_d
|_d S )Nr   )PZaccessPolicyMaxWindowSizeZasyncEngineCountZcanMapHostMemoryZ!canUseHostPointerForRegisteredMemZ	clockRateZcomputeModeZcomputePreemptionSupportedZconcurrentKernelsZconcurrentManagedAccessZcooperativeLaunchZcooperativeMultiDeviceLaunchZdeviceOverlapZdirectManagedMemAccessFromHostÚgetPtrZglobalL1CacheSupportedZhostNativeAtomicSupportedZ
integratedZisMultiGpuBoardZkernelExecTimeoutEnabledZl2CacheSizeZlocalL1CacheSupportedZluidZluidDeviceNodeMaskÚmajorZmanagedMemoryZmaxBlocksPerMultiProcessorZmaxGridSizeZmaxSurface1DZmaxSurface1DLayeredZmaxSurface2DZmaxSurface2DLayeredZmaxSurface3DZmaxSurfaceCubemapZmaxSurfaceCubemapLayeredZmaxTexture1DZmaxTexture1DLayeredZmaxTexture1DLinearZmaxTexture1DMipmapZmaxTexture2DZmaxTexture2DGatherZmaxTexture2DLayeredZmaxTexture2DLinearZmaxTexture2DMipmapZmaxTexture3DZmaxTexture3DAltZmaxTextureCubemapZmaxTextureCubemapLayeredZmaxThreadsDimZmaxThreadsPerBlockZmaxThreadsPerMultiProcessorZmemPitchZmemoryBusWidthZmemoryClockRateÚminorZmultiGpuBoardGroupIDZmultiProcessorCountrs   ZpageableMemoryAccessZ&pageableMemoryAccessUsesHostPageTablesZpciBusIDZpciDeviceIDZpciDomainIDZpersistingL2CacheMaxSizeZregsPerBlockZregsPerMultiprocessorZreservedSharedMemPerBlockZsharedMemPerBlockZsharedMemPerBlockOptinZsharedMemPerMultiprocessorZ singleToDoublePrecisionPerfRatioZstreamPrioritiesSupportedZsurfaceAlignmentZ	tccDriverZtextureAlignmentZtexturePitchAlignmentZtotalConstMemZtotalGlobalMemZunifiedAddressingÚuuidZwarpSizezutf-8rR   rS   rT   rU   r   r   r,   r4   )r   rr   r   Úhasattrrt   rs   Údecoder€   ÚbytesÚhexrZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rI   rd   re   )r   ru   ÚattrsÚattrrg   rh   ri   rj   r   r   r	   Ú#test_cudart_cudaGetDeviceProperties  s<   












r‡   i+  z#When new attributes were introducedc               	   C   sÀ  t  ¡ } t jj| _d| j_t jj| j_	d gd }t  
| ¡\}}t|ƒ 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|ƒ |||< q?tt jjt jjt jjgƒD ]\}}t  ||d¡\}t|ƒ qatt jjgƒD ]\}}t  ||t d¡¡\}t|ƒ qytt jjt jjt jjt jjgƒD ]\}}t  ||¡\}}t|ƒ |||< q|d dksºJ ‚|d dksÂJ ‚|d dksÊJ ‚t|d ƒdksÔJ ‚t  |¡\}t|ƒ d S )Nr   r.   rU   r   r   r,   )r   ZcudaMemPoolPropsZcudaMemAllocationTypeZcudaMemAllocationTypePinnedZ	allocTypeÚlocationÚidZcudaMemLocationTypeZcudaMemLocationTypeDeviceÚtypeZcudaMemPoolCreater   Ú	enumerateZcudaMemPoolAttrZ'cudaMemPoolReuseFollowEventDependenciesZ"cudaMemPoolReuseAllowOpportunisticZ)cudaMemPoolReuseAllowInternalDependenciesZcudaMemPoolAttrReleaseThresholdZ!cudaMemPoolAttrReservedMemCurrentZcudaMemPoolAttrReservedMemHighZcudaMemPoolAttrUsedMemCurrentZcudaMemPoolAttrUsedMemHighZcudaMemPoolGetAttributeZcudaMemPoolSetAttributeÚcudaZ
cuuint64_tr1   ZcudaMemPoolDestroy)Z	poolPropsÚ	attr_listr   ÚpoolÚidxr†   Zattr_tmpZidxAr   r   r	   Útest_cudart_MemPool_attr.  sT   

ù
þ

ý
r   c                  C   s(  t  ddddt jj¡\} }t| ƒ |jdksJ ‚|jdksJ ‚|jdks&J ‚|jdks-J ‚|j	t jjks6J ‚t  
dddd¡}|jdksEJ ‚|jdksLJ ‚|jdksSJ ‚|jdksZJ ‚t  ddd¡}|jdkshJ ‚|jdksoJ ‚|jdksvJ ‚t  ddd¡}|jdks„J ‚|jdks‹J ‚|jdks’J ‚d S )NrN   r   r   r   r,   r4   )r   ÚcudaCreateChannelDescrD   rK   r   r@   rA   rB   rC   rE   Úmake_cudaPitchedPtrÚptrÚpitchÚxsizeÚysizeZmake_cudaPosÚmake_cudaExtentr=   r>   r?   )r   ÚchannelDescÚcudaPitchedPtrZcudaPosr;   r   r   r	   Útest_cudart_make_api]  s(   rš   c                  C   s˜   t  ¡ \} }t| ƒ t  |¡^} }}t| ƒ |t jjksJ ‚t  |t jj¡\} t| ƒ t  |¡^} }}t| ƒ |t jj	ks?J ‚t  
|¡\} }t| ƒ d S r   )r   ÚcudaStreamCreater   ZcudaStreamGetCaptureInfoZcudaStreamCaptureStatusZcudaStreamCaptureStatusNoneZcudaStreamBeginCapturery   rz   ZcudaStreamCaptureStatusActiveZcudaStreamEndCapture)r   ÚstreamÚstatusÚinfoZpgraphr   r   r	   Ú$test_cudart_cudaStreamGetCaptureInfoy  s   ÿrŸ   c                  C   sú   d\} }}}t jj}t  | ||||¡\}}t|ƒ d}d}d}	t  ||||	¡\}}
t|ƒ t  |
¡\}}}}t|ƒ |j| ksAJ ‚|j|ksHJ ‚|j	|ksOJ ‚|j
|ksVJ ‚|j|ks]J ‚|j|ksdJ ‚|j|kskJ ‚|	|ksqJ ‚t  |
¡\}t|ƒ d S ©N)r.   r   r   r   é
   r   )r   rD   ÚcudaChannelFormatKindUnsignedr‘   r   ÚcudaMallocArrayZcudaArrayGetInfor@   rA   rB   rC   rE   r=   r>   ÚcudaFreeArray)r@   rA   rB   rC   rE   r   rf   r=   r>   ZinFlagsÚarrrH   ZoutFlagsr   r   r	   Útest_cudart_cudaArrayGetInfo’  s.   
ÿr¦   c               
   C   s   t dt ¡ j ƒ} t | d¡ tj¡}t | d¡ tj¡}t ||¡du s'J ‚t ddddtj	j
¡\}}t|ƒ t || dd¡\}}t|ƒ t |dd|| | dtjj¡\}t|ƒ t || |dd| dtjj¡\}t|ƒ t ||¡stJ ‚t |¡\}t|ƒ d S ©Nr   r   r   Fr.   r   )r1   r   r   r   r   r   r    r   r‘   rD   r¢   r   r£   ÚcudaMemcpy2DToArrayr"   r#   ÚcudaMemcpy2DFromArrayr$   r¤   ©r&   r(   r)   r   rf   r¥   r   r   r	   Útest_cudart_cudaMemcpy2DToArray´  s.   ÿþþr«   c               
   C   sŒ  dt  ¡ j } t | ¡\}}t|ƒ t | ¡\}}t|ƒ t  | d¡ t j¡}t  | d¡ t j¡}t  ||¡du s;J ‚t 	ddddtj
j¡\}}t|ƒ t || dd¡\}}t|ƒ t ||| tjj¡\}t|ƒ t |dd|| | dtjj¡\}t|ƒ t || |dd| dtjj¡\}t|ƒ t ||| tjj¡\}t|ƒ t  ||¡s¦J ‚t |¡\}t|ƒ t |¡\}t|ƒ t |¡\}t|ƒ d S r§   )r   r   r   r   r   r   r   r   r    r‘   rD   r¢   r£   r!   r"   r#   r¨   ÚcudaMemcpyDeviceToDevicer©   r$   r¤   r%   ©r&   r   Zd1Zd2r(   r)   rf   r¥   r   r   r	   Ú$test_cudart_cudaMemcpy2DToArray_DtoDÚ  sF   ÿþþr®   c                  C   sT  dt  ¡ j } t  | d¡ t j¡}t  | d¡ t j¡}t  ||¡du s%J ‚t ddddtjj	¡\}}t
|ƒ t || dd¡\}}t
|ƒ t || dd¡\}}t
|ƒ t |dd|| | dtjj¡\}t
|ƒ t |dd|dd| dtjj¡	\}t
|ƒ t || |dd| dtjj¡\}t
|ƒ t  ||¡s”J ‚t |¡\}t
|ƒ t |¡\}t
|ƒ d S r§   )r   r   r   r   r   r    r   r‘   rD   r¢   r   r£   r¨   r"   r#   ZcudaMemcpy2DArrayToArrayr¬   r©   r$   r¤   ©r&   r(   r)   r   rf   rh   ri   r   r   r	   Ú$test_cudart_cudaMemcpy2DArrayToArray  s@   ÿþþþr°   c               
   C   sR  dt  ¡ j } t  | d¡ t j¡}t  | d¡ t j¡}t  ||¡du s%J ‚t ddddtjj	¡\}}t
|ƒ t || dd¡\}}t
|ƒ t || dd¡\}}t
|ƒ t |dd|| | dtjj¡\}t
|ƒ t |dd|dd| tjj¡\}t
|ƒ t || |dd| dtjj¡\}t
|ƒ t  ||¡s“J ‚t |¡\}t
|ƒ t |¡\}t
|ƒ d S r§   )r   r   r   r   r   r    r   r‘   rD   r¢   r   r£   r¨   r"   r#   ZcudaMemcpyArrayToArrayr¬   r©   r$   r¤   r¯   r   r   r	   Ú"test_cudart_cudaMemcpyArrayToArrayC  s@   ÿþþþr±   c                  C   sÎ   d\} }}}t jj}t  | ||||¡\}}t|ƒ d}d}d}	t  ||||	¡\}}
t|ƒ t  |
¡\}}t|ƒ |j| ks?J ‚|j|ksFJ ‚|j	|ksMJ ‚|j
|ksTJ ‚|j|ks[J ‚t  |
¡\}t|ƒ d S r    )r   rD   r¢   r‘   r   r£   ZcudaGetChannelDescr@   rA   rB   rC   rE   r¤   )r@   rA   rB   rC   rE   r   rf   r=   r>   rI   r¥   r   r   r	   Útest_cudart_cudaGetChannelDesct  s(   
ÿr²   c                  C   sÚ   t  ddddt jj¡\} }t| ƒ t  |ddd¡\} }t| ƒ t  ¡ }||jj_t  	¡ }t  
||d ¡\} }t| ƒ t  |¡\} }t| ƒ t|ƒD ]}|dv rOqH| d¡s`t||ƒt||ƒks`J ‚qHt  |¡\} t| ƒ d S )Nr.   r   r   )ZborderColorr}   Ú_)r   r‘   rD   r¢   r   r£   ZcudaResourceDescÚresÚarrayZcudaTextureDescZcudaCreateTextureObjectZcudaGetTextureObjectTextureDescÚdirÚ
startswithÚgetattrZcudaDestroyTextureObject)r   r˜   r¥   ZresDescZ	inTexDescZ	texObjectZ
outTexDescr†   r   r   r	   Ú+test_cudart_cudaGetTextureObjectTextureDesc“  s*   ÿ

€r¹   c                  C   sÚ   dt  ¡ j } t  | d¡ t j¡}t  | d¡ t j¡}t  ||¡du s%J ‚t ddd¡}t |¡\}}t	|ƒ t |j
|jd¡}t |d|¡\}t	|ƒ t ||j| tjj¡\}t  ||¡s`J ‚t |j¡\}t	|ƒ d S )Nr   r   r   FrN   )r   r   r   r   r   r    r   r—   ÚcudaMalloc3Dr   r”   r–   ÚcudaMemset3Dr!   r“   r"   r$   r%   ©r&   r(   r)   Z	devExtentr   ZdevPitchedPtrZ	memExtentr   r   r	   Útest_cudart_cudaMemset3D¶  s    ÿr½   c                  C   sØ   dt  ¡ j } t  | d¡ t j¡}t  | d¡ t j¡}t  ||¡du s%J ‚t ddd¡}t |¡\}}t	|ƒ t | |j
d¡}t |d|¡\}t	|ƒ t ||j| tjj¡\}t  ||¡s_J ‚t |j¡\}t	|ƒ d S )Ni   r   r   Fr   )r   r   r   r   r   r    r   r—   rº   r   r–   r»   r!   r“   r"   r$   r%   r¼   r   r   r	   Útest_cudart_cudaMemset3D_2DÓ  s    ÿr¾   c                  C   sô   dt  ¡ j } t  | d¡ t j¡}t  | d¡ t j¡}t  ||¡du s%J ‚t ddddtjj	¡\}}t
|ƒ t || dd¡\}}t
|ƒ t |dd|| tjj¡\}t
|ƒ t ||dd| tjj¡\}t
|ƒ t  ||¡snJ ‚t |¡\}t
|ƒ d S r§   )r   r   r   r   r   r    r   r‘   rD   r¢   r   r£   ÚcudaMemcpyToArrayr"   r#   ÚcudaMemcpyFromArrayr$   r¤   rª   r   r   r	   Útest_cudart_cudaMemcpyToArrayð  s,   ÿÿ
þrÁ   c                  C   sˆ  t dt ¡ j ƒ} t | ¡\}}t|ƒ t | ¡\}}t|ƒ t | d¡ tj¡}t | d¡ tj¡}t 	||¡du s=J ‚t 
ddddtjj¡\}}t|ƒ t || dd¡\}}t|ƒ t ||| tjj¡\}t|ƒ t |dd|| tjj¡\}t|ƒ t ||dd| tjj¡\}t|ƒ t ||| tjj¡\}t|ƒ t 	||¡s¤J ‚t |¡\}t|ƒ t |¡\}t|ƒ t |¡\}t|ƒ d S r§   )r1   r   r   r   r   r   r   r   r   r    r‘   rD   r¢   r£   r!   r"   r#   r¿   r¬   rÀ   r$   r¤   r%   r­   r   r   r	   Ú"test_cudart_cudaMemcpyToArray_DtoD  sD   ÿÿ
þrÂ   c               
   C   sR  t dt ¡ j ƒ} t | d¡ tj¡}t | d¡ tj¡}t ||¡du s'J ‚t ddddtj	j
¡\}}t|ƒ t || dd¡\}}t|ƒ t ¡ \}}t|ƒ t ¡ }t || dd¡|_||_t | dd¡|_tjj|_t ||¡\}t|ƒ t |¡\}t|ƒ t || |dd| dtjj¡\}t|ƒ t ||¡sJ ‚t |¡\}t|ƒ d S r§   )r1   r   r   r   r   r   r    r   r‘   rD   r¢   r   r£   r›   ZcudaMemcpy3DParmsr’   ÚsrcPtrÚdstArrayr—   rH   r"   r#   ÚkindZcudaMemcpy3DAsyncÚcudaStreamSynchronizer©   r$   r¤   )r&   r(   r)   r   rf   r¥   rœ   r^   r   r   r	   Útest_cudart_cudaMemcpy3DAsyncL  s:   ÿ
þrÇ   c            
   	   C   s:  dt  ¡ j } t | ¡\}}t|ƒ t  | d¡ t j¡}t  | d¡ t j¡}t  ||¡du s0J ‚t 	d¡\}}t|ƒ t 
|g d||| tjj¡\}}t|ƒ t 
||gd||| tjj¡\}}t|ƒ t ¡ \}}t|ƒ t |d¡\}}	t|ƒ t |	|¡\}t |¡\}t|ƒ t  ||¡s‘J ‚t |¡\}t|ƒ d S ©Nr   r   r   Fr   )r   r   r   r   r   r   r   r   r    rl   ÚcudaGraphAddMemcpyNode1Dr"   r#   r$   r›   ÚcudaGraphInstantiateÚcudaGraphLaunchrÆ   r%   )
r&   r   r'   r(   r)   rm   ZhToDNodeZdToHNoderœ   Ú	execGraphr   r   r	   Ú$test_cudart_cudaGraphAddMemcpyNode1D~  s6   ÿþrÍ   c               	   C   sd  dt  ¡ j } t | ¡\}}t|ƒ t  | d¡ t j¡}t  | d¡ t j¡}t  ||¡du s0J ‚t 	d¡\}}t|ƒ t 
¡ }||_| |_d|_d|_| |_d|_t |g d|¡\}}t|ƒ t ||gd||| tjj¡\}}t|ƒ t ¡ \}}	t|ƒ t |d¡\}}
t|ƒ t |
|	¡\}t|ƒ t |	¡\}t|ƒ t  ||¡s¦J ‚t |¡\}t|ƒ d S rÈ   )r   r   r   r   r   r   r   r   r    rl   ZcudaMemsetParamsÚdstr”   r`   ZelementSizer=   r>   ZcudaGraphAddMemsetNoderÉ   r"   r$   r›   rÊ   rË   rÆ   r%   )r&   r   r'   r(   r)   rm   r^   ZsetNodeZcpyNoderœ   rÌ   r   r   r	   Ú"test_cudart_cudaGraphAddMemsetNode¬  sF   ÿþrÏ   c               
   C   sf  t dt ¡ j ƒ} t | ¡\}}t|ƒ t | d¡ tj¡}t | d¡ tj¡}t 	||¡du s2J ‚t 
ddddtjj¡\}}t|ƒ t || dd¡\}}t|ƒ t ¡ }t || dd¡|_||_t | dd¡|_t ||| tjj¡\}t|ƒ t |¡\}t|ƒ t || |dd| dtjj¡\}t|ƒ t 	||¡sJ ‚t |¡\}t|ƒ t |¡\}t|ƒ d S r§   )r1   r   r   r   r   r   r   r   r   r    r‘   rD   r¢   r£   ÚcudaMemcpy3DPeerParmsr’   rÃ   rÄ   r—   rH   r!   r"   r#   ZcudaMemcpy3DPeerr©   r$   r¤   r%   )r&   r   r'   r(   r)   rf   r¥   r^   r   r   r	   Útest_cudart_cudaMemcpy3DPeerå  s<   ÿþrÑ   c            	   
   C   sŒ  dt  ¡ j } t | ¡\}}t|ƒ t  | d¡ t j¡}t  | d¡ t j¡}t  ||¡du s0J ‚t 	ddddtj
j¡\}}t|ƒ t || dd¡\}}t|ƒ t ¡ \}}t|ƒ t ¡ }t || dd¡|_||_t | dd¡|_t ||| tjj¡\}t|ƒ t ||¡\}t|ƒ t |¡\}t|ƒ t || |dd| dtjj¡\}t|ƒ t  ||¡s°J ‚t |¡\}t|ƒ t |¡\}t|ƒ d S r§   )r   r   r   r   r   r   r   r   r    r‘   rD   r¢   r£   r›   rÐ   r’   rÃ   rÄ   r—   rH   r!   r"   r#   ZcudaMemcpy3DPeerAsyncrÆ   r©   r$   r¤   r%   )	r&   r   r'   r(   r)   rf   r¥   rœ   r^   r   r   r	   Ú!test_cudart_cudaMemcpy3DPeerAsync  sD   ÿþrÒ   c                  C   s(   t  ¡ \} t| ƒ t  ¡ \} t| ƒ d S r   )r   ZcudaProfilerStartr   ZcudaProfilerStopr   r   r   r	   Útest_profilerS  s   

rÓ   c                  C   sr  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 ‚ddt  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 ‚t| jjd jƒdksJ ‚t| jjd jƒdksšJ ‚t| jjd j	ƒdks§J ‚t| jjd j
ƒdks´J ‚t| jjd jƒdksÁJ ‚t| jjd jƒdksÎJ ‚t| jjd j	ƒdksÛJ ‚t| jjd j
ƒdksèJ ‚t| jjd jƒdksõJ ‚t| jjd jƒdksJ ‚t| jjd j	ƒdksJ ‚t| jjd j
ƒdksJ ‚t  ¡ t  ¡ t  ¡ g| j_t| jjd jƒdks:J ‚t| jjd jƒdksHJ ‚t| jjd j	ƒdksVJ ‚t| jjd j
ƒdksdJ ‚t| jjd jƒdksrJ ‚t| jjd jƒdks€J ‚t| jjd j	ƒdksŽJ ‚t| jjd j
ƒdksœJ ‚t| jjd jƒdksªJ ‚t| jjd jƒdks¸J ‚t| jjd j	ƒdksÆJ ‚t| jjd j
ƒdksÔJ ‚| jjd }d|_|||g| j_t| jjd jƒdksòJ ‚t| jjd jƒdks J ‚t| jjd j	ƒdksJ ‚t| jjd j
ƒdksJ ‚t| jjd jƒdks*J ‚t| jjd jƒdks8J ‚t| jjd j	ƒdksFJ ‚t| jjd j
ƒdksTJ ‚t| jjd jƒdksbJ ‚t| jjd jƒdkspJ ‚t| jjd j	ƒdks~J ‚t| jjd j
ƒdksŒJ ‚d|_t| jjd jƒdksJ ‚t| jjd jƒdks«J ‚t| jjd j	ƒdks¹J ‚t| jjd j
ƒdksÇJ ‚t| jjd jƒdksÕJ ‚t| jjd jƒdksãJ ‚t| jjd j	ƒdksñJ ‚t| jjd j
ƒdksÿJ ‚t| jjd jƒdksJ ‚t| jjd jƒdksJ ‚t| jjd j	ƒdks)J ‚t| jjd j
ƒdks7J ‚d S )	Nr   r   r   )r   r   r,   r,   r4   rR   iÒ  )r   ZcudaEglFramer1   ÚframeZpArrayZcudaArray_tZpPitchr“   r”   r•   r–   r™   )rÔ   r@   r   r   r	   Útest_cudart_eglFrameY  s‚    rÕ   )/Z_pytest.mark.structuresr   ZpytestZcuda.cudartr   Z	cuda.cudarŒ   Únumpyr   rX   r
   r   r   r   r   r*   r3   rL   ÚmarkZskipifrk   ro   rv   rx   r|   r‡   r   rš   rŸ   r¦   r«   r®   r°   r±   r²   r¹   r½   r¾   rÁ   rÂ   rÇ   rÍ   rÏ   rÑ   rÒ   rÓ   rÕ   r   r   r   r	   Ú<module>   sV   =
N"
."&811#%72.93;