
    sh(              	          S SK rS SKrS SKrS SKrS SKrS SKJr  S SK	J
r
  S SKJrJrJrJrJr  S SKJrJr  S SKrS rS rS rS	 r\\" S
5      \" S5      \" S5       " S S\5      5       5       5       5       rS rS r\\" S
5      \" S5      \" S5       " S S\5      5       5       5       5       r\\" S5       " S S\5      5       5       r\S:X  a  \R>                  " 5         gg)    N)cuda)driver)skip_on_armskip_on_cudasimskip_under_cuda_memcheckContextResettingTestCaseForeignArray)
linux_onlywindows_onlyc                 |     U " 5       nSnUnUR                  X445        g !   Sn[         R                  " 5       n N.= f)NTF)	traceback
format_excput)the_workresult_queuearrsuccouts        t/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cuda/tests/cudapy/test_ipc.pycore_ipc_handle_testr      sD    
j d[!%""$s     ;c                 ,   ^ ^ U U4S jn[        X25        g )Nc                     > [         R                  " [         R                  5      n [        R                  " TTU R
                  -  U S9 nUR                  5       sS S S 5        $ ! , (       d  f       g = fN)shapedtype)npr   intpr   open_ipc_arrayitemsizecopy_to_host)r   darrhandlesizes     r   r   &base_ipc_handle_test.<locals>.the_work!   sR    !  tu~~/E',.15$$&. . .s   	A##
A1r   )r"   r#   r   r   s   ``  r   base_ipc_handle_testr&       s    ' 0    c                 (   ^  U 4S jn[        X!5        g )Nc                    > [         R                  " [         R                  5      n TR                  [        R
                  " 5       TR                  U R                  -  U S9nUR                  5       nTR                  5         U$ r   )
r   r   r   
open_arrayr   current_contextr#   r   r    close)r   r!   r   r"   s      r   r   +serialize_ipc_handle_test.<locals>.the_work,   sf    !  !5!5!7'-{{enn'D', ! . !
r'   r%   )r"   r   r   s   `  r   serialize_ipc_handle_testr.   +   s     0r'   c                     U  nUR                  5       n U     S S S 5        [        S5      e! , (       d  f       N= f! [         a$  n[        U5      S:w  a  [        S5      e S nAOS nAff = f S S S 5        O! , (       d  f       O= fSnWnO!   Sn[        R
                  " 5       n O= fUR                  XV45        g 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_testr6   9   s    t##%C@  %%>?? V Fq6::()DEE ;F: VV$ %""$
 d[!sX   B A9>->A9
;	>
A,A'"A9'A,,A90	B 9
BB B*zHangs cuda-memcheckzIpc not available in CUDASIMz&CUDA IPC not supported on ARM in Numbac                   @    \ rS rSrS rS rS
S jrS rS
S jrS r	S	r
g)TestIpcMemoryR   c                    [         R                  " S[         R                  S9n[        R                  " U5      n[        R
                  " 5       nUR                  UR                  5      n[        R                  (       a  UR                  R                  nO[        UR                  5      nUR                  n[        R                  " S5      nUR!                  5       nXVU4nUR#                  [$        US9n	U	R'                  5         UR)                  5       u  pU
(       d  U R+                  U5        O[         R,                  R/                  X5        U	R1                  S5        g 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   rA   procr   r   s               r   test_ipc_handleTestIpcMemory.test_ipc_handleX   s    ii"''*$ ""$!!&//2   ;;//L -Lyy nnW%yy{L1{{"6T{B

 $$&	IIcNJJ##C-		!r'   c                 z    S [        SS 5      [        SS5      [        S S5      4nSn[        R                  " X5      $ )NrB      )FT)slice	itertoolsproduct)rT   indicesforeignss      r   variantsTestIpcMemory.variantsu   s:    q$q!eD!nE !  33r'   Nc                    [         R                  " S[         R                  S9n[        R                  " U5      nUb  XA   nU(       a  [        R
                  " [        U5      5      nUR                  5       n[        R                  " 5       nUR                  UR                  5      n[        R                  " U5      n[        R                  " U5      n	U R                  U	R                  S 5        U R!                  U	R"                  UR"                  5        [$        R&                  (       a;  U R!                  U	R(                  R*                  UR(                  R*                  5        O8U R!                  [-        U	R(                  5      [-        UR(                  5      5        [.        R0                  " S5      nUR3                  5       n
Xz4nUR5                  [6        US9nUR9                  5         U
R;                  5       u  pU(       d  U R=                  U5        O[         R>                  RA                  X^5        URC                  S5        g r;   )"r   rC   r   r   rD   as_cuda_arrayr	   r    r+   rE   rF   pickledumpsloadsassertIsbaseassertEqualr#   r   rG   r"   rH   tuplerJ   rK   rL   rM   r.   rN   rO   rP   rQ   rR   rS   )rT   	index_argforeignr   rU   expectrV   rW   buf
ipch_reconr   rA   rY   r   r   s                  r   check_ipc_handle_serialization,TestIpcMemory.check_ipc_handle_serialization}   s   ii"''*$ &F''V(<=F$$& ""$!!&//2 ll4 \\#&
joot,$))4  Z..779M9MNU:#4#45uT[[7IJ nnW%yy{#{{";${G

 $$&	IIcNJJ##F0		!r'   c                     U R                  5        H.  u  pU R                  XS9   U R                  X5        S S S 5        M0     g ! , (       d  f       MB  = fN)indexro   )rc   subTestrs   rT   rw   ro   s      r   test_ipc_handle_serialization+TestIpcMemory.test_ipc_handle_serialization   s?    #}}OEE;33EC <;  /;;   A
A	c                 `   [         R                  " S[         R                  S9n[        R                  " U5      nUb  XA   nU(       a  [        R
                  " [        U5      5      nUR                  5       nUR                  5       n[        R                  " S5      nUR                  5       nXh4n	UR                  [        U	S9n
U
R                  5         UR                  5       u  pU(       d  U R!                  U5        O[         R"                  R%                  X\5        U
R'                  S5        g r;   )r   rC   r   r   rD   rf   r	   r    rE   rJ   rK   rL   rM   r6   rN   rO   rP   rQ   rR   rS   )rT   rn   ro   r   rU   rp   rW   rV   r   rA   rY   r   r   s                r   check_ipc_arrayTestIpcMemory.check_ipc_array   s    ii"''*$ &F''V(<=F$$&$$& nnW%yy{#{{.t{<

 $$&	IIcNJJ##F0		!r'   c                     U R                  5        H.  u  pU R                  XS9   U R                  X5        S S S 5        M0     g ! , (       d  f       MB  = frv   )rc   rx   r~   ry   s      r   test_ipc_arrayTestIpcMemory.test_ipc_array   s?    #}}OEE;$$U4 <;  /;;r|    )NF)__name__
__module____qualname____firstlineno__rZ   rc   rs   rz   r~   r   __static_attributes__r   r'   r   r8   r8   R   s"    :4$LD
25r'   r8   c                 ,   ^ ^ UU 4S jn[        X25        g )Nc                    > [         R                  T      [         R                  R                  5       n TR	                  U 5      nTR
                  [        R                  " [        R                  5      R                  -  n[        R                  " U[        R                  S9n[         R                  R                  X1TR
                  S9  TR                  5         S S S 5        U$ ! , (       d  f       W$ = f)Nr=   )r#   )r   gpusdevicesrK   open_stagedr#   r   r   r   r   zerosr   device_to_hostr,   )this_ctx	deviceptrarrsize	hostarray
device_numr"   s       r   r   (staged_ipc_handle_test.<locals>.the_work   s    YYz"||//1H**84IkkRXXbgg%6%?%??G8IKK&&6;; '  LLN #  #" s   CC%%
C4r%   )r"   r   r   r   s   ``  r   staged_ipc_handle_testr      s    
 0r'   c                     [         R                  U      U  nUR                  5       n U     S S S 5        [        S5      e! , (       d  f       N= f! [         a$  n[        U5      S:w  a  [        S5      e S nAOS nAff = f S S S 5        O! , (       d  f       O= fS S S 5        O! , (       d  f       O= fSnWnO!   Sn[        R                  " 5       n O= fUR                  Xg45        g r0   )	r   r   r    r1   r2   r3   r   r   r   )r4   r   r   r!   r   r5   r   r   s           r   staged_ipc_array_testr      s    YYz"4'')D   ))BCC  ! J1v!>>,-HII ?J>  #""& %""$
 d[!sw   B= B'BAAAB
AA
B A;6B;B  B	B'
B	B'	B= '
B51B= =Cc                        \ rS rSrS rS rSrg)TestIpcStaged   c                 h   [         R                  " S[         R                  S9n[        R                  " U5      n[
        R                  " S5      nUR                  5       n[        R                  " 5       nUR                  UR                  5      n[        R                  " U5      n[        R                  " U5      nU R                  UR                  S 5        [         R"                  (       a;  U R%                  UR&                  R(                  UR&                  R(                  5        O8U R%                  [+        UR&                  5      [+        UR&                  5      5        U R%                  UR,                  UR,                  5        [/        [1        [        R2                  5      5       H  n	XiU4n
UR5                  [6        U
S9nUR9                  5         UR;                  5       u  pUR=                  S5        U(       d  U R?                  U5        Mh  [         R@                  RC                  X5        M     g r;   )"r   rC   r   r   rD   rJ   rK   rL   r+   rE   rF   rg   rh   ri   rj   rk   r   rG   rl   r"   rH   rm   r#   rangelenr   rM   r   rN   rO   rS   rP   rQ   rR   )rT   r   rU   mpctxr   rV   rW   rq   rr   r   rA   rY   r   r   s                 r   test_stagedTestIpcStaged.test_staged   sv   ii"''*$ w'{{} ""$!!&//2ll4 \\#&
joot,  Z..779M9MNU:#4#45uT[[7IJ$))4  DII/Jl3D==(>T=JDJJL$((*IDIIaL		#

''1 0r'   c                 4   [        [        [        R                  5      5       H  n[        R
                  R                  S5      n[        R                  " U5      nUR                  5       n[        R                  " S5      nUR                  5       nXAU4nUR                  [        US9nUR                  5         UR                  5       u  pUR                  S5        U	(       d  U R!                  U
5        M  [        R"                  R%                  X*5        M     g )Nr<   r>   r?   rB   )r   r   r   r   r   randomrD   rE   rJ   rK   rL   rM   r   rN   rO   rS   rP   rQ   rR   )rT   r   r   rU   rW   rV   r   rA   rY   r   r   s              r   r   TestIpcStaged.test_ipc_array  s    DII/J))""2&C^^C(F((*D ..)C99;Ll3D;;&;$;GDJJL$((*IDIIaL		#

''1# 0r'   r   N)r   r   r   r   r   r   r   r   r'   r   r   r      s    
 2D2r'   r   c                       \ rS rSrS rSrg)TestIpcNotSupportedi-  c                 B   [         R                  " S[         R                  S9n[        R                  " U5      nU R                  [        5       nUR                  5         S S S 5        [        WR                  5      nU R                  SU5        g ! , (       d  f       N6= f)Nr<   r=   zOS does not support CUDA IPC)r   rC   r   r   rD   assertRaisesOSErrorrE   r3   	exceptionassertIn)rT   r   rU   raiseserrmsgs        r   test_unsupported$TestIpcNotSupported.test_unsupported0  sm    ii"''*$w'6!!# (V%%&4f= ('s   B
Br   N)r   r   r   r   r   r   r   r'   r   r   r   -  s    >r'   r   __main__) multiprocessingrJ   r_   r   rg   numpyr   numbar   numba.cuda.cudadrvr   numba.cuda.testingr   r   r   r   r	   numba.tests.supportr
   r   unittestr   r&   r.   r6   r8   r   r   r   r   r   mainr   r'   r   <module>r      s         %H H 9 "11"2 /0/056n5, n5 7 1 1 n5b1 "4 /0/05652, 52 7 1 1 52p /0>2 > 1 > zMMO r'   