+
    :iJ                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
 ^ RIHtHtHtHtHtHt ^ RIHt ^ RIHtHt ]! R4       ! R R	]]4      4       t]! R4       ! R
 R]]4      4       tR t]! R4       ! R R]]4      4       tR t]! R4       ! R R]]4      4       t]! R4       ! R R]4      4       tR# )    N)cuda)NumbaWarning)CUDATestCaseskip_on_cudasimskip_unless_cc_60skip_if_cudadevrt_missingskip_if_mvc_enabledtest_data_dir)SerialMixin)DispatcherCacheUsecasesTestskip_bad_accessz$Simulator does not implement cachingc                     a  ] tR t^t o ]P
                  P                  ]4      t]P
                  P                  ]R4      t
RtR tR tR tR tR tR tR	 tR
 tR tR t]]]! R4      R 4       4       4       t]]]! R4      R 4       4       4       tR t]]P<                  ! ]P>                  R8H  R4      R 4       4       t ]]P<                  ! ]P>                  R8H  R4      R 4       4       t!R t"Rt#V t$R# )CUDACachingTestcache_usecases.pycuda_caching_test_fodderc                ^    \         P                  ! V 4       \        P                  ! V 4       R # Nr   setUpr   selfs   &b/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/cuda/tests/cudapy/test_caching.pyr   CUDACachingTest.setUp       #))$/4     c                ^    \         P                  ! V 4       \        P                  ! V 4       R # r   r   tearDownr   r   s   &r   r   CUDACachingTest.tearDown       d##,,T2r   c                   V P                  ^ 4       V P                  4       pV P                  ^ 4       VP                  pV P                  V! ^^4      ^4       V P                  ^4       V P                  V! R^4      R4       V P                  ^4       V P	                  VP
                  ^ ^4       VP                  pV! VP                  ^4      pV P                  \        V4      R4       VP                  pV! VP                  ^4      pV P                  \        V4      R4       V P                  ^4       V P	                  VP
                  ^ ^4       V P                  4        R# )r         @      @N   g     E@)check_pycacheimport_moduleadd_usecaseassertPreciseEqual
check_hitsfuncrecord_return_alignedaligned_arrtuplerecord_return_packed
packed_arrrun_in_separate_process)r   modfrecs   &   r   test_cachingCUDACachingTest.test_caching!   s   1  "1OO!Q+1#q	3/11%%%#c
I6$$"c
I611% 	$$&r   c                    V P                  4       pVP                  pV P                  V! ^^4      ^4       V P                  ^ 4       R# r%   N)r'   add_nocache_usecaser)   r&   r   r2   r3   s   &  r   test_no_cachingCUDACachingTest.test_no_caching:   s?      "##!Q+1r   c                    V P                  ^ 4       V P                  4       pVP                  pVR,          ! 4        V P                  ^4       R# )r   N)   r>   )r&   r'   many_localsr:   s   &  r   test_many_locals CUDACachingTest.test_many_localsA   s@     	1  "OO	$	1r   c                   V P                  4       p\        P                  ! 4       ;_uu_ 4        \        P                  ! R \        4       VP
                  pV P                  V! ^4      ^4       VP                  pV P                  V! ^4      ^4       VP                  pV P                  V! ^4      ^
4       VP                  pV P                  V! ^4      ^4       V P                  ^4       RRR4       R#   + '       g   i     R# ; i)errorN)r'   warningscatch_warningssimplefilterr   closure1r)   closure2closure3closure4r&   r:   s   &  r   test_closureCUDACachingTest.test_closureM   s      "$$&&!!'<8A##AaD!,A##AaD!,A##AaD"-A##AaD"-q! '&&&s   B=C55D	c                H   V P                  4       pVP                  ^^4       VP                  RR4       VP                  ^^4       VP                  ^^4       VP	                  VP
                  ^ 4       VP                  VP                  ^4       VP                  ^4       V P                  4       pV P                  VP                  P                  ^ ^4       V P                  4       pV P                  W4       VP                  pV! ^^4       V P                  VP                  ^^ 4       V! RR4       V P                  VP                  ^^ 4       V P                  V P                  4       V4       V P                  4        V P                  V P                  4       V4       R# )r%   r"   g      @N)r'   r(   outer_uncachedouterr/   r0   r,   r-   simple_usecase_callerget_cache_mtimesr*   r+   assertIsNotassertEqualr1   )r   r2   mtimesmod2r3   s   &    r   test_cache_reuse CUDACachingTest.test_cache_reuse]   sH     "1S!1a 		!Q  3!!#//15!!!$&&(,,a3!!##	!Q1%	#s1% 	..0&9$$&..0&9r   c                p   V P                  4       pVP                  pV P                  V! ^^4      ^4       \        V P                  R4      ;_uu_ 4       pVP                  R4       RRR4       V P                  4       pVP                  pV P                  V! ^^4      ^4       R#   + '       g   i     LG; i)r%   az
Z = 10
N)r'   r(   r)   openmodfilewriter:   s   &  r   test_cache_invalidate%CUDACachingTest.test_cache_invalidatex   s      "OO!Q+ $,,$$GGL! %   "OO!Q, %$s   B%%B5	c                   V P                  4       pVP                  pV P                  V! ^^4      ^4       V P                  4       pVP                  p^
Vn        V P                  V! ^^4      ^4       VP                  P                  4        V P                  V! ^^4      ^4       V P                  4       pVP                  pV P                  V! ^^4      ^4       R# r8   )r'   r(   r)   Zr+   	recompiler:   s   &  r   test_recompileCUDACachingTest.test_recompile   s      "OO!Q+  "OO!Q+	!Q,   "OO!Q,r   c                    V P                  4       pVP                  pV P                  V! ^4      ^4       VP                  pV P                  V! ^4      ^4       R# r8   )r'   renamed_function1r)   renamed_function2r:   s   &  r   test_same_namesCUDACachingTest.test_same_names   sN      "!!!a(!!!a(r   zCG not supported with MVCc                    V P                  ^ 4       V P                  4       pV P                  ^ 4       VP                  ^ 4       V P                  ^4       V P                  4        R# )r   N)r&   r'   
cg_usecaser1   )r   r2   s   & r   test_cache_cgCUDACachingTest.test_cache_cg   sV     	1  "1q1 	$$&r   c           	        V P                  ^ 4       R\        V P                  V P                  R7      ,          p\        P
                  ! \        P                  RV.\        P                  \        P                  R7      pVP                  ^<R7      w  r4VP                  ^ 8w  d?   \        RVP                  : RVP                  4       : RVP                  4       : R	24      hR
# )r   zif 1:
            import sys

            sys.path.insert(0, %(tempdir)r)
            mod = __import__(%(modname)r)
            mod.cg_usecase(0)
            )tempdirmodnamez-c)stdoutstderr)timeoutzprocess failed with code z: 
stdout follows
z
stderr follows

N)r&   dictrn   ro   
subprocessPopensys
executablePIPEcommunicate
returncodeAssertionErrordecode)r   codepopenouterrs   &    r   test_cache_cg_clean_run'CUDACachingTest.test_cache_cg_clean_run   s     	1 t||T\\BC   #..$!=(2(29 $$R$0q   ##SZZ\3::<A  !r   c                   V P                  4       pVP                  pV P                  \        P                  VP
                  P                  P                  RR7       V P                  V! ^^4      ^4       V P                  VP
                  ^ ^4       V P                  4       pVP                  pV P                  V! ^^4      ^4       V P                  VP
                  ^^ 4       V P                  ^ 4       R# )za
With a disabled __pycache__, test there is a working fallback
(e.g. on the user-wide cache dir)
T)ignore_errorsN)r'   r(   
addCleanupshutilrmtreer+   stats
cache_pathr)   r*   r&   )r   r2   r3   rU   s   &   r   _test_pycache_fallback&CUDACachingTest._test_pycache_fallback   s    
   "OO 	qvv||'>'>&* 	 	, 	!Q+1% !!#!Q+1% 	1r   ntz3cannot easily make a directory read-only on Windowsc                   \         P                  ! V P                  4      P                  p\         P                  ! V P                  R 4       V P                  \         P                  V P                  V4       V P                  4        R# )@  N)osstatrn   st_modechmodr   r   )r   	old_permss   & r   test_non_creatable_pycache*CUDACachingTest.test_non_creatable_pycache   sR    
 GGDLL)11	
u%$,,	:##%r   c                T   \         P                  P                  V P                  R 4      p\         P                  ! V4       \         P
                  ! V4      P                  p\         P                  ! VR4       V P                  \         P                  W4       V P                  4        R# )__pycache__r   N)
r   pathjoinrn   mkdirr   r   r   r   r   )r   pycacher   s   &  r   test_non_writable_pycache)CUDACachingTest.test_non_writable_pycache   sh    
 '',,t||];
GGG$,,	
% '5##%r   c                    \        \        R ,          4      pRpV P                  \        V4      ;_uu_ 4        \        P
                  ! RRV.R7      R 4       pRRR4       R#   + '       g   i     R# ; i)zjitlink.ptxz0Cannot pickle CUDACodeLibrary with linking fileszvoid()T)cachelinkc                      R # r    r   r   r   r3   >CUDACachingTest.test_cannot_cache_linking_libraries.<locals>.f  s    r   N)strr
   assertRaisesRegexRuntimeErrorr   jit)r   r   msgr3   s   &   r   #test_cannot_cache_linking_libraries3CUDACachingTest.test_cannot_cache_linking_libraries   sY    ==01@##L#66XXhd$8 9 7666s   !A""A3	r   N)%__name__
__module____qualname____firstlineno__r   r   dirname__file__herer   usecases_filero   r   r   r5   r;   r@   rK   rV   r]   rb   rg   r   r   r	   rk   r   r   r   unittestskipIfnamer   r   r   __static_attributes____classdictcell____classdict__s   @r   r   r      s.    77??8$DGGLL':;M(G!3'2
" :6--$) 45' 6  ' 45 6  84 __RWW_JL&L & __RWW_JL&L & r   r   c                      a  ] tR tRt o ]P
                  P                  ]4      t]P
                  P                  ]R4      t
RtR tR tR tR tRtV tR	# )
CUDAAndCPUCachingTesti	  zcache_with_cpu_usecases.py cuda_and_cpu_caching_test_fodderc                ^    \         P                  ! V 4       \        P                  ! V 4       R # r   r   r   s   &r   r   CUDAAndCPUCachingTest.setUp  r   r   c                ^    \         P                  ! V 4       \        P                  ! V 4       R # r   r   r   s   &r   r   CUDAAndCPUCachingTest.tearDown  r    r   c                   V P                  ^ 4       V P                  4       pV P                  ^ 4       VP                  pVP                  pV P	                  V! ^4      ^4       V P                  ^4       V P	                  V! ^4      ^4       V P                  ^4       V P                  VP                  ^ ^4       V P                  VP                  ^ ^4       V P	                  V! R4      R4       V P                  ^4       V P	                  V! R4      R4       V P                  ^4       V P                  VP                  ^ ^4       V P                  VP                  ^ ^4       R# )r         @N)r&   r'   
assign_cpuassign_cudar)   r*   r+   )r   r2   f_cpuf_cudas   &   r   test_cpu_and_cuda_targets/CUDAAndCPUCachingTest.test_cpu_and_cuda_targets  s    	1  "1a!,1q	1-1

Aq)Q*c
C01sS11

Aq)Q*r   c                   V P                  4       pVP                  ^4       VP                  R4       VP                  ^4       VP                  R4       V P                  4       pV P	                  VP                  P
                  ^ ^4       V P	                  VP                  P
                  ^ ^4       V P                  4       pV P                  W4       VP                  pVP                  pV! ^4       V P	                  VP
                  ^^ 4       V! R4       V P	                  VP
                  ^^ 4       V! ^4       V P	                  VP
                  ^^ 4       V! R4       V P	                  VP
                  ^^ 4       V P                  V P                  4       V4       V P                  4        V P                  V P                  4       V4       R# )   r   r"   N)	r'   r   r   rQ   r*   r+   rR   rS   r1   )r   r2   rT   rU   r   r   s   &     r   test_cpu_and_cuda_reuse-CUDAAndCPUCachingTest.test_cpu_and_cuda_reuse0  s`     "qs&&( 	++Q2,,a3!!##!!a

Aq)c


Aq)q	Q*sQ* 	..0&9$$&..0&9r   r   N)r   r   r   r   r   r   r   r   r   r   r   ro   r   r   r   r   r   r   r   s   @r   r   r   	  sJ     77??8$DGGLL'CDM0G!3+2 :  :r   r   c                     \         P                  ^ ,          p V ;_uu_ 4        \         P                  ! 4       P                  P                  pRRR4       \         P                  R,           FV  pT;_uu_ 4        \         P                  ! 4       P                  P                  pVX8w  d   W3uuRRR4       u #  RRR4       KX  	  R#   + '       g   i     L; i  + '       g   i     K  ; i)r   N:r>   NN)r   gpuscurrent_contextdevicecompute_capability)	first_gpufirst_ccgpuccs       r   get_different_cc_gpusr   S  s     		!I	'')00CC 
 yy}}S%%'..AABX~!' S S   
 SSs   *C83CC	C+c                      a  ] tR tRt o ]P
                  P                  ]4      t]P
                  P                  ]R4      t
RtR tR tR tRtV tR# )	TestMultiCCCachingid  r   !cuda_multi_cc_caching_test_fodderc                ^    \         P                  ! V 4       \        P                  ! V 4       R # r   r   r   s   &r   r   TestMultiCCCaching.setUpj  r   r   c                ^    \         P                  ! V 4       \        P                  ! V 4       R # r   r   r   s   &r   r   TestMultiCCCaching.tearDownn  r    r   c                   \        4       pV'       g   V P                  R 4       V P                  ^ 4       V P                  4       pV P                  ^ 4       V^ ,          ;_uu_ 4        VP                  pV P                  V! ^^4      ^4       V P                  ^4       V P                  V! R^4      R4       V P                  ^4       V P                  VP                  ^ ^4       VP                  pV! VP                  ^4      pV P                  \        V4      R4       VP                  pV! VP                  ^4      pV P                  \        V4      R4       V P                  ^4       V P                  VP                  ^ ^4       RRR4       V^,          ;_uu_ 4        VP                  pV P                  V! ^^4      ^4       V P                  ^4       V P                  V! R^4      R4       V P                  ^4       V P                  VP                  ^ ^4       VP                  pV! VP                  ^4      pV P                  \        V4      R4       VP                  pV! VP                  ^4      pV P                  \        V4      R4       V P                  ^4       V P                  VP                  ^ ^4       RRR4       V P                  4       pV P                  W%4       V^,          ;_uu_ 4        VP                  pV P                  V! ^^4      ^4       V P                  ^4       V P                  V! R^4      R4       V P                  ^4       V P                  VP                  ^ ^4       VP                  pV! VP                  ^4      pV P                  \        V4      R4       VP                  pV! VP                  ^4      pV P                  \        V4      R4       V P                  ^
4       V P                  VP                  ^ ^4       RRR4       V P                  4       pV P                  W&4       V^,          ;_uu_ 4        VP                  pV P                  V! ^^4      ^4       V P                  V! R^4      R4       VP                  pV! VP                  ^4      pV P                  \        V4      R4       VP                  pV! VP                  ^4      pV P                  \        V4      R4       RRR4       V^ ,          ;_uu_ 4        VP                  pV P                  V! ^^4      ^4       V P                  V! R^4      R4       VP                  pV! VP                  ^4      pV P                  \        V4      R4       VP                  pV! VP                  ^4      pV P                  \        V4      R4       RRR4       R#   + '       g   i     EL_; i  + '       g   i     EL:; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     R# ; i)z.Need two different CCs for multi-CC cache testr"   r#   Nr$   )r   skipTestr&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   rR   )r   r   r2   r3   r4   rU   mod3s   &      r   
test_cacheTestMultiCCCaching.test_cacher  s   $&MMJK1  "1 !WWA##AaGQ/q!##Ac1Is3q!OOAFFAq)))ACOOQ'C##E#J	:((ACNNA&C##E#J	:q!OOAFFAq)! ( !WWA##AaGQ/q!##Ac1Is3q!OOAFFAq)))ACOOQ'C##E#J	:((ACNNA&C##E#J	:q!OOAFFAq)! ( !!##!WW  A##AaGQ/q!##Ac1Is3q!OOAFFAq)**ACOOQ'C##E#J	:))ACNNA&C##E#J	:r"OOAFFAq)! 0 !!## !WW  A##AaGQ/##Ac1Is3**ACOOQ'C##E#J	:))ACNNA&C##E#J	:  !WW  A##AaGQ/##Ac1Is3**ACOOQ'C##E#J	:))ACNNA&C##E#J	: Wo WW( WW. WW: WW WWsA   'D W D W1:D XB3X B3X-W.	1X	X	X*	-X>	r   N)r   r   r   r   r   r   r   r   r   r   r   ro   r   r   r   r   r   r   s   @r   r   r   d  sG     77??8$DGGLL':;M1G!3l; l;r   r   c                  .    ^ RI Hp  ^ V n        ^ V n        R# )r   configN)
numba.corer   CUDA_LOW_OCCUPANCY_WARNINGSCUDA_WARN_ON_IMPLICIT_COPYr   s    r   child_initializerr     s     ")*F&()F%r   c                      a  ] tR tRt o Rt]P                  P                  ]4      t	]P                  P                  ]	R4      tRtR tR tR tRtV tR	# )
TestMultiprocessCachei  Fr   cuda_mp_caching_test_fodderc                ^    \         P                  ! V 4       \        P                  ! V 4       R # r   r   r   s   &r   r   TestMultiprocessCache.setUp  r   r   c                ^    \         P                  ! V 4       \        P                  ! V 4       R # r   r   r   s   &r   r   TestMultiprocessCache.tearDown  r    r   c                   V P                  4       pVP                  p^p \        P                  ! R4      pVP                  V\        4      p \        VP                  V\        V4      4      4      pVP                  4        V P                  WcV^,
          ,          ^,          4       R#   \         d
    \        p Li ; i  TP                  4        i ; i)   spawnN)r'   rP   multiprocessingget_contextAttributeErrorPoolr   sumimaprangecloserS   )r   r2   r3   nctxpoolress   &      r   test_multiprocessing*TestMultiprocessCache.test_multiprocessing  s      " %%	"!--g6C xx,-	dii58,-CJJL1q5kQ./  	"!C	" JJLs   B) $C  )B=<B= Cr   N)r   r   r   r   _numba_parallel_test_r   r   r   r   r   r   r   ro   r   r   r  r   r   r   s   @r   r   r     sM     
 "77??8$DGGLL':;M+G!30 0r   r   z0Simulator does not implement the CUDACodeLibraryc                   &   a  ] tR tRt o R tRtV tR# )TestCUDACodeLibraryi  c                    ^ RI Hp \        4       pRpV! W#4      pV P                  \        R4      ;_uu_ 4        VP                  4        RRR4       R#   + '       g   i     R# ; i)r   )CUDACodeLibrarylibraryzCannot pickle unfinalizedN)numba.cuda.codegenr  objectr   r   _reduce_states)r   r  codegenr   cls   &    r   !test_cannot_serialize_unfinalized5TestCUDACodeLibrary.test_cannot_serialize_unfinalized  sO     	7 (W+##L2MNN ONNNs   AA%	r   N)r   r   r   r   r  r   r   r   s   @r   r  r    s     
   r   r  )r   r   r   ru   rw   r   rD   numbar   numba.core.errorsr   numba.cuda.testingr   r   r   r   r	   r
   numba.tests.supportr   numba.tests.test_cachingr   r   r   r   r   r   r   r   r  r   r   r   <module>r     s     	   
    *D D ,7 78rk#> r 9rj 78F:K)D F: 9F:R" 78y;&A y; 9y;x* 78$0K)D $0 9$0N CD ,   E r   