
    J/Ph(              	       >   d dl Z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
 d dlmZmZmZmZmZ d dlmZmZ d dlZd Zd Zd Zd	 Ze ed
           ed           ed           G d de                                                          Zd Zd Ze ed
           ed           ed           G d de                                                          Ze ed           G d de                                  Zedk    r ej                     dS dS )    N)cuda)driver)skip_on_armskip_on_cudasimskip_under_cuda_memcheckContextResettingTestCaseForeignArray)
linux_onlywindows_onlyc                     	  |             }d}|}n#  d}t          j                    }Y nxY w|                    ||f           d S )NTF)	traceback
format_excput)the_workresult_queuearrsuccouts        `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/cuda/tests/cudapy/test_ipc.pycore_ipc_handle_testr      s`    
hjj %"$$
 dC[!!!!!s   
 *c                 6      fd}t          ||           d S )Nc                      t          j        t           j                  } t          j        | j        z  |           5 }|                                cd d d            S # 1 swxY w Y   d S N)shapedtype)npr   intpr   open_ipc_arrayitemsizecopy_to_host)r   darrhandlesizes     r   r   z&base_ipc_handle_test.<locals>.the_work!   s    !! tu~/E',. . . 	'15$$&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   A  A$'A$r   )r"   r#   r   r   s   ``  r   base_ipc_handle_testr%       s:    ' ' ' ' ' ' <00000    c                 2      fd}t          ||           d S )Nc                      t          j        t           j                  }                     t	          j                    j        | j        z  |           }|                                }	                                 |S r   )
r   r   r   
open_arrayr   current_contextr#   r   r    close)r   r!   r   r"   s      r   r   z+serialize_ipc_handle_test.<locals>.the_work,   sm    !!  !5!7!7'-{en'D', ! . . !!
r&   r$   )r"   r   r   s   `  r   serialize_ipc_handle_testr,   +   s4         <00000r&   c                    	 | 5 }|                                 }	 | 5  	 d d d            n# 1 swxY w Y   t          d          # t          $ r,}t          |          dk    rt          d          Y d }~nd }~ww xY w	 d d d            n# 1 swxY w Y   d}|}n#  d}t	          j                    }Y nxY w|                    ||f           d S Nzdid not raise on reopenzIpcHandle is already openedzinvalid exception messageTF)r    AssertionError
ValueErrorstrr   r   r   )ipcarrr   r!   r   er   r   s          r   ipc_array_testr4   9   s    
	@t##%%C@                 %%>???	  F F Fq66:::()DEEE ;::::F:
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 
	@$ %"$$
 dC[!!!!!sq   B B
A*A.	A.	AB

A:"A50B
5A::B
>B 
BB BB B3zHangs cuda-memcheckzIpc not available in CUDASIMz&CUDA IPC not supported on ARM in Numbac                   6    e Zd Zd Zd Zd	dZd Zd	dZd ZdS )
TestIpcMemoryc                    t          j        dt           j                  }t          j        |          }t          j                    }|                    |j                  }t          j	        r|j
        j        }nt          |j
                  }|j        }t          j        d          }|                                }|||f}|                    t$          |          }	|	                                 |                                \  }
}|
s|                     |           n t           j                            ||           |	                    d           d S N
   r   spawntargetargs   )r   aranger   r   	to_devicer*   get_ipc_handlegpu_datar   USE_NV_BINDINGr"   reservedbytesr#   mpget_contextQueueProcessr%   startgetfailtestingassert_equaljoin)selfr   devarrctxipchhandle_bytesr#   r   r>   procr   r   s               r   test_ipc_handlezTestIpcMemory.test_ipc_handleX   s!   i"'***$$ "$$!!&/22   	.;/LL --Ly nW%%yy{{dL1{{"6T{BB

 $$&&	c 	.IIcNNNNJ##C---		!r&   c                     d t          dd           t          dd          t          d d          f}d}t          j        ||          S )Nr?      )FT)slice	itertoolsproduct)rQ   indicesforeignss      r   variantszTestIpcMemory.variantsu   sB    q$q!eD!nnE ! (333r&   NFc                 r   t          j        dt           j                  }t          j        |          }|||         }|r!t          j        t          |                    }|                                }t          j                    }|	                    |j
                  }t          j        |          }t          j        |          }	|                     |	j        d            |                     |	j        |j                   t$          j        r+|                     |	j        j        |j        j                   n:|                     t-          |	j                  t-          |j                             t/          j        d          }|                                }
||
f}|                    t6          |          }|                                 |
                                \  }}|s|                     |           n t           j                             ||           |!                    d           d S r8   )"r   r@   r   r   rA   as_cuda_arrayr	   r    r*   rB   rC   pickledumpsloadsassertIsbaseassertEqualr#   r   rD   r"   rE   tuplerG   rH   rI   rJ   r,   rK   rL   rM   rN   rO   rP   )rQ   	index_argforeignr   rR   expectrS   rT   buf
ipch_reconr   r>   rV   r   r   s                  r   check_ipc_handle_serializationz,TestIpcMemory.check_ipc_handle_serialization}   s   i"'***$$ I&F 	>'V(<(<==F$$&& "$$!!&/22 l4  \#&&
jot,,,$)444  	KZ.79MNNNNU:#455uT[7I7IJJJ nW%%yy{{l#{{";${GG

 $$&&	c 	1IIcNNNNJ##FC000		!r&   c                     |                                  D ]J\  }}|                     ||          5  |                     ||           d d d            n# 1 swxY w Y   Kd S N)indexrj   )r_   subTestrn   rQ   rq   rj   s      r   test_ipc_handle_serializationz+TestIpcMemory.test_ipc_handle_serialization   s    #}} 	D 	DOE7E7;; D D33E7CCCD D D D D D D D D D D D D D D	D 	D   AA	A	c                    t          j        dt           j                  }t          j        |          }|||         }|r!t          j        t          |                    }|                                }|                                }t          j
        d          }|                                }||f}	|                    t          |	          }
|
                                 |                                \  }}|s|                     |           n t           j                            ||           |
                    d           d S r8   )r   r@   r   r   rA   ra   r	   r    rB   rG   rH   rI   rJ   r4   rK   rL   rM   rN   rO   rP   )rQ   ri   rj   r   rR   rk   rT   rS   r   r>   rV   r   r   s                r   check_ipc_arrayzTestIpcMemory.check_ipc_array   s   i"'***$$ I&F 	>'V(<(<==F$$&&$$&& nW%%yy{{l#{{.t{<<

 $$&&	c 	1IIcNNNNJ##FC000		!r&   c                     |                                  D ]J\  }}|                     ||          5  |                     ||           d d d            n# 1 swxY w Y   Kd S rp   )r_   rr   rw   rs   s      r   test_ipc_arrayzTestIpcMemory.test_ipc_array   s    #}} 	5 	5OE7E7;; 5 5$$UG4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5	5 	5ru   )NF)	__name__
__module____qualname__rW   r_   rn   rt   rw   ry    r&   r   r6   r6   R   s|          :4 4 4$ $ $ $LD D D
   25 5 5 5 5r&   r6   c                 6      fd}t          ||           d S )Nc                     t           j                 5  t           j                                        }                     |           }j        t          j        t          j                  j	        z  }t          j
        |t          j                  }t           j                            ||j                                                    d d d            n# 1 swxY w Y   |S )Nr:   )r#   )r   gpusdevicesrH   open_stagedr#   r   r   r   r   zerosr   device_to_hostr+   )this_ctx	deviceptrarrsize	hostarray
device_numr"   s       r   r   z(staged_ipc_handle_test.<locals>.the_work   s    Yz" 	 	|//11H**844IkRXbg%6%6%??G888IK&&96; '    LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s   B:CC!Cr$   )r"   r   r   r   s   ``  r   staged_ipc_handle_testr      s:    
 
 
 
 
 
 <00000r&   c                    	 t           j        |         5  | 5 }|                                }	 | 5  	 d d d            n# 1 swxY w Y   t          d          # t          $ r,}t          |          dk    rt          d          Y d }~nd }~ww xY w	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d}|}n#  d}t          j                    }Y nxY w|                    ||f           d S r.   )	r   r   r    r/   r0   r1   r   r   r   )r2   r   r   r!   r   r3   r   r   s           r   staged_ipc_array_testr      s   Yz" 	D 	D 
D4''))D                 ))BCCC	 " J J J1vv!>>>,-HIII ?>>>>J>
D 
D 
D 
D 
D 
D 
D 
D 
D 
D 
D 
D 
D 
D 
D	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D& %"$$
 dC[!!!!!s   C B4BA=AAAAAB
B!"BBBBB4B!	!B4$B!	%B4(C 4B88C ;B8<C Cc                       e Zd Zd Zd ZdS )TestIpcStagedc                 D   t          j        dt           j                  }t          j        |          }t          j        d          }|                                }t          j                    }|	                    |j
                  }t          j        |          }t          j        |          }|                     |j        d            t           j        r+|                     |j        j        |j        j                   n:|                     t+          |j                  t+          |j                             |                     |j        |j                   t/          t1          t          j                            D ]}	||	|f}
|                    t6          |
          }|                                 |                                \  }}|                    d           |s|                     |           {t           j         !                    ||           d S r8   )"r   r@   r   r   rA   rG   rH   rI   r*   rB   rC   rb   rc   rd   re   rf   r   rD   rg   r"   rE   rh   r#   rangelenr   rJ   r   rK   rL   rP   rM   rN   rO   )rQ   r   rR   mpctxr   rS   rT   rl   rm   r   r>   rV   r   r   s                 r   test_stagedzTestIpcStaged.test_staged   s   i"'***$$ w''{{}} "$$!!&/22l4  \#&&
jot,,,  	KZ.79MNNNNU:#455uT[7I7IJJJ$)444  DI// 		2 		2J*l3D==(>T=JJDJJLLL$((**ID#IIaLLL 2		#
''S1111		2 		2r&   c                 l   t          t          t          j                            D ]}t          j                            d          }t          j        |          }|                                }t          j	        d          }|
                                }|||f}|                    t          |          }|                                 |                                \  }	}
|                    d           |	s|                     |
           t          j                            ||
           d S )Nr9   r;   r<   r?   )r   r   r   r   r   randomrA   rB   rG   rH   rI   rJ   r   rK   rL   rP   rM   rN   rO   )rQ   r   r   rR   rT   rS   r   r>   rV   r   r   s              r   ry   zTestIpcStaged.test_ipc_array  s   DI// 	2 	2J)""2&&C^C((F((**D .))C99;;L*l3D;;&;$;GGDJJLLL$((**ID#IIaLLL 2		#
''S1111#	2 	2r&   N)rz   r{   r|   r   ry   r}   r&   r   r   r      s3        
 2  2  2D2 2 2 2 2r&   r   c                       e Zd Zd ZdS )TestIpcNotSupportedc                 N   t          j        dt           j                  }t          j        |          }|                     t                    5 }|                                 d d d            n# 1 swxY w Y   t          |j	                  }| 
                    d|           d S )Nr9   r:   zOS does not support CUDA IPC)r   r@   r   r   rA   assertRaisesOSErrorrB   r1   	exceptionassertIn)rQ   r   rR   raiseserrmsgs        r   test_unsupportedz$TestIpcNotSupported.test_unsupported0  s    i"'***$$w'' 	$6!!###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$V%&&4f=====s   A00A47A4N)rz   r{   r|   r   r}   r&   r   r   r   -  s#        > > > > >r&   r   __main__) multiprocessingrG   r[   r   rb   numpyr   numbar   numba.cuda.cudadrvr   numba.cuda.testingr   r   r   r   r	   numba.tests.supportr
   r   unittestr   r%   r,   r4   r6   r   r   r   r   rz   mainr}   r&   r   <module>r      s                          % % % % % %H H H H H H H H H H H H H H 9 8 8 8 8 8 8 8 " " "1 1 11 1 1" " "2 /00/00566n5 n5 n5 n5 n5, n5 n5 76 10 10 n5b1 1 1 " " "4 /00/0056652 52 52 52 52, 52 52 76 10 10 52p /00> > > > >2 > > 10 > zHMOOOOO r&   