
    ܙdsO                     ^   d dl Z d dlZd dlZd dlZd dlZd dlZ	 d dlZdZn# e$ r dZY nw xY wd dl	m
Z ej                             d          Zej                             d          Zej        dz  Zedk    Zej        dd         Zd	Zd
 Zd Zd Z G d de          Z e            Zd ZdS )    NTFwin32darwin          z.numba_config.yamlc                     | sdS t          j        d|           }|st          d          |                                }t	          |d                   t	          |d                   fS )z7
    Parse CUDA compute capability version string.
    Nz(\d+)\.(\d+)zdCompute capability must be specified as a string of "major.minor" where major and minor are decimalsr      )rematch
ValueErrorgroupsint)textmgrps      1lib/python3.11/site-packages/numba/core/config.py	_parse_ccr      so      	(tH_d++ 	7 6 7 7 7 hhjj3q6{{CAKK''    c                     t           j                            d          rt          j                    dvrdS 	 t	          dd          } n# t
          $ r Y dS w xY w| 5  | D ]W}|                    d          \  }}}|                                dk    r$d|                                v r d	d	d	           dS X	 d	d	d	           d
S # 1 swxY w Y   d	S )z
    Whether the current OS supports AVX, regardless of the CPU.

    This is necessary because the user may be running a very old Linux
    kernel (e.g. CentOS 5) on a recent CPU.
    linux)i386i586i686x86_64Tz/proc/cpuinfor:flagsavxNF)	sysplatform
startswithmachineopenOSError	partitionstripsplit)flinehead_bodys        r   _os_supports_avxr-   .   sV    L##G,, !!)KKKt#&&   tt 
   	 	D NN3//MD!Tzz||w&&5DJJLL+@+@	                         s*   A	 	
AAAC6CC	C	c                 T    t          |           }|dvrd| }t          |          |S )N)	new_style	old_stylez(Invalid style in NUMBA_CAPTURED_ERRORS: )strr   )	style_strrendered_stylemsgs      r   _validate_captured_errors_styler5   I   s?    ^^N777# # #oor   c                   .    e Zd Zd Zd ZddZd Zd ZdS )	_EnvReloaderc                 .    |                                   d S N)resetselfs    r   __init__z_EnvReloader.__init__U   s    

r   c                 @    i | _         |                     d           d S )NT)force)old_environupdater;   s    r   r:   z_EnvReloader.resetX   s$    $r   Fc                    i }t           j                            t                    rt           j                            t                    rt
          sd}t          j        |           nwt          t          d          5 }t          j
        |          }d d d            n# 1 swxY w Y   |4|                                D ]\  }}||d|                                z   <    t           j                                        D ]\  }}	|                    d          r|	||<    |s| j        |k    r)|                     |           t#          |          | _        |                                  d S )NzA Numba config file is found but YAML parsing capabilities appear to be missing. To use this feature please install `pyyaml`. e.g. `conda install pyyaml`.rtNUMBA_)ospathexists_config_fnameisfile
_HAVE_YAMLwarningswarnr#   yaml	safe_loaditemsupperenvironr!   r@   process_environdictvalidate)
r<   r?   new_environr4   r(   y_confkvnamevalues
             r   rA   z_EnvReloader.update\   s    7>>-(( 	>RW^^M-J-J 	> >1 c""""-.. /!!^A..F/ / / / / / / / / / / / / / /% & > >1<=Hqwwyy$899 :++-- 	* 	*KD%x(( *$)D!
  	1D$33  ---#K00Ds   >BB#&B#c                     t           r[	 dd l}n8# t          $ r+}d|j         d}t	          j        |           da Y d }~nd }~ww xY wt          rt	          j        d           d S d S d S )Nr   z}CUDA Python bindings requested (the environment variable NUMBA_CUDA_USE_NVIDIA_BINDING is set), but they are not importable: .FzPTDS support is handled by CUDA Python when using the NVIDIA binding. Please set the environment variable CUDA_PYTHON_CUDA_PER_THREAD_DEFAULT_STREAM to 1 instead.)CUDA_USE_NVIDIA_BINDINGcudaImportErrorr4   rK   rL   CUDA_PER_THREAD_DEFAULT_STREAM)r<   r^   ier4   s       r   rT   z_EnvReloader.validate}   s     # 	*0 0 0 0A79vA A A c"""*/''''''0 . * ) * * * * *	* 	** *s    
A!>Ac                 \   fd}d } |dt           d          } |dt           d          } |dt           |          } |dt           d          } |dt          d	          } |d
t           d           }	 |dt           d          }
 |dt           d          } |dt           d          } |dt           d          } |dt          d          } |dt          d          } |dt          d          } |dt           d          } |dt           d          } |dt           d          } |dt           d          } |dt           d          } |dt           d          } |dt           d          } |dt           |          } |dt          d          } |d t           d          } |d!t          d          } |d"t           d          } |d#|d           } |d$|t          |                                          d%k    rdnd           } |d&t           d'          } |d(t           |          }  |d)t           |          }! |d*t           |          }" |d+t           |p|          }# |d,t           d          }$ |d-t           d          }% |d.t           d          }& |d/t           d          }' |d0t           d          }( |d1t           |          }) |d2t           |          }* |d3t           |          }+ |d4t           t          ot                     }, |d5t           d          }- |d6t           |          }. |d7t           d          }/ |d8t           d          }0d9 }1 |d:|1d           }2d; }3 |d<t           |3          }4 |d=t           t                    }5 |d>t           d          }6 |d?d@ g dA          }7 |dBt          dC          }8 |dDt
          dE          }9 |dFt           d          }: |dGt          d           }; |dHt          dI          }< |dJt           t          t          dKk                        }= |dLt           d          }> |dMt          d          }? |dNt           d          }@ |dOt           dP          }A |dQt          dR          }B |dSt           d          }C |dTt          d          }D |dUt           dV          }E |dWt           d          }F |dXt           d          }G |dYt           d          }Ht          rEt          j
                            dZ          }I|Ir!t          j                            |Id[          }Jn0d\}Jn-t          j                            t          j        d]d^d_d[          }J |d`t          |J          }Kda }L |L            }M |dbt           |M          }Ndbt                      v rMt                      db         |Nk    r5ddclm}O |Oj        r(t'          dd|Ndet                      db         df          |N}P~Ndgt          j
        v }Q |dht           t          |Q                    }R |dit           |R          }S |djt           d          }T |dkt           d          }Udl }V |dm|Vdn          }W |dot          dC          }X |dpt           d          }Y |dqt          |Yrdrnd          }Z |dst           d          }[t)                                                                                      D ]*\  }\}]|\                                r|]t                      |\<   +d S )tNc                                          |           }|t          |          r
 |            n|S 	  ||          S # t          $ r& t          j        d| d|dt
                     |cY S w xY w)Nzenviron z defined but failed to parse '')getcallable	ExceptionrK   rL   RuntimeWarning)rY   ctordefaultrZ   rQ   s       r   _readenvz._EnvReloader.process_environ.<locals>._readenv   s    KK%%E}$,W$5$5Bwwyyy7BtE{{"   #ttUUU,-;= = =s   
A   -A0/A0c                 (    | t          |           nd S r9   )r1   )xs    r   optional_strz2_EnvReloader.process_environ.<locals>.optional_str   s    ]3q6664r   NUMBA_DEVELOPER_MODEr   "NUMBA_DISABLE_PERFORMANCE_WARNINGSNUMBA_FULL_TRACEBACKSNUMBA_SHOW_HELPNUMBA_COLOR_SCHEMEno_colorNUMBA_BOUNDSCHECKNUMBA_ALWAYS_WARN_UNINIT_VAR!NUMBA_CUDA_LOW_OCCUPANCY_WARNINGSr	   NUMBA_CUDA_USE_NVIDIA_BINDINGNUMBA_DEBUGNUMBA_DEBUG_PRINT_AFTERnoneNUMBA_DEBUG_PRINT_BEFORENUMBA_DEBUG_PRINT_WRAPNUMBA_HIGHLIGHT_DUMPSNUMBA_DEBUG_JITNUMBA_DEBUG_FRONTENDNUMBA_DEBUG_NRTNUMBA_NRT_STATSNUMBA_FUNCTION_CACHE_SIZE   NUMBA_PARFOR_MAX_TUPLE_SIZEd   NUMBA_DEBUG_CACHENUMBA_CACHE_DIR NUMBA_TRACENUMBA_CHROME_TRACENUMBA_DEBUG_TYPEINFERNUMBA_CPU_NAMENUMBA_CPU_FEATURESgeneric	NUMBA_OPT   NUMBA_DUMP_BYTECODENUMBA_DUMP_CFGNUMBA_DUMP_IRNUMBA_DUMP_SSANUMBA_DEBUG_ARRAY_OPTNUMBA_DEBUG_ARRAY_OPT_RUNTIMENUMBA_DEBUG_ARRAY_OPT_STATSNUMBA_PARALLEL_DIAGNOSTICSNUMBA_DEBUG_INLINE_CLOSURENUMBA_DUMP_LLVMNUMBA_DUMP_FUNC_OPTNUMBA_DUMP_OPTIMIZEDNUMBA_LOOP_VECTORIZENUMBA_SLP_VECTORIZENUMBA_DUMP_ASSEMBLYNUMBA_DUMP_ANNOTATIONNUMBA_DIFF_IRc                 H    | | S t           j                            |           S r9   )rE   rF   abspath)rF   s    r   fmt_html_pathz3_EnvReloader.process_environ.<locals>.fmt_html_pathB  s     |wt,,,r   NUMBA_DUMP_HTMLc                  P    t                      sdS t          j                    } | dvS )NF)z
corei7-avxz
core-avx-isandybridge	ivybridge)r-   llget_host_cpu_name)cpu_names    r   avx_defaultz1_EnvReloader.process_environ.<locals>.avx_defaultL  s;    #%% 	Du /11 (D D Dr   NUMBA_ENABLE_AVXNUMBA_DISABLE_INTEL_SVMLNUMBA_DISABLE_JITNUMBA_THREADING_LAYER_PRIORITYc                 *    |                                  S r9   )r'   )strings    r   <lambda>z._EnvReloader.process_environ.<locals>.<lambda>e  s    6<<>> r   )tbbomp	workqueueNUMBA_THREADING_LAYERrj   NUMBA_CAPTURED_ERRORSr0    NUMBA_CUDA_WARN_ON_IMPLICIT_COPYNUMBA_FORCE_CUDA_CCNUMBA_CUDA_DEFAULT_PTX_CC)   r   NUMBA_DISABLE_CUDAr   NUMBA_ENABLE_CUDASIMNUMBA_CUDA_LOG_LEVELNUMBA_CUDA_LOG_API_ARGS%NUMBA_CUDA_MAX_PENDING_DEALLOCS_COUNT
   %NUMBA_CUDA_MAX_PENDING_DEALLOCS_RATIOg?NUMBA_CUDA_ARRAY_INTERFACE_SYNCNUMBA_CUDA_DRIVERNUMBA_CUDA_LOG_SIZEi   NUMBA_CUDA_VERBOSE_JIT_LOG$NUMBA_CUDA_PER_THREAD_DEFAULT_STREAM-NUMBA_CUDA_ENABLE_MINOR_VERSION_COMPATIBILITY	CUDA_PATHincludecuda_include_not_foundusrlocalr^   NUMBA_CUDA_INCLUDE_PATHc                      	 t           j        } t          dt           | d                              S # t          $ r Y nw xY wt          j                    }|t          d|          S dS )Nr	   r   )rE   sched_getaffinitymaxlenAttributeError	cpu_count)r   r   s     r   num_threads_defaultz9_EnvReloader.process_environ.<locals>.num_threads_default  s    9$&$8! 1c"3"3A"6"677888 "   
 I$1i(((1s   4 
A ANUMBA_NUM_THREADS)parallelzfCannot set NUMBA_NUM_THREADS to a different value once the threads have been launched (currently have z, trying to set )VS_PROFILERNUMBA_ENABLE_PROFILINGNUMBA_DEBUGINFONUMBA_CUDA_DEBUGINFONUMBA_EXTEND_VARIABLE_LIFETIMESc                 6    t          j        |           }||n| S r9   )shutilwhich)path_or_bingdbs     r   	which_gdbz/_EnvReloader.process_environ.<locals>.which_gdb  s    ,{++C/33{:r   NUMBA_GDB_BINARYr   NUMBA_CUDA_MEMORY_MANAGERNUMBA_LLVM_REFPRUNE_PASSNUMBA_LLVM_REFPRUNE_FLAGSallNUMBA_LLVM_PASS_TIMINGS)r   r1   lowerIS_WIN32	IS_32BITSr5   r   MACHINE_BITSfloatrE   rQ   re   rF   joinsepglobalsnumba.np.ufuncr   _is_initializedRuntimeErrorlocalscopyrO   isupper)^r<   rQ   rk   rn   DEVELOPER_MODEDISABLE_PERFORMANCE_WARNINGSFULL_TRACEBACKS	SHOW_HELPCOLOR_SCHEMEBOUNDSCHECKALWAYS_WARN_UNINIT_VARCUDA_LOW_OCCUPANCY_WARNINGSr]   DEBUGDEBUG_PRINT_AFTERDEBUG_PRINT_BEFOREDEBUG_PRINT_WRAPHIGHLIGHT_DUMPS	DEBUG_JITDEBUG_FRONTEND	DEBUG_NRT	NRT_STATSFUNCTION_CACHE_SIZEPARFOR_MAX_TUPLE_SIZEDEBUG_CACHE	CACHE_DIRTRACECHROME_TRACEDEBUG_TYPEINFERCPU_NAMECPU_FEATURESOPTDUMP_BYTECODEDUMP_CFGDUMP_IRDUMP_SSADEBUG_ARRAY_OPTDEBUG_ARRAY_OPT_RUNTIMEDEBUG_ARRAY_OPT_STATSPARALLEL_DIAGNOSTICSDEBUG_INLINE_CLOSURE	DUMP_LLVMDUMP_FUNC_OPTDUMP_OPTIMIZEDLOOP_VECTORIZESLP_VECTORIZEDUMP_ASSEMBLYANNOTATEDIFF_IRr   HTMLr   
ENABLE_AVXDISABLE_INTEL_SVMLDISABLE_JITTHREADING_LAYER_PRIORITYTHREADING_LAYERCAPTURED_ERRORSCUDA_WARN_ON_IMPLICIT_COPYFORCE_CUDA_CCCUDA_DEFAULT_PTX_CCDISABLE_CUDAENABLE_CUDASIMCUDA_LOG_LEVELCUDA_LOG_API_ARGSCUDA_DEALLOCS_COUNTCUDA_DEALLOCS_RATIOCUDA_ARRAY_INTERFACE_SYNCCUDA_DRIVERCUDA_LOG_SIZECUDA_VERBOSE_JIT_LOGr`   'CUDA_ENABLE_MINOR_VERSION_COMPATIBILITY	cuda_pathdefault_cuda_include_pathCUDA_INCLUDE_PATHr   NUMBA_DEFAULT_NUM_THREADS_NUMBA_NUM_THREADSr   r   RUNNING_UNDER_PROFILERENABLE_PROFILINGDEBUGINFO_DEFAULTCUDA_DEBUGINFO_DEFAULTEXTEND_VARIABLE_LIFETIMESr   
GDB_BINARYCUDA_MEMORY_MANAGERLLVM_REFPRUNE_PASSLLVM_REFPRUNE_FLAGSLLVM_PASS_TIMINGSrY   rZ   s^    `                                                                                            r   rR   z_EnvReloader.process_environ   s	   		 		 		 		 			5 	5 	5 ""8#qAA (0x0#q(: (:$ #(#S.: : H.Q77	  x 4c:FF
 h2C>>
 "**C"
 "
 '/h/a'9 '9# #+(+S!#5 #5 Q// %H%>VLL &X&@#vNN $8$<c6JJ #(#:CCC H.Q77	 ""8#qAA H.Q77	 H.Q77	 'h'BCMM !))F),c!3 !3 h2C?? H.R88	 Q//  x 4c2>> #(#:CCC
 8,lDAAx 4l'*8}}':':'<'<	'I'I&*- - h{C++ !!6^LL 8,c>BB (?C)+ + 8,c*=o? ? #(#:CCC #+(+S!#5 #5 !))FQ O O  (x(Dc1MM  (x(Dc1MM H.U;;	 !!6UCC ""8#uEE ""8#'/'=I">@ @
 !!6Q?? !!6UCC 83S!<< (?C33	- 	- 	- x)=$??
	D 
	D 
	D X0#{CC
 &X&Y8 8 h2C;; $,8,))'''$
 $
 
 #(#:CKK"(#:#B#.0 0 &.X.Q&8 &8" !!6	4HH 'h'BI'-/ /  x 4 #S);%<%<> > ""8#qAA ""8#rBB %H%>QGG 'h'N'*B0 0 'h'N',c3 3 %-H-N-0!%5 %5! h2C<< !!6TBB  (x(Dc1MM *22C*< *<& 3;(;S!3E 3E/  	H
{33I E,.GLLI,N,N)),D))(*RVUG5;Y)H )H%$H%>%>@ @	 	 	 %8$7$9$9! &X&93&?A A799,,II126HHH//////' E"l %7$6$6$+II.A$B$B$B$D E E E /
 "/"*!< $8$c3/E+F+FH H %H%6=MNN!)*@#q!I!I$,H-N-0!%5 %5!	; 	; 	; X0)UCC
 'h'BC'02 2 &X&Q
 
 'h''/EER
 
 %H%sA
 

 "88==??0022 	( 	(KD%||~~ ("'		$	( 	(r   N)F)__name__
__module____qualname__r=   r:   rA   rT   rR    r   r   r7   r7   S   sj                  B* * **z( z( z( z( z(r   r7   c                  8    t                                            dS )zL
    Reload the configuration from environment variables, if necessary.
    N)_env_reloaderrA   rM  r   r   reload_configrP    s     r   )r    r   rE   r
   r   rK   rM   rJ   r_   llvmlite.bindingbindingr   r!   r   IS_OSXtuple__itemsize__r   r   version_info	PYVERSIONrH   r   r-   r5   objectr7   rO  rP  rM  r   r   <module>rY     si    



 				 				  KKKJJ   JJJ       <""7++		 	 	*	*!A%B	RaR 	 %( ( (   6  y( y( y( y( y(6 y( y( y(x     s   ! ++