
    sh                      J   S SK Jr  S SKrS SKJr  S SKJrJrJ	r	J
r
  S SKJr  S SKJr  \" S5      \	" S5       " S	 S
\
5      5       5       r\" S5      \	" S5       " S S\
5      5       5       r " S S\
5      r\" S5       " S S\
5      5       r\S:X  a  \R(                  " 5         gg)    )contextmanagerN)cuda)unittestskip_on_cudasimskip_if_external_memmgrCUDATestCase)captured_stderr)configznot supported on CUDASIMz0Deallocation specific to Numba memory managementc                        \ rS rSrS rS rSrg)TestDeallocation   c                    [         R                  " 5       R                  R                  nUR	                  5         U R                  [        U5      S5        [        [        R                  5       HK  n[         R                  " [        R                  " S5      5        U R                  [        U5      US-   5        MM     [         R                  " [        R                  " S5      5        U R                  [        U5      S5        g )Nr      )r   current_contextmemory_managerdeallocationsclearassertEquallenranger
   CUDA_DEALLOCS_COUNT	to_devicenparange)selfdeallocsis      /Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cuda/tests/cudadrv/test_deallocations.pytest_max_pending_count'TestDeallocation.test_max_pending_count   s    '')88FFX*v112ANN299Q<(S]AE2 3 	ryy|$X*    c                    [         R                  " 5       nUR                  R                  nUR	                  5         U R                  [        U5      S5        UR                  5       nSn[        R                  n XCR                  -  [        l	        U R                  UR                  USS9  [         R                  " [        R                  " US-  [        R                   S95        U R                  [        U5      S5        [         R                  " [        R                  " UR                  UR"                  -
  [        R                   S95        U R                  [        U5      S5        [         R                  " [        R                  " S[        R                   S95        U R                  [        U5      S5        U[        l	        g ! U[        l	        f = f)Nr   i@B r   )delta   )dtype)r   r   r   r   r   r   r   get_memory_infor
   CUDA_DEALLOCS_RATIOtotalassertAlmostEqual_max_pending_bytesr   r   onesint8_size)r   ctxr   mimax_pending	old_ratios         r   test_max_pending_bytes'TestDeallocation.test_max_pending_bytes   sW   ""$%%33X*  "..		3)4xx)?F& ""8#>#>)* # ,
 NN277;!#3277CDS]A. NN2778#>#>#+>>$29;B CS]A. NN2771BGG45S]A. *3F&F&s   :EG G N)__name__
__module____qualname____firstlineno__r   r2   __static_attributes__r4   r!   r   r   r      s    +#3r!   r   z&defer_cleanup has no effect in CUDASIMc                   &    \ rS rSrS rS rS rSrg)TestDeferCleanupB   c                    [         R                  " S5      n[        R                  " U5      n[        R                  " 5       R
                  R                  nUR                  5         U R                  [        U5      S5        [        R                  " 5          [        R                  " U5      nAU R                  [        U5      S5        AU R                  [        U5      S5        UR                  5         U R                  [        U5      S5        S S S 5        UR                  5         U R                  [        U5      S5        g ! , (       d  f       N:= fN   r   r   r$   r   r   r   r   r   r   r   r   r   r   defer_cleanupr   harrdarr1r   darr2s        r   
test_basicTestDeferCleanup.test_basicE   s    yy|t$'')88FFX*!NN4(ES]A.S]A.NNS]A. " 	X* "!s   A:E
Ec                 ^   [         R                  " S5      n[        R                  " U5      n[        R                  " 5       R
                  R                  nUR                  5         U R                  [        U5      S5        [        R                  " 5          [        R                  " 5          [        R                  " U5      nAU R                  [        U5      S5        AU R                  [        U5      S5        UR                  5         U R                  [        U5      S5        S S S 5        UR                  5         U R                  [        U5      S5        S S S 5        UR                  5         U R                  [        U5      S5        g ! , (       d  f       Nm= f! , (       d  f       NK= fr>   r@   rB   s        r   test_nestedTestDeferCleanup.test_nestedW   s#   yy|t$'')88FFX*!##%t,  X2  X2   X2 & NNS]A. " 	X* &% "!s%   F,A:F&3F
F	F
F,c                 l   [         R                  " S5      n[        R                  " U5      n[        R                  " 5       R
                  R                  nUR                  5         U R                  [        U5      S5         " S S[        5      nU R                  U5         [        R                  " 5          [        R                  " U5      nAU R                  [        U5      S5        UR                  5         U R                  [        U5      S5        Ue! , (       d  f       O= f S S S 5        O! , (       d  f       O= fUR                  5         U R                  [        U5      S5        AU R                  [        U5      S5        UR                  5         U R                  [        U5      S5        g )Nr?   r   c                       \ rS rSrSrg)4TestDeferCleanup.test_exception.<locals>.CustomErrors   r4   Nr5   r6   r7   r8   r9   r4   r!   r   CustomErrorrM   s       r!   rP   r   )r   r   r   r   r   r   r   r   r   r   	ExceptionassertRaisesrA   )r   rC   rD   r   rP   rE   s         r   test_exceptionTestDeferCleanup.test_exceptionl   s3   yy|t$'')88FFX*	) 	 {+##%t,  X2   X2!! &%% ,++ 	X*X*X*s   !D27A D
D%	!D22
E r4   N)r5   r6   r7   r8   rF   rI   rT   r9   r4   r!   r   r;   r;   B   s    +$+*+r!   r;   c                       \ rS rSrS rSrg)TestDeferCleanupAvail   c                 d    [         R                  " 5           S S S 5        g ! , (       d  f       g = fN)r   rA   )r   s    r   test_context_manager*TestDeferCleanupAvail.test_context_manager   s    ! "!!s   !
/r4   N)r5   r6   r7   r8   r[   r9   r4   r!   r   rW   rW      s    r!   rW   c                   X    \ rS rSrSr\S 5       rS rS rS r	S r
S rS	 rS
 rS rSrg)TestDel   zB
Ensure resources are deleted properly without ignored exception.
c              #      #    [        5        nS v   UR                  R                  5         S S S 5        U R                  WR	                  5       5        g ! , (       d  f       N.= f7frZ   )r	   r   r   assertFalsegetvalue)r   r.   caps      r   check_ignored_exceptionTestDel.check_ignored_exception   sE     ###%  	( s   A%A(A%
A"A%c                     [         R                  " 5       nUR                  5       nU R                  U5         AS S S 5        g ! , (       d  f       g = frZ   )r   r   create_streamrd   )r   r.   streams      r   test_streamTestDel.test_stream   s;    ""$""$))#. /..   A
Ac                     [         R                  " 5       nUR                  5       nU R                  U5         AS S S 5        g ! , (       d  f       g = frZ   )r   r   create_eventrd   )r   r.   events      r   
test_eventTestDel.test_event   s;    ""$  "))#. /..rk   c                     [         R                  " 5       nUR                  S5      nU R                  U5         AS S S 5        g ! , (       d  f       g = fN    r   r   memhostallocrd   r   r.   mems      r   test_pinned_memoryTestDel.test_pinned_memory   s=    ""$r"))#. /..   A
Ac                     [         R                  " 5       nUR                  SSS9nU R                  U5         AS S S 5        g ! , (       d  f       g = f)Nrs   T)mappedrt   rv   s      r   test_mapped_memoryTestDel.test_mapped_memory   sB    ""$r$/))#. /..rk   c                     [         R                  " 5       nUR                  S5      nU R                  U5         AS S S 5        g ! , (       d  f       g = frr   )r   r   memallocrd   rv   s      r   test_device_memoryTestDel.test_device_memory   s;    ""$ll2))#. /..rz   c                     [         R                  " 5       nUR                  S5      nU R                  U5         AS S S 5        g ! , (       d  f       g = frr   )r   r   memallocmanagedrd   rv   s      r   test_managed_memoryTestDel.test_managed_memory   s=    ""$!!"%))#. /..rz   c                     " S S[         5      n[        R                  " S5      n[        R                  " 5       nUR
                  R                  5         U R                  U5         [        R                  " U5          S S S 5        [        R                  " U5          S S S 5        [        R                  " 5          [        R                  " U5          S S S 5        [        R                  " U5          S S S 5        S S S 5         [        R                  " U5         Ue! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nr= f! , (       d  f       Nc= f! , (       d  f       Nl= f! , (       d  f       OA= f! U a5    [        R                  " U5          S S S 5         O! , (       d  f        O= ff = fS S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrSrg);TestDel.test_pinned_contextmanager.<locals>.PinnedException   r4   NrO   r4   r!   r   PinnedExceptionr      rQ   r!   r   r   )
rR   r   zerosr   r   r   r   rd   pinnedrA   )r   r   arrr.   s       r   test_pinned_contextmanager"TestDel.test_pinned_contextmanager   /   	i 	 hhqk""$!))#.S! "S! " ##%[[% &[[% & &[[%)) "!!! &%%% &% &%" [[% &%%%! /..   &G=D?GD0G<E#EE#3E5E#=GFE4
D-	)G0
D>	:G
EE#
E E##
E1	-G4
F	>FGFG !F-#G +G-
F<7G :G<G  G
Gc                     " S S[         5      n[        R                  " S5      n[        R                  " 5       nUR
                  R                  5         U R                  U5         [        R                  " U5          S S S 5        [        R                  " U5          S S S 5        [        R                  " 5          [        R                  " U5          S S S 5        [        R                  " U5          S S S 5        S S S 5         [        R                  " U5         Ue! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nr= f! , (       d  f       Nc= f! , (       d  f       Nl= f! , (       d  f       OA= f! U a5    [        R                  " U5          S S S 5         O! , (       d  f        O= ff = fS S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrSrg);TestDel.test_mapped_contextmanager.<locals>.MappedException   r4   NrO   r4   r!   r   MappedExceptionr      rQ   r!   r   r   )
rR   r   r   r   r   r   r   rd   r|   rA   )r   r   r   r.   s       r   test_mapped_contextmanager"TestDel.test_mapped_contextmanager   r   r   r4   N)r5   r6   r7   r8   __doc__r   rd   ri   ro   rx   r}   r   r   r   r   r9   r4   r!   r   r^   r^      sC     ) ):r!   r^   __main__)
contextlibr   numpyr   numbar   numba.cuda.testingr   r   r   r   numba.tests.supportr	   
numba.corer
   r   r;   rW   r^   r5   mainr4   r!   r   <module>r      s    %  G G /  +,KL13| 13 M -13h 9:KL?+| ?+ M ;?+DL  +,gl g -gT zMMO r!   