
    `i                        d dl Z d dlZd dlZd dlZd dlmZmZ d dlm	Z	 d dl
mZ d dlmZmZmZmZ d dlmZmZmZmZ  ej                    Z eed          Z G d d	eej                  Zd
 Zd Z ed           ej        ed           ed           G d de                                              Z ed           ej        ed           ed           G d de                                              Z  ed           ej        ed           ed           G d de                                              Z!d Z"e#dk    r ej$                     dS dS )    N)IS_WIN32IS_OSX)NumbaWarning)nvvm)unittestskip_on_cudasimSerialMixinskip_unless_conda_cudatoolkit)_get_libdevice_path_decision_get_nvvm_path_decision_get_cudalib_dir_path_decisionget_system_ctkget_contextc                   6    e Zd Zd Zd Zd Zed             ZdS )LibraryLookupBasec                    t          j        d          }|                                }|                                }|| _        || _        |                    t          ||fd          | _        | j                                         d S )NspawnT)targetargsdaemon)	mpr   QueueqsendqrecvProcesscheck_lib_lookupchild_processstart)selfctxr   r   s       /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/numba/cuda/tests/nocuda/test_library_lookup.pysetUpzLibraryLookupBase.setUp   s~    nW%%				

 [[# ) 
 

 	  """""    c                     | j                             | j                   | j                            d           |                     | j                   d S )N   )r   putdo_terminater   joinassertIsNotNone)r   s    r!   tearDownzLibraryLookupBase.tearDown*   sM    
t()))"""T/00000r#   c                     | j                             |           | j                                        }|                     |t
                     |S )N)r   r&   r   getassertNotIsInstanceBaseException)r   actionouts      r!   	remote_dozLibraryLookupBase.remote_do0   sB    
vjnn  m444
r#   c                      dS )N)FN r3   r#   r!   r'   zLibraryLookupBase.do_terminate6   s    {r#   N)__name__
__module____qualname__r"   r*   r1   staticmethodr'   r3   r#   r!   r   r      s\        # # #1 1 1     \  r#   r   c                 D    	 t           j        | = dS # t          $ r Y dS w xY w)NTF)osenvironKeyError)names    r!   
remove_envr=   ;   s<    Jt t    uus    
c                    d}|r	 |                                 }	 t          j        d          5 }t          j        dt                      |            \  }}d d d            n# 1 swxY w Y   |                     ||fz              n\# t          $ r!}|                     |           d}Y d }~n6d }~ww xY w# t          $ r!}|                     |           d}Y d }~nd }~ww xY w|d S d S )NT)recordalwaysF)r,   warningscatch_warningssimplefilterr   r&   	Exception)qoutqinstatusr/   wresultes          r!   r   r   D   se   F
 	WWYYF
,D999 .Q)(LAAA%+VXXNFF. . . . . . . . . . . . . . . 1$''''     	 	 	HHQKKKFFFFFF	      sQ   B7 B	 (A$B	 $A((B	 +A(,B	 	
B4B//B47
C"CC"z.Library detection unsupported in the simulatorzmp.get_context not availablez(test assumes conda installed cudatoolkitc                   @    e Zd Zd Zed             Zed             ZdS )TestLibDeviceLookUpc                 h   |                      | j                  \  }}}t          r|                     |d           n+|                     |d           |                     |           |                     |           |                      | j                  \  }}}|                     |d           |                     |t          j        	                    ddd                     |                     |           t                      `|                      | j                  \  }}}|                     |d           |                     |           |                     |           d S |                      | j                  \  }}}|                     |d           |                     |           d S )NConda environment	<unknown>	CUDA_HOME
mycudahomer   	libdeviceSystem)r1   do_clear_envshas_cudaassertEqualassertIsNoneassertFalsedo_set_cuda_homer9   pathr(   r   r   byinfowarnss       r!   test_libdevice_path_decisionz0TestLibDeviceLookUp.test_libdevice_path_decision[   s   ..);<<D% 	$R!45555R---d###..)>??D%[)))rw||L&+NNOOO#"nnT-?@@OBeR---d###U##### #nnT-?@@OBeR***U#####r#   c                  ^    t          d           t          d           dt                      fS NrP   	CUDA_PATHT)r=   r   r3   r#   r!   rT   z!TestLibDeviceLookUp.do_clear_envsv   s0    ;;13333r#   c                      t           j                            d          t           j        d<   t	                       dt                      fS NrQ   rP   T)r9   rZ   r(   r:   _fake_non_conda_envr   r3   r#   r!   rY   z$TestLibDeviceLookUp.do_set_cuda_home|   s:    "$',,|"<"<
;13333r#   N)r4   r5   r6   r_   r7   rT   rY   r3   r#   r!   rL   rL   W   sY        $ $ $6 4 4 \4
 4 4 \4 4 4r#   rL   c                   @    e Zd Zd Zed             Zed             ZdS )TestNvvmLookUpc                 \   |                      | j                  \  }}}t          r|                     |d           n+|                     |d           |                     |           |                     |           |                      | j                  \  }}}|                     |d           |                     |           t          r6|                     |t          j	        
                    ddd                     nrt          r6|                     |t          j	        
                    ddd                     n5|                     |t          j	        
                    ddd                     t                      `|                      | j                  \  }}}|                     |d           |                     |           |                     |           d S |                      | j                  \  }}}|                     |d	           |                     |           d S )
NrN   rO   rP   rQ   r   binliblib64rS   r1   rT   rU   rV   rW   rX   rY   r   r9   rZ   r(   r   r   r[   s       r!   test_nvvm_path_decisionz&TestNvvmLookUp.test_nvvm_path_decision   s   ..);<<D% 	$R!45555R---d###..)>??D%[))) 	PT27<<fe#L#LMMMM 	PT27<<fe#L#LMMMMT27<<fg#N#NOOO#"nnT-?@@OBeR---d###U##### #nnT-?@@OBeR***U#####r#   c                  ^    t          d           t          d           dt                      fS ra   )r=   r   r3   r#   r!   rT   zTestNvvmLookUp.do_clear_envs   s0    ;;,....r#   c                      t           j                            d          t           j        d<   t	                       dt                      fS rd   )r9   rZ   r(   r:   re   r   r3   r#   r!   rY   zTestNvvmLookUp.do_set_cuda_home   s:    "$',,|"<"<
;,....r#   N)r4   r5   r6   rm   r7   rT   rY   r3   r#   r!   rg   rg      sZ        $ $ $@ / / \/
 / / \/ / /r#   rg   c                   @    e Zd Zd Zed             Zed             ZdS )TestCudaLibLookUpc                    |                      | j                  \  }}}t          r|                     |d           n+|                     |d           |                     |           |                     |           |                      | j                   |                      | j                  \  }}}|                     |d           |                     |           t          r5|                     |t          j	        
                    dd                     npt          r5|                     |t          j	        
                    dd                     n4|                     |t          j	        
                    dd                     t                      `|                      | j                  \  }}}|                     |d           |                     |           |                     |           d S |                      | j                  \  }}}|                     |d           |                     |           d S )	NrN   rO   rP   rQ   ri   rj   rk   rS   rl   r[   s       r!   test_cudalib_path_decisionz,TestCudaLibLookUp.test_cudalib_path_decision   s   ..);<<D% 	$R!45555R---d### 	t)***..)>??D%[))) 	HT27<<e#D#DEEEE 	HT27<<e#D#DEEEET27<<g#F#FGGG#"nnT-?@@OBeR---d###U##### #nnT-?@@OBeR***U#####r#   c                  ^    t          d           t          d           dt                      fS ra   )r=   r   r3   r#   r!   rT   zTestCudaLibLookUp.do_clear_envs   s0    ;;35555r#   c                      t           j                            d          t           j        d<   t	                       dt                      fS rd   )r9   rZ   r(   r:   re   r   r3   r#   r!   rY   z"TestCudaLibLookUp.do_set_cuda_home   s:    "$',,|"<"<
;35555r#   N)r4   r5   r6   rs   r7   rT   rY   r3   r#   r!   rq   rq      sZ        $ $ $B 6 6 \6
 6 6 \6 6 6r#   rq   c                      dt           _        dS )zG
    Monkeypatch sys.prefix to hide the fact we are in a conda-env
     N)sysprefixr3   r#   r!   re   re      s     CJJJr#   __main__)%rx   r9   multiprocessingr   rA   numba.core.configr   r   numba.core.errorsr   numba.cuda.cudadrvr   numba.cuda.testingr   r   r	   r
   numba.cuda.cuda_pathsr   r   r   r   is_availablerU   hasattrhas_mp_get_contextTestCaser   r=   r   
skipUnlessrL   rg   rq   re   r4   mainr3   r#   r!   <module>r      s   



 				      . . . . . . . . * * * * * * # # # # # #                       4WR//     X%6   @    & ABB')GHHIJJ&4 &4 &4 &4 &4+ &4 &4 KJ IH CB&4R ABB')GHHIJJ+/ +/ +/ +/ +/& +/ +/ KJ IH CB+/\ ABB')GHHIJJ,6 ,6 ,6 ,6 ,6) ,6 ,6 KJ IH CB,6^   zHMOOOOO r#   