
    J/Phc                         d dl Z d dlZd dlZd dlZd dlmZ d dlmZm	Z	m
Z
 d Z e
d           G d de	                      Z e
d           G d d	e	                      Zed
k    r ej                     dS dS )    N)cuda)unittestCUDATestCaseskip_on_cudasimc                 F     t          j                    fd            }|S )Nc                      t          j                    }|                    d           	 |                     | i |          |                                 S # |                                 w xY w)NT)asyncionew_event_loop	set_debugrun_until_completeclose)argskwdsloopfs      e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/cuda/tests/cudadrv/test_streams.pyrunnerz!with_asyncio_loop.<locals>.runner
   si    %''t	**11d+;d+;+;<<JJLLLLDJJLLLLs   A A0)	functoolswraps)r   r   s   ` r   with_asyncio_loopr   	   s8    _Q     M    z,CUDA Driver API unsupported in the simulatorc                       e Zd Zd Zd Zed             Zed             Zed             Zed             Z	ed             Z
dS )	TestCudaStreamc                     d }t          j                    }t          j                    }|                    ||           |                     |                    d                     d S )Nc                 .    |                                  d S N)set)streamstatusevents      r   callbackz2TestCudaStream.test_add_callback.<locals>.callback   s    IIKKKKKr         ?)r   r   	threadingEventadd_callback
assertTruewaitselfr!   r   callback_events       r   test_add_callbackz TestCudaStream.test_add_callback   sg    	 	 	 "**Hn555++C0011111r   c                      t          j                     fd}t          j                    }|                    |                                                    d                     d S )Nc                 Z                         |                                            d S r   )assertIsNoner   )r   r   argr*   r)   s      r   r!   zCTestCudaStream.test_add_callback_with_default_arg.<locals>.callback#   s/    c"""     r   r"   )r#   r$   r   r   r%   r&   r'   r(   s   `  @r   "test_add_callback_with_default_argz1TestCudaStream.test_add_callback_with_default_arg    sv    "**	! 	! 	! 	! 	! 	! H%%%++C0011111r   c                 d   K   t          j                    }|                                 d {V  d S r   )r   r   
async_done)r)   r   s     r   test_async_donezTestCudaStream.test_async_done+   s;      !!!!!!!!!!!r   c                     K   dt           dt           f fdg d}fd|D             }t          j        |  d {V }                     t	          j        ||                     d S )Nvalue_inreturnc                 n  K   t          j                    }t          j        d          t          j        d          }}| |d d <   t          j        ||          }|                    ||           |                                 d {V }                    ||           |                                S )N   r   )r   r   pinned_array	to_devicecopy_to_hostr2   assertEqualmean)r5   r   h_srch_dstd_arydone_resultr)   s         r   async_cuda_fnz9TestCudaStream.test_parallel_tasks.<locals>.async_cuda_fn2   s      []]F,Q//1B11E1E5EE!!!HN5888EuV444 & 1 1 3 3333333K[&111::<<r   )            c                 J    g | ]}t          j         |                     S  )r	   create_task).0vrC   s     r   
<listcomp>z6TestCudaStream.test_parallel_tasks.<locals>.<listcomp>=   s.    JJJ1$]]1%5%566JJJr   )floatr	   gatherr&   npallclose)r)   	values_intasks
values_outrC   s   `   @r   test_parallel_tasksz"TestCudaStream.test_parallel_tasks0   s      	 % 	 E 	  	  	  	  	  	  !LL	JJJJ	JJJ">51111111
Iz::;;;;;r   c                    K   t          j                    fdt          d          D             }t          j        |  d {V }|D ]}|                     |           d S )Nc                 8    g | ]}                                 S rI   r2   )rK   _r   s     r   rM   z;TestCudaStream.test_multiple_async_done.<locals>.<listcomp>D   s%    :::AF%%'':::r   rG   )r   r   ranger	   rO   r=   )r)   done_awsdonedr   s       @r   test_multiple_async_donez'TestCudaStream.test_multiple_async_doneA   s      ::::q:::^X....... 	( 	(AQ''''	( 	(r   c                    K   d t          d          D             }d |D             }t          j        |  d {V }|                     t	          |          t	          |                     d S )Nc                 4    g | ]}t          j                    S rI   )r   r   )rK   rY   s     r   rM   zLTestCudaStream.test_multiple_async_done_multiple_streams.<locals>.<listcomp>K   s    333Q4;==333r   rG   c                 6    g | ]}|                                 S rI   rX   )rK   r   s     r   rM   zLTestCudaStream.test_multiple_async_done_multiple_streams.<locals>.<listcomp>L   s$    >>>FF%%''>>>r   )rZ   r	   rO   assertSetEqualr   )r)   streamsr[   r\   s       r   )test_multiple_async_done_multiple_streamsz8TestCudaStream.test_multiple_async_done_multiple_streamsI   sz      33%((333>>g>>>^X....... 	CIIs7||44444r   c                 T  K   t          j                    }|                                |                                }}|                                 | d {V  |                     |                                           |                     |                                           d S r   )r   r   r2   cancelr&   	cancelledr\   )r)   r   done1done2s       r   test_cancelled_futurez$TestCudaStream.test_cancelled_futureR   s      ((**F,=,=,?,?u))***

%%%%%r   N)__name__
__module____qualname__r+   r0   r   r3   rU   r^   rd   rj   rI   r   r   r   r      s        2 2 2	2 	2 	2 " " " < < <  ( ( ( 5 5 5 & & & & &r   r   c                   >    e Zd Zej        ed                         ZdS )TestFailingStreamc                   K   t          j                    }|                    d          }|                    d          }t          j                    }|                    dd|                                           |                                }|                     t                    5  | d {V  d d d            n# 1 swxY w Y   | 
                    |                                           d S )Nz
            .version 6.5
            .target sm_30
            .address_size 64
            .visible .entry failing_kernel() { trap; }
        failing_kernel)rD   r9   )r   current_contextcreate_module_ptxget_functionr   	configure__call__r2   assertRaises	ExceptionassertIsNotNone	exception)r)   ctxmodulerq   r   r\   s         r   test_failed_streamz$TestFailingStream.test_failed_streame   s'      "$$&& (    ,,-=>>  tF ;;DDFFF  ""y)) 	 	JJJJJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	T^^--.....s   +	C  CCN)rk   rl   rm   r   skipr   r}   rI   r   r   ro   ro   \   s<         ]/ /  ]/ / /r   ro   __main__)r	   r   r#   numpyrP   numbar   numba.cuda.testingr   r   r   r   r   ro   rk   mainrI   r   r   <module>r      s&                      F F F F F F F F F F	 	 	 ?@@C& C& C& C& C&\ C& C& A@C&L ?@@/ / / / / / / A@/8 zHMOOOOO r   