o
    ùeà  ã                   @   sˆ   d dl Z d dlmZ d dlm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e jjeƒ  dddd„ ƒZdd„ ZdS )é    Nc                  C   s$   t  t jjd¡\} }| t jjko|S ©Nr   )ÚcudartZcudaDeviceGetAttributeZcudaDeviceAttrZcudaDevAttrMemoryPoolsSupportedÚcudaError_tÚcudaSuccess)ÚerrZisSupported© r   úPD:\Projects\ConvertPro\env\Lib\site-packages\cuda/tests/test_interoperability.pyÚsupportsMemoryPool   s   r	   c                  C   óì   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 |¡\}|tj	j
ksJJ ‚t ¡ \}}|tj	j
ksXJ ‚t  |¡\} | t jjksfJ ‚t  |¡\} | t jjkstJ ‚d S r   )ÚcudaÚcuInitÚCUresultÚCUDA_SUCCESSÚcuDeviceGetÚcuCtxCreateZcuStreamCreater   ZcudaStreamDestroyr   r   ZcudaStreamCreateZcuStreamDestroyÚcuCtxDestroy)Úerr_drÚdeviceÚctxÚstreamÚerr_rtr   r   r   Útest_interop_stream   ó    r   c                  C   r
   r   )r   r   r   r   r   r   ZcuEventCreater   ZcudaEventDestroyr   r   ZcudaEventCreateZcuEventDestroyr   )r   r   r   Úeventr   r   r   r   Útest_interop_event(   r   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 jjks<J ‚t |¡\}|tj	j
ksJJ ‚t d¡\}}|tj	j
ksYJ ‚t  |¡\} | t jjksgJ ‚t  |¡\} | t jjksuJ ‚d S r   )r   r   r   r   r   r   ÚcuGraphCreater   ÚcudaGraphDestroyr   r   ZcudaGraphCreateZcuGraphDestroyr   )r   r   r   Úgraphr   r   r   r   Útest_interop_graph?   s    r   c                  C   s0  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  |g d¡\} }| t jjksMJ ‚t 	|¡\}|tj
jks[J ‚t |g d¡\}}|tj
jkslJ ‚t  |¡\} | t jjkszJ ‚t |¡\}|tj
jksˆJ ‚t  |¡\} | t jjks–J ‚d S r   )r   r   r   r   r   r   r   ÚcuGraphAddEmptyNoder   ZcudaGraphDestroyNoder   r   ZcudaGraphAddEmptyNodeZcuGraphDestroyNoder   r   )r   r   r   r   Únoder   r   r   r   Útest_interop_graphNodeV   s(   r!   c                  C   óz   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   r   ©r   r   r   r   r   r   Útest_interop_userObjectr   ó   r%   c                  C   r"   r   r#   r$   r   r   r   Útest_interop_function€   r&   r'   zRequires mempool operations)Úreasonc                  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 ‚t d¡\}}|tj	j
ksZJ ‚t  d|¡\} | t jjksiJ ‚t  |¡\} | t jjkswJ ‚d S r   )r   r   r   r   r   r   ZcuDeviceGetDefaultMemPoolr   ZcudaDeviceSetMemPoolr   r   ZcudaDeviceGetDefaultMemPoolZcuDeviceSetMemPoolr   )r   r   r   Úpoolr   r   r   r   Útest_interop_memPoolŽ   s    r*   c                  C   sN  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  |g d¡\} }| t jjksMJ ‚t  |d¡\} }| t jjks]J ‚t	 
|¡\}|t	jjkskJ ‚t	 |d¡\}}|t	jjks{J ‚t  |¡\} | t jjks‰J ‚t	 |¡\}|t	jjks—J ‚t  |¡\} | t jjks¥J ‚d S r   )r   r   r   r   r   r   r   r   ZcuGraphInstantiater   ZcudaGraphExecDestroyr   r   ZcudaGraphInstantiateZcuGraphExecDestroyr   r   )r   r   r   r   r    Z	graphExecr   r   r   r   Útest_interop_graphExec¦   s,   r+   )ZpytestZ	cuda.cudar   Zcuda.cudartr   ÚnumpyÚnpr	   r   r   r   r!   r%   r'   ÚmarkZskipifr*   r+   r   r   r   r   Ú<module>   s   
