U
    |esO                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlZzd dlZdZW n ek
rX   dZY nX d dl	m
Z ej dZej dZejd ZedkZejdd Zd	Zd
d Zdd Zdd ZG dd deZe Zdd ZdS )    NTFwin32darwin          z.numba_config.yamlc                 C   sD   | sdS t d| }|s td| }t|d t|d fS d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grp r   N/var/www/website-v5/atlas_env/lib/python3.8/site-packages/numba/core/config.py	_parse_cc   s    r   c               	   C   s   t jdrt dkrdS ztdd} W n tk
r@   Y dS X | R | D ]<}|d\}}}| dkrLd| krL W 5 Q R  dS qLW 5 Q R  d	S Q R X 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)Zi386Zi586Zi686x86_64Tz/proc/cpuinfor:flagsZavxFN)	sysplatform
startswithmachineopenOSError	partitionstripsplit)flinehead_bodyr   r   r   _os_supports_avx.   s    
r&   c                 C   s,   t | }|dkr$d| }t|n|S d S )N)Z	new_style	old_stylez(Invalid style in NUMBA_CAPTURED_ERRORS: )strr
   )Z	style_strZrendered_stylemsgr   r   r   _validate_captured_errors_styleI   s
    

r*   c                   @   s6   e Zd Zdd Zdd ZdddZdd	 Zd
d ZdS )_EnvReloaderc                 C   s   |    d S N)resetselfr   r   r   __init__U   s    z_EnvReloader.__init__c                 C   s   i | _ | jdd d S )NT)force)old_environupdater.   r   r   r   r-   X   s    z_EnvReloader.resetFc           
   	   C   s   i }t jtrzt jtrzts0d}t| nJttd}t	
|}W 5 Q R X |d k	rz| D ]\}}||d|  < q`t j D ]\}}	|dr|	||< q|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`.rtZNUMBA_)ospathexists_config_fnameisfile
_HAVE_YAMLwarningswarnr   yamlZ	safe_loaditemsupperenvironr   r2   process_environdictvalidate)
r/   r1   new_environr)   r!   Zy_confkvnamevaluer   r   r   r3   \   s"    



z_EnvReloader.updatec              
   C   sb   t r^zdd l}W n> tk
rN } z d|j d}t| da W 5 d }~X Y nX tr^td 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ImportErrorr)   r;   r<   CUDA_PER_THREAD_DEFAULT_STREAM)r/   rK   Zier)   r   r   r   rC   }   s    
z_EnvReloader.validatec           ^         s   fdd}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rhd!nd }|d(t d)}|d*t |} |d+t |}!|d,t |}"|d-t |p|}#|d.t d}$|d/t d}%|d0t d}&|d1t d}'|d2t d}(|d3t |})|d4t |}*|d5t |}+|d6t tot },|d7t d}-|d8t |}.|d9t d}/|d:t d}0d;d< }1|d=|1d }2d>d? }3|d@t |3}4|dAt t}5|dBt d}6|dCdDdE dFdGdHg}7|dItdJ}8|dKtdL}9|dMt d}:|dNtd };|dOtdP}<|dQt t tdRk}=|dSt d}>|dTtd!}?|dUt d}@|dVt dW}A|dXtdY}B|dZt d}C|d[td!}D|d\t d]}E|d^t d}F|d_t d}G|d`t d}Htrt	j
da}I|Irt	j|Idb}Jndc}Jnt	jt	jdddedfdb}J|dgt|J}Kdhdi }L|L }M|djt |M}Ndjt kr.t dj |Nkr.ddklm}O |Ojr.tdl|Nt dj f |N}P~Ndmt	j
k}Q|dnt t |Q}R|dot |R}S|dpt d}T|dqt d}Udrds }V|dt|Vdu}W|dvtdJ}X|dwt d}Y|dxt|Yrdynd!}Z|dzt d}[t   D ]\}\}]|\ r|]t |\< qd S ){Nc                    s`     | }|d kr$t|r | S |S z
||W S  tk
rZ   td| |f t | Y S X d S )Nz+environ %s defined but failed to parse '%s')getcallable	Exceptionr;   r<   RuntimeWarning)rG   ZctordefaultrH   r@   r   r   _readenv   s    

z._EnvReloader.process_environ.<locals>._readenvc                 S   s   | d k	rt | S d S r,   )r(   )xr   r   r   optional_str   s    z2_EnvReloader.process_environ.<locals>.optional_strZNUMBA_DEVELOPER_MODEr   Z"NUMBA_DISABLE_PERFORMANCE_WARNINGSZNUMBA_FULL_TRACEBACKSZNUMBA_SHOW_HELPZNUMBA_COLOR_SCHEMEno_colorZNUMBA_BOUNDSCHECKZNUMBA_ALWAYS_WARN_UNINIT_VARZ!NUMBA_CUDA_LOW_OCCUPANCY_WARNINGSr   ZNUMBA_CUDA_USE_NVIDIA_BINDINGZNUMBA_DEBUGZNUMBA_DEBUG_PRINT_AFTERnoneZNUMBA_DEBUG_PRINT_BEFOREZNUMBA_DEBUG_PRINT_WRAPZNUMBA_HIGHLIGHT_DUMPSZNUMBA_DEBUG_JITZNUMBA_DEBUG_FRONTENDZNUMBA_DEBUG_NRTZNUMBA_NRT_STATSZNUMBA_FUNCTION_CACHE_SIZE   ZNUMBA_PARFOR_MAX_TUPLE_SIZEd   ZNUMBA_DEBUG_CACHEZNUMBA_CACHE_DIR ZNUMBA_TRACEZNUMBA_CHROME_TRACEZNUMBA_DEBUG_TYPEINFERZNUMBA_CPU_NAMEZNUMBA_CPU_FEATURESgenericZ	NUMBA_OPT   ZNUMBA_DUMP_BYTECODEZNUMBA_DUMP_CFGZNUMBA_DUMP_IRZNUMBA_DUMP_SSAZNUMBA_DEBUG_ARRAY_OPTZNUMBA_DEBUG_ARRAY_OPT_RUNTIMEZNUMBA_DEBUG_ARRAY_OPT_STATSZNUMBA_PARALLEL_DIAGNOSTICSZNUMBA_DEBUG_INLINE_CLOSUREZNUMBA_DUMP_LLVMZNUMBA_DUMP_FUNC_OPTZNUMBA_DUMP_OPTIMIZEDZNUMBA_LOOP_VECTORIZEZNUMBA_SLP_VECTORIZEZNUMBA_DUMP_ASSEMBLYZNUMBA_DUMP_ANNOTATIONZNUMBA_DIFF_IRc                 S   s   | d kr| S t j| S d S r,   )r5   r6   abspath)r6   r   r   r   fmt_html_pathB  s    z3_EnvReloader.process_environ.<locals>.fmt_html_pathZNUMBA_DUMP_HTMLc                  S   s   t  s
dS t } | dkS d S )NF)z
corei7-avxz
core-avx-iZsandybridgeZ	ivybridge)r&   llZget_host_cpu_name)Zcpu_namer   r   r   avx_defaultL  s    z1_EnvReloader.process_environ.<locals>.avx_defaultZNUMBA_ENABLE_AVXZNUMBA_DISABLE_INTEL_SVMLZNUMBA_DISABLE_JITZNUMBA_THREADING_LAYER_PRIORITYc                 S   s   |   S r,   )r    )stringr   r   r   <lambda>e      z._EnvReloader.process_environ.<locals>.<lambda>tbbompZ	workqueueZNUMBA_THREADING_LAYERrR   ZNUMBA_CAPTURED_ERRORSr'   Z NUMBA_CUDA_WARN_ON_IMPLICIT_COPYZNUMBA_FORCE_CUDA_CCZNUMBA_CUDA_DEFAULT_PTX_CC)   r   ZNUMBA_DISABLE_CUDAr   ZNUMBA_ENABLE_CUDASIMZNUMBA_CUDA_LOG_LEVELZNUMBA_CUDA_LOG_API_ARGSZ%NUMBA_CUDA_MAX_PENDING_DEALLOCS_COUNT
   Z%NUMBA_CUDA_MAX_PENDING_DEALLOCS_RATIOg?ZNUMBA_CUDA_ARRAY_INTERFACE_SYNCZNUMBA_CUDA_DRIVERZNUMBA_CUDA_LOG_SIZEi   ZNUMBA_CUDA_VERBOSE_JIT_LOGZ$NUMBA_CUDA_PER_THREAD_DEFAULT_STREAMZ-NUMBA_CUDA_ENABLE_MINOR_VERSION_COMPATIBILITYZ	CUDA_PATHincludeZcuda_include_not_foundZusrlocalrK   ZNUMBA_CUDA_INCLUDE_PATHc                  S   sP   z
t j} W n tk
r   Y nX tdt| dS t  }|d k	rLtd|S dS )Nr   r   )r5   sched_getaffinityAttributeErrormaxlen	cpu_count)rk   ro   r   r   r   num_threads_default  s    

z9_EnvReloader.process_environ.<locals>.num_threads_defaultNUMBA_NUM_THREADS)parallelz{Cannot set NUMBA_NUM_THREADS to a different value once the threads have been launched (currently have %s, trying to set %s)ZVS_PROFILERZNUMBA_ENABLE_PROFILINGZNUMBA_DEBUGINFOZNUMBA_CUDA_DEBUGINFOZNUMBA_EXTEND_VARIABLE_LIFETIMESc                 S   s   t | }|d k	r|S | S r,   )shutilwhich)Zpath_or_bingdbr   r   r   	which_gdb  s    
z/_EnvReloader.process_environ.<locals>.which_gdbZNUMBA_GDB_BINARYru   ZNUMBA_CUDA_MEMORY_MANAGERZNUMBA_LLVM_REFPRUNE_PASSZNUMBA_LLVM_REFPRUNE_FLAGSallZNUMBA_LLVM_PASS_TIMINGS)r   r(   lowerIS_WIN32	IS_32BITSr*   r   MACHINE_BITSfloatr5   r@   rN   r6   joinsepglobalsnumba.np.ufuncrr   Z_is_initializedRuntimeErrorlocalscopyr>   isupper)^r/   r@   rT   rV   ZDEVELOPER_MODEZDISABLE_PERFORMANCE_WARNINGSZFULL_TRACEBACKSZ	SHOW_HELPZCOLOR_SCHEMEZBOUNDSCHECKZALWAYS_WARN_UNINIT_VARZCUDA_LOW_OCCUPANCY_WARNINGSrJ   DEBUGZDEBUG_PRINT_AFTERZDEBUG_PRINT_BEFOREZDEBUG_PRINT_WRAPZHIGHLIGHT_DUMPSZ	DEBUG_JITZDEBUG_FRONTENDZ	DEBUG_NRTZ	NRT_STATSZFUNCTION_CACHE_SIZEZPARFOR_MAX_TUPLE_SIZEZDEBUG_CACHEZ	CACHE_DIRTRACEZCHROME_TRACEZDEBUG_TYPEINFERZCPU_NAMEZCPU_FEATURESOPTZDUMP_BYTECODEZDUMP_CFGZDUMP_IRZDUMP_SSAZDEBUG_ARRAY_OPTZDEBUG_ARRAY_OPT_RUNTIMEZDEBUG_ARRAY_OPT_STATSZPARALLEL_DIAGNOSTICSZDEBUG_INLINE_CLOSUREZ	DUMP_LLVMZDUMP_FUNC_OPTZDUMP_OPTIMIZEDZLOOP_VECTORIZEZSLP_VECTORIZEZDUMP_ASSEMBLYZANNOTATEZDIFF_IRr_   ZHTMLra   Z
ENABLE_AVXDISABLE_INTEL_SVMLZDISABLE_JITZTHREADING_LAYER_PRIORITYZTHREADING_LAYERZCAPTURED_ERRORSZCUDA_WARN_ON_IMPLICIT_COPYZFORCE_CUDA_CCZCUDA_DEFAULT_PTX_CCZDISABLE_CUDAZENABLE_CUDASIMZCUDA_LOG_LEVELZCUDA_LOG_API_ARGSZCUDA_DEALLOCS_COUNTZCUDA_DEALLOCS_RATIOZCUDA_ARRAY_INTERFACE_SYNCZCUDA_DRIVERZCUDA_LOG_SIZEZCUDA_VERBOSE_JIT_LOGrM   Z'CUDA_ENABLE_MINOR_VERSION_COMPATIBILITYZ	cuda_pathZdefault_cuda_include_pathZCUDA_INCLUDE_PATHrp   ZNUMBA_DEFAULT_NUM_THREADSZ_NUMBA_NUM_THREADSrr   rq   ZRUNNING_UNDER_PROFILERZENABLE_PROFILINGZDEBUGINFO_DEFAULTZCUDA_DEBUGINFO_DEFAULTZEXTEND_VARIABLE_LIFETIMESrv   Z
GDB_BINARYZCUDA_MEMORY_MANAGERZLLVM_REFPRUNE_PASSZLLVM_REFPRUNE_FLAGSZLLVM_PASS_TIMINGSrG   rH   r   rS   r   rA      s                
  	   
        
        
z_EnvReloader.process_environN)F)__name__
__module____qualname__r0   r-   r3   rC   rA   r   r   r   r   r+   S   s
   
!r+   c                   C   s   t   dS )zL
    Reload the configuration from environment variables, if necessary.
    N)_env_reloaderr3   r   r   r   r   reload_config  s    r   )r   r   r5   r   rs   r;   r=   r:   rL   llvmlite.bindingbindingr`   r   ry   ZIS_OSXtuple__itemsize__r{   rz   version_info	PYVERSIONr8   r   r&   r*   objectr+   r   r   r   r   r   r   <module>   s4   


   ?