
    shs                         S SK rS SKJrJr  S SKJrJrJr  S SK	J
r
  S SKJrJr  S SKJrJr  S SKJr  \" S5      \\" S	5       " S
 S\5      5       5       5       r\S:X  a  \R(                  " 5         gg)    N)byrefc_size_t)device_memsetdriverUSE_NV_BINDING)cuda)unittestContextResettingTestCase)skip_on_cudasimskip_on_arm)
linux_onlyz,CUDA Driver API unsupported in the simulatorz5Managed Alloc support is experimental/untested on ARMc                   p    \ rS rSrS rS rS r\R                  S 5       r	S r
SS jrSS jrS	 rS
 rSrg)TestManagedAlloc
   c                     [         (       a  [        R                  " 5       u  pU$ [        5       n[        5       n[        R                  " [	        U5      [	        U5      5        UR
                  $ N)r   r   cuMemGetInfor   r   value)selffreetotals      /Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cuda/tests/cudadrv/test_managed_alloc.pyget_total_gpu_memory%TestManagedAlloc.get_total_gpu_memory   sN     > --/KDL:DJEdU5\:;;    c                     [         R                  " 5       nUR                  R                  S   nXA:  a  U R	                  U5        gg)z\
Skip the current test if the compute capability of the device is
less than `min_required`.
r   N)r   current_contextdevicecompute_capabilityskipTest)r   min_requiredreasonctxcc_majors        r   skip_if_cc_major_lt$TestManagedAlloc.skip_if_cc_major_lt   s=    
 ""$::003"MM&! #r   c                 N    SnU R                  SU5        U R                  S5        g )Nz*Managed memory unsupported prior to CC 3.0   g      ?r%   _test_managed_alloc_driverr   msgs     r   (test_managed_alloc_driver_undersubscribe9TestManagedAlloc.test_managed_alloc_driver_undersubscribe0   s%    :  C('',r   c                 N    SnU R                  SU5        U R                  S5        g )Nz>Oversubscription of managed memory unsupported prior to CC 6.0   g       @r)   r+   s     r   'test_managed_alloc_driver_oversubscribe8TestManagedAlloc.test_managed_alloc_driver_oversubscribe=   s%    N  C('',r   c                 L    SnU R                  SU5        U R                  SSS9  g )N>Host attached managed memory is not accessible prior to CC 6.0r0   g{Gz?Fattach_globalr)   r+   s     r   %test_managed_alloc_driver_host_attach6TestManagedAlloc.test_managed_alloc_driver_host_attachC   s,    N  C( 	''E'Br   c                    U R                  5       n[        X-  5      n[        R                  " 5       nUR	                  XBS9n[
        R                  " [
        R                  5      nXGR                  -  n[
        R                  " XUS9n	Sn
[        XjU5        UR                  5         U R                  [
        R                  " X:H  5      5        g )Nr5   )shapedtypebuffer   )r   intr   r   memallocmanagednpr;   uint8itemsizendarrayr   synchronize
assertTrueall)r   memory_factorr6   total_mem_sizen_bytesr#   memr;   n_elemsarymagics              r   r*   +TestManagedAlloc._test_managed_alloc_driverJ   s     224m45""$!!'!G"^^+jjwC@c'* 	s|,-r   c                 t   [         R                  " S[        R                  S9nUR	                  S5        U R                  [        US:H  5      5        [         R                  " S5      S 5       nUS   " U5        [         R                  " 5       R                  5         U R                  [        US:H  5      5        g )Nd   )r;   gw/^@zvoid(double[:])c                 ^    [         R                  " S5      nXR                  S   :  a  SX'   g g )N   r         ?)r   gridr:   )xis     r   kernel4TestManagedAlloc._test_managed_array.<locals>.kerneli   s(    		!A771:~ r   )r   r   rS   )
r   managed_arrayr@   doublefillrE   rF   jitr   rD   )r   r6   rL   rW   s       r   _test_managed_array$TestManagedAlloc._test_managed_arrayb   s       BII6C7N+,	#	$	 
%	
 	vs**,C3J(r   c                 $    U R                  5         g r   )r]   )r   s    r    test_managed_array_attach_global1TestManagedAlloc.test_managed_array_attach_globalt   s      "r   c                 j    U R                  5         SnU R                  SU5        U R                  SS9  g )Nr4   r0   Fr5   )r]   r%   r+   s     r   test_managed_array_attach_host/TestManagedAlloc.test_managed_array_attach_hostw   s4      "N  C(  u 5r    N)T)__name__
__module____qualname____firstlineno__r   r%   r-   r	   skipr1   r7   r*   r]   r`   rc   __static_attributes__re   r   r   r   r   
   sC    
"(- ]]- -
C.0)$#6r   r   __main__)numpyr@   ctypesr   r   numba.cuda.cudadrv.driverr   r   r   numbar   numba.cuda.testingr	   r
   r   r   numba.tests.supportr   r   rf   mainre   r   r   <module>rt      ss     " K K  A ; * ?@DEn6/ n6 F  An6b zMMO r   