o
    Y۷i4X                     @   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d dlZzd dlZdZW n e	y/   dZY nw 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G dd de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   s@   | sdS t 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grp r   G/home/ubuntu/vllm_env/lib/python3.10/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 w | , | D ]}|d\}}}| dkrDd| v rD W d	   dS q%	 W d	   d
S 1 sQw   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_bodyr   r   r   _os_supports_avx/   s"   $r*   c                       s4   e Zd ZdZ fddZedd Zdd Z  ZS )	_OptLevela  This class holds the "optimisation level" set in `NUMBA_OPT`. As this env
    var can be an int or a string, but is almost always interpreted as an int,
    this class subclasses int so as to get the common behaviour but stores the
    actual value as a `_raw_value` member. The value "max" is a special case
    and the property `is_opt_max` can be queried to find if the optimisation
    level (supplied value at construction time) is "max".c                    s\   t |dksJ |\}|dkrdnt|}t j| |fi |}|dkr)||_|S ||_|S )Nr   max   )lenr   super__new__
_raw_value)clsargskwargsvalue
_int_valuenew	__class__r   r   r0   Q   s   z_OptLevel.__new__c                 C   s
   | j dkS )zLReturns True if the the optimisation level is "max" False
        otherwise.r,   )r1   selfr   r   r   
is_opt_max[   s   
z_OptLevel.is_opt_maxc                 C   s.   t | jtrd| j d}n| j}d| dS )N'z
_OptLevel())
isinstancer1   str)r;   argr   r   r   __repr__a   s   z_OptLevel.__repr__)	__name__
__module____qualname____doc__r0   propertyr<   rB   __classcell__r   r   r8   r   r+   I   s    

r+   c                 C   s$   | dvrd|  d}t |t| S )N)0123r,   zAEnvironment variable `NUMBA_OPT` is set to an unsupported value 'z-', supported values are 0, 1, 2, 3, and 'max')r
   r+   )	opt_levelmsgr   r   r   _process_opt_leveli   s   rO   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)resetr:   r   r   r   __init__v   s   z_EnvReloader.__init__c                 C   s   i | _ | jdd d S )NT)force)old_environupdater:   r   r   r   rR   y   s   z_EnvReloader.resetFc           
      C   s   i }t jtrGt jtrGtsd}t| n/ttd}t	
|}W d    n1 s-w   Y  |d urG| D ]\}}||d|  < q:t j D ]\}}	|drY|	||< qL|sa| j|krk| | 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   rU   process_environdictvalidate)
r;   rT   new_environrN   r%   y_confkvnamer5   r   r   r   rV   }   s&   


z_EnvReloader.updatec              
   C   sl   t r2zdd l}W n  ty( } zd|j d}t| da W Y d }~nd }~ww tr4t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ImportErrorrN   r_   r`   CUDA_PER_THREAD_DEFAULT_STREAM)r;   rp   ierN   r   r   r   rh      s   
z_EnvReloader.validatec           `         s  fdd}d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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rd"nd }|d)ttd*}|d+t |} |d,t |}!|d-t |}"|d.t |p|}#|d/t d}$|d0t d}%|d1t d}&|d2t d}'|d3t d}(|d4t |})|d5t |}*|d6t |}+|d7t d},|d8t d}-|d9t |}.|d:t d}/|d;t d}0d<d= }1|d>|1d }2 fd?d@}3|dAt |3}4|dBt t}5|dCt d}6|dDdEdF g dG}7|dHtdI}8|dJt d}9|dKtd }:|dLtdM};|dNt t tdOk}<|dPt d}=|dQtd"}>|dRt d}?|dSt dT}@|dUtdV}A|dWt d}B|dXtd"}C|dYt dZ}D|d[t d}E|d\t d}F|d]t d}Gt	rt
jd^}H|Hrt
j|Hd_}Ind`}Int
jt
jdadbdcd_}I|ddt|I}Jdedf }K|K }L|dgt |L}Mdgt v rt dg |Mkrddhlm}N |Njrtdi|Mt dg f |M}O~M|djt d}Pdkt
jv }Q|dlt t |Q}R|dmt |R}S|dnt d}T|dot d}Udpdq }V|dr|Vds}W|dttdI}X|dut d}Y|dvt|YrZdwnd"}Z|dxt d }[|dyt d}\|dzt d}]t   D ]\}^}_|^ r|_t |^< qvd S ){Nc                    sh     | }|d u rt|r| S |S z||W S  ty3   td|  d| dt  t | Y S w )NzEnvironment variable 'z'' is defined but its associated value 'z8' could not be parsed.
The parse failed with exception:
)getcallable	Exceptionr_   r`   	traceback
format_excRuntimeWarning)rm   ctordefaultr5   )re   r   r   _readenv   s   

z._EnvReloader.process_environ.<locals>._readenvc                 S   s   | d urt | S d S rQ   )r@   )xr   r   r   optional_str   s   z2_EnvReloader.process_environ.<locals>.optional_strNUMBA_USE_LEGACY_TYPE_SYSTEMr   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_WARNINGS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_OPTr-   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                 S   s   | d u r| S t j| S rQ   )rY   rZ   abspath)rZ   r   r   r   fmt_html_pathi  s   z3_EnvReloader.process_environ.<locals>.fmt_html_pathNUMBA_DUMP_HTMLc                     s0   t  sdS  p
t } h d}|dhO }| |vS )NF>   
core-avx-i
corei7-avx	ivybridgesandybridgenocona)r*   llget_host_cpu_name)cpu_namedisabled_cpus)CPU_NAMEr   r   avx_defaults  s   
z1_EnvReloader.process_environ.<locals>.avx_defaultNUMBA_ENABLE_AVXNUMBA_DISABLE_INTEL_SVMLNUMBA_DISABLE_JITNUMBA_THREADING_LAYER_PRIORITYc                 S   s   |   S rQ   )r$   )stringr   r   r   <lambda>  s    z._EnvReloader.process_environ.<locals>.<lambda>)tbbomp	workqueueNUMBA_THREADING_LAYERr{    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localrp   NUMBA_CUDA_INCLUDE_PATHc                  S   sN   zt j} W n	 ty   Y n
w tdt| dS t  }|d ur%td|S dS )Nr   r   )rY   sched_getaffinityAttributeErrorr,   r.   	cpu_count)r   r   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)NUMBA_ENABLE_SYS_MONITORINGVS_PROFILERNUMBA_ENABLE_PROFILINGNUMBA_DEBUGINFONUMBA_CUDA_DEBUGINFONUMBA_EXTEND_VARIABLE_LIFETIMESc                 S   s   t | }|d ur|S | S rQ   )shutilwhich)path_or_bingdbr   r   r   	which_gdb  s   
z/_EnvReloader.process_environ.<locals>.which_gdbNUMBA_GDB_BINARYr   NUMBA_CUDA_MEMORY_MANAGERNUMBA_LLVM_REFPRUNE_PASSNUMBA_LLVM_REFPRUNE_FLAGSall!NUMBA_USE_LLVMLITE_MEMORY_MANAGERNUMBA_LLVM_PASS_TIMINGSNUMBA_JIT_COVERAGE)r   r@   lowerrO   r+   	IS_32BITSr   MACHINE_BITSfloatIS_WIN32rY   re   rt   rZ   joinsepglobalsnumba.np.ufuncr   _is_initializedRuntimeErrorlocalscopyrc   isupper)`r;   re   r|   r~   USE_LEGACY_TYPE_SYSTEMDEVELOPER_MODEDISABLE_PERFORMANCE_WARNINGSFULL_TRACEBACKS	SHOW_HELPCOLOR_SCHEMEBOUNDSCHECKALWAYS_WARN_UNINIT_VARCUDA_LOW_OCCUPANCY_WARNINGSro   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_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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_LOGrr   'CUDA_ENABLE_MINOR_VERSION_COMPATIBILITY	cuda_pathdefault_cuda_include_pathCUDA_INCLUDE_PATHr   NUMBA_DEFAULT_NUM_THREADS_NUMBA_NUM_THREADSr   r   ENABLE_SYS_MONITORINGRUNNING_UNDER_PROFILERENABLE_PROFILINGDEBUGINFO_DEFAULTCUDA_DEBUGINFO_DEFAULTEXTEND_VARIABLE_LIFETIMESr   
GDB_BINARYCUDA_MEMORY_MANAGERLLVM_REFPRUNE_PASSLLVM_REFPRUNE_FLAGSUSE_LLVMLITE_MEMORY_MANAGERLLVM_PASS_TIMINGSJIT_COVERAGErm   r5   r   )r   re   r   rf      sj  



z_EnvReloader.process_environN)F)rC   rD   rE   rS   rR   rV   rh   rf   r   r   r   r   rP   t   s    
!rP   c                   C   s   t   dS )zL
    Reload the configuration from environment variables, if necessary.
    N)_env_reloaderrV   r   r   r   r   reload_configL  s   r\  ) r   r   rY   r   r   r_   rw   ra   r^   rq   llvmlite.bindingbindingr   r   r   IS_OSXtuple__itemsize__r   r   version_info	PYVERSIONr\   r   r*   r   r+   rO   objectrP   r[  r\  r   r   r   r   <module>   s<    
    X