a
    
dsO                     @   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yV   dZY n0 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   Z/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/numba/core/config.py	_parse_cc   s    r   c                  C   s   t jdrt dvrdS ztdd} W n ty>   Y dS 0 | V | D ]>}|d\}}}| dkrJd| v rJ W d	   dS qJW d	   d
S 1 s0    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)i386Zi586i686x86_64Tz/proc/cpuinfor:flagsZavxNF)	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v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updater0   r   r   r   r/   X   s    z_EnvReloader.resetFc           
      C   s   i }t jtrt jtrts0d}t| n^ttd}t	
|}W d    n1 sZ0    Y  |d ur| D ]\}}||d|  < qtt 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   r4   process_environdictvalidate)
r1   r3   Znew_environr+   r#   Zy_confkvnamevaluer   r   r   r5   \   s"    (



z_EnvReloader.updatec              
   C   sd   t r`zdd l}W n@ tyP } z(d|j d}t| da W Y d }~n
d }~0 0 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)r1   rL   Zier+   r   r   r   rE   }   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 g dF}7|dGtdH}8|dItdJ}9|dKt d}:|dLtd };|dMtdN}<|dOt t tdPk}=|dQt d}>|dRtd!}?|dSt d}@|dTt dU}A|dVtdW}B|dXt d}C|dYtd!}D|dZt d[}E|d\t d}F|d]t d}G|d^t d}Htrt	j
d_}I|Irt	j|Id`}Jnda}Jnt	jt	jdbdcddd`}J|det|J}Kdfdg }L|L }M|dht |M}Ndht v r,t dh |Nkr,ddilm}O |Ojr,tdj|Nt dh f |N}P~Ndkt	j
v }Q|dlt t |Q}R|dmt |R}S|dnt d}T|dot d}Udpdq }V|dr|Vds}W|dttdH}X|dut d}Y|dvt|Yrdwnd!}Z|dxt d}[t   D ]\}\}]|\ r|]t |\< qd S )yNc                    s^     | }|d u r$t|r | S |S z
||W S  tyX   td| |f t | Y S 0 d S )Nz+environ %s defined but failed to parse '%s')getcallable	Exceptionr=   r>   RuntimeWarning)rH   ZctordefaultrI   rB   r   r   _readenv   s    

z._EnvReloader.process_environ.<locals>._readenvc                 S   s   | d u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_FEATURESZ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 u r| S t j| S d S r.   )r7   r8   abspath)r8   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v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>)ZtbbZompZ	workqueueZNUMBA_THREADING_LAYERrS   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localrL   ZNUMBA_CUDA_INCLUDE_PATHc                  S   sN   z
t j} W n ty   Y n0 tdt| dS t  }|d urJtd|S dS )Nr   r   )r7   sched_getaffinityAttributeErrormaxlen	cpu_count)ri   rm   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 u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_BINARYrs   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floatr7   rB   rO   r8   joinsepglobalsZnumba.np.ufuncrp   Z_is_initializedRuntimeErrorlocalscopyr@   isupper)^r1   rB   rU   rW   ZDEVELOPER_MODEZDISABLE_PERFORMANCE_WARNINGSZFULL_TRACEBACKSZ	SHOW_HELPZCOLOR_SCHEMEZBOUNDSCHECKZALWAYS_WARN_UNINIT_VARZCUDA_LOW_OCCUPANCY_WARNINGSrK   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_AVXZ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_LOGrN   Z'CUDA_ENABLE_MINOR_VERSION_COMPATIBILITYZ	cuda_pathZdefault_cuda_include_pathZCUDA_INCLUDE_PATHrn   ZNUMBA_DEFAULT_NUM_THREADSZ_NUMBA_NUM_THREADSrp   ro   ZRUNNING_UNDER_PROFILERZENABLE_PROFILINGZDEBUGINFO_DEFAULTZCUDA_DEBUGINFO_DEFAULTZEXTEND_VARIABLE_LIFETIMESrt   Z
GDB_BINARYZCUDA_MEMORY_MANAGERZLLVM_REFPRUNE_PASSZLLVM_REFPRUNE_FLAGSZLLVM_PASS_TIMINGSrH   rI   r   rT   r   rC      s\   
	


z_EnvReloader.process_environN)F)__name__
__module____qualname__r2   r/   r5   rE   rC   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_reloaderr5   r   r   r   r   reload_config  s    r   )r   r   r7   r   rq   r=   r?   r<   rM   Zllvmlite.bindingZbindingr`   r   rw   ZIS_OSXtuple__itemsize__ry   rx   version_infoZ	PYVERSIONr:   r   r(   r,   objectr-   r   r   r   r   r   r   <module>   s4   


   ?