
    `is                        d dl Zd dlmZmZ d dlmZmZmZ d dl	m
Z
 d dlmZmZ d dlmZmZ d dlmZ  ed          e ed	           G d
 de                                              Zedk    r ej                     dS dS )    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                   b    e Zd Zd Zd Zd Zej        d             Zd Z	ddZ
ddZd	 Zd
 ZdS )TestManagedAllocc                     t           rt          j                    \  }}|S t                      }t                      }t          j        t	          |          t	          |                     |j        S N)r   r   cuMemGetInfor   r   value)selffreetotals      /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/numba/cuda/tests/cudadrv/test_managed_alloc.pyget_total_gpu_memoryz%TestManagedAlloc.get_total_gpu_memory   s\      	 -//KD%L::DJJEdU5\\:::;    c                     t          j                    }|j        j        d         }||k     r|                     |           dS dS )zt
        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_ltz$TestManagedAlloc.skip_if_cc_major_lt   sL    
 "$$:03l""MM&!!!!! #"r   c                 `    d}|                      d|           |                     d           d S )Nz*Managed memory unsupported prior to CC 3.0   g      ?r#   _test_managed_alloc_driverr   msgs     r   (test_managed_alloc_driver_undersubscribez9TestManagedAlloc.test_managed_alloc_driver_undersubscribe0   s7    :  C((('',,,,,r   c                 `    d}|                      d|           |                     d           d S )Nz>Oversubscription of managed memory unsupported prior to CC 6.0   g       @r&   r(   s     r   'test_managed_alloc_driver_oversubscribez8TestManagedAlloc.test_managed_alloc_driver_oversubscribe=   s7    N  C((('',,,,,r   c                 d    d}|                      d|           |                     dd           d S )N>Host attached managed memory is not accessible prior to CC 6.0r,   g{Gz?Fattach_globalr&   r(   s     r   %test_managed_alloc_driver_host_attachz6TestManagedAlloc.test_managed_alloc_driver_host_attachC   s>    N  C((( 	''E'BBBBBr   Tc                    |                                  }t          ||z            }t          j                    }|                    ||          }t          j        t
          j                  }||j        z  }t          j	        |||          }	d}
t          ||
|           |                                 |                     t          j        |	|
k                         d S )Nr0   )shapedtypebuffer   )r   intr   r   memallocmanagednpr5   uint8itemsizendarrayr   synchronize
assertTrueall)r   memory_factorr1   total_mem_sizen_bytesr!   memr5   n_elemsarymagics              r   r'   z+TestManagedAlloc._test_managed_alloc_driverJ   s     2244mn455"$$!!'!GG""U^+jweC@@@c5'*** 	se|,,-----r   c                    t          j        dt          j                  }|                    d           |                     t          |dk                         t          j        d          d             } |d         |           t          j                    	                                 |                     t          |dk                         d S )Nd   )r5   gw/^@zvoid(double[:])c                 ^    t          j        d          }|| j        d         k     rd| |<   d S d S )N   r         ?)r   gridr4   )xis     r   kernelz4TestManagedAlloc._test_managed_array.<locals>.kerneli   s2    	!A171:~~! ~r   )
   rQ   rL   )
r   managed_arrayr:   doublefillr?   r@   jitr   r>   )r   r1   rF   rP   s       r   _test_managed_arrayz$TestManagedAlloc._test_managed_arrayb   s      BI666C7N++,,,	#	$	$	 	 
%	$	
 	vs**,,,C3J(((((r   c                 .    |                                   d S r   )rV   )r   s    r    test_managed_array_attach_globalz1TestManagedAlloc.test_managed_array_attach_globalt   s      """""r   c                     |                                   d}|                     d|           |                      d           d S )Nr/   r,   Fr0   )rV   r#   r(   s     r   test_managed_array_attach_hostz/TestManagedAlloc.test_managed_array_attach_hostw   sL      """N  C(((  u 55555r   N)T)__name__
__module____qualname__r   r#   r*   r	   skipr-   r2   r'   rV   rX   rZ    r   r   r   r   
   s        
  " " "(- - - ]- - ]-
C C C. . . .0) ) ) )$# # #6 6 6 6 6r   r   __main__)numpyr:   ctypesr   r   numba.cuda.cudadrv.driverr   r   r   numbar   numba.cuda.testingr	   r
   r   r   numba.tests.supportr   r   r[   mainr_   r   r   <module>rh      s/       " " " " " " " " K K K K K K K K K K       A A A A A A A A ; ; ; ; ; ; ; ; * * * * * * ?@@DEEn6 n6 n6 n6 n6/ n6 n6 FE  A@n6b zHMOOOOO r   