
    S3jY                     x   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 dlZdZd dl
mZ ej                   j                  d      Zej                   j                  d      Zej"                  dz  Zedk(  Zej(                  dd Zd	Zd
 Zd Z G d de      Zd Z G d de      Z e       Zd Zy# e	$ r dZY w xY w)    NTFwin32darwin          z.numba_config.yamlc                     | syt        j                  d|       }|st        d      |j                         }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      >/DATA/.local/lib/python3.12/site-packages/numba/core/config.py	_parse_ccr      sW     HH_d+ 6 7 7 hhj3q6{CAK''    c                  p   t         j                  j                  d      rt        j                         dvry	 t	        dd      } | 5  | D ]G  }|j                  d      \  }}}|j                         dk(  s,d|j                         v s? d	d	d	       y 	 d	d	d	       y
# t
        $ r Y yw xY w# 1 sw Y   y	xY w)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-   /   s     LL##G,!)KK#& 
D NN3/MD!Tzz|w&5DJJL+@	 

  
   
s/   B .B,5B,B,B,	B)(B),B5c                   8     e Zd ZdZ fdZed        Zd Z x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                     t        |      dk(  sJ |\  }|dk(  rdn
t        |      }t        |   | |fi |}|dk(  r	||_        |S ||_        |S )Nr	   max   )lenr   super__new__
_raw_value)clsargskwargsvalue
_int_valuenew	__class__s         r   r5   z_OptLevel.__new__Q   sa    4yA~~5.Qc%j
goc:88"'5.
 7A
r   c                      | j                   dk(  S )zHReturns True if the optimisation level is "max" False
        otherwise.r1   )r6   selfs    r   
is_opt_maxz_OptLevel.is_opt_max[   s     %''r   c                 |    t        | j                  t              rd| j                   d}n| j                  }d| dS )N'z
_OptLevel())
isinstancer6   str)r@   args     r   __repr__z_OptLevel.__repr__a   s;    doos+doo&a(C//CC5""r   )	__name__
__module____qualname____doc__r5   propertyrA   rH   __classcell__)r=   s   @r   r/   r/   I   s&    = ( (
#r   r/   c                 B    | dvrd|  d}t        |      t        |       S )N)0123r1   zAEnvironment variable `NUMBA_OPT` is set to an unsupported value 'z-', supported values are 0, 1, 2, 3, and 'max')r   r/   )	opt_levelmsgs     r   _process_opt_levelrV   i   s8    33" $ o##r   c                   ,    e Zd Zd Zd ZddZd Zd Zy)_EnvReloaderc                 $    | j                          y N)resetr?   s    r   __init__z_EnvReloader.__init__v   s    

r   c                 6    i | _         | j                  d       y )NT)force)old_environupdater?   s    r   r[   z_EnvReloader.resety   s    $r   c                    i }t         j                  j                  t              rt         j                  j	                  t              r|t
        sd}t        j                  |       n^t        t        d      5 }t        j                  |      }d d d        .|j                         D ]  \  }}||d|j                         z   <    t         j                  j                         D ]  \  }}	|j                  d      s|	||<    |s| j                  |k7  r!| j!                  |       t#        |      | _        | j%                          y # 1 sw Y   xY w)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_environrU   r(   y_confkvnamer:   s
             r   r`   z_EnvReloader.update}   s     77>>-(RWW^^M-J1 c"-.!!^^A.F /% &1<=Hqwwy$89 !/ ::++-KD%x($)D! . D$$3  -#K0D' /.s   7EEc                     t         r"	 dd l}t        rt	        j
                  d       y y y # t        $ r1}d|j                   d}t	        j
                  |       da Y d }~Sd }~ww xY w)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ImportErrorrU   rj   rk   CUDA_PER_THREAD_DEFAULT_STREAM)r@   r|   ierU   s       r   rs   z_EnvReloader.validate   sm     #0 . ) * . #  0779vvhaA c"*/'0s   * 	A$'AA$c                    a 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#t         d      } |d$t         d      } |d%|d       a |d&|t        a      j                         d'k(  rdnd       } |d(t        t	        d)            }  |d*t         |      }! |d+t         |      }" |d,t         |      }# |d-t         |xs |      }$ |d.t         d      }% |d/t         d      }& |d0t         d      }' |d1t         d      }( |d2t         d      }) |d3t         |      }* |d4t         |      }+ |d5t         |      }, |d6t         d      }- |d7t         d      }. |d8t         |      }/ |d9t         d      }0 |d:t         d      }1d; }2 |d<|2d       }3afd=}4 |d>t         |4      }5 |d?t         t
              }6 |d@t         d      }7 |dAdB g 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                  j                  dZ      }I|Ir!t        j                  j                  Id[      }Jn4d\}Jn1t        j                  j                  t        j                  d]d^d_d[      }J |d`t        J      }Kda }L |L       }M |dbt         |M      }Ndbt!               v r?t!               db   Nk7  r/ddclm}O |Oj&                  rt)        ddNdet!               db   df      N}P~N |dgt         d      }Qdht        j                  v }R |dit         t        |R            }S |djt         |S      }T |dkt         d      }U |dlt         d      }Vdm }W |dn|Wdo      }X |dpt        dE      }Y |dqt         d      }Z |drt        |Zrdsnd      }[ |dtt         d       }\ |dut         d      }] |dvt         d      }^t+               j-                         j/                         D ]#  \  }_}`|_j1                         s`t!               _<   % y )wNc           
          j                  |       }|t        |      r |       S |S 	  ||      S # t        $ r: t        j                  d|  d| dt        j                          t               |cY S w xY w)NzEnvironment variable 'z'' is defined but its associated value 'z8' could not be parsed.
The parse failed with exception:
)getcallable	Exceptionrj   rk   	traceback
format_excRuntimeWarning)rx   ctordefaultr:   rp   s       r   _readenvz._EnvReloader.process_environ.<locals>._readenv   s    KK%E}$,W$5wyB7BE{"  6tf =77<g >L!*!5!5!7 8: -	.
 s   2 A A54A5c                      | t        |       S d S rZ   )rF   )xs    r   optional_strz2_EnvReloader.process_environ.<locals>.optional_str   s    ]3q64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_CACHE_LOCATOR_CLASSESNUMBA_TRACENUMBA_CHROME_TRACENUMBA_DEBUG_TYPEINFER"NUMBA_DISABLE_TYPEINFER_FAIL_CACHENUMBA_CPU_NAMENUMBA_CPU_FEATURESgeneric	NUMBA_OPTr2   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                  j                  |       S rZ   )rd   re   abspath)re   s    r   fmt_html_pathz3_EnvReloader.process_environ.<locals>.fmt_html_pathn  s    |wwt,,r   NUMBA_DUMP_HTMLc                  f    t               syxs t        j                         } h d}|dhz  }| |vS )NF>   
core-avx-i
corei7-avx	ivybridgesandybridgenocona)r-   llget_host_cpu_name)cpu_namedisabled_cpusCPU_NAMEs     r   avx_defaultz1_EnvReloader.process_environ.<locals>.avx_defaultx  sA    #% $=r';';'=!= (+}44r   NUMBA_ENABLE_AVXNUMBA_DISABLE_INTEL_SVMLNUMBA_DISABLE_JITNUMBA_THREADING_LAYER_PRIORITYc                 "    | j                         S rZ   )r'   )strings    r   <lambda>z._EnvReloader.process_environ.<locals>.<lambda>  s
    6<<>r   )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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 y)Nr	   r   )rd   sched_getaffinityr1   r3   AttributeError	cpu_count)r   r   s     r   num_threads_defaultz9_EnvReloader.process_environ.<locals>.num_threads_default  sd    9$&$8$8! 1c"3A"6788 " 
 I$1i((s   - 	99NUMBA_NUM_THREADS)parallelzfCannot set NUMBA_NUM_THREADS to a different value once the threads have been launched (currently have z, trying to set rD   NUMBA_ENABLE_SYS_MONITORINGVS_PROFILERNUMBA_ENABLE_PROFILINGNUMBA_DEBUGINFONUMBA_CUDA_DEBUGINFONUMBA_EXTEND_VARIABLE_LIFETIMESc                 8    t        j                  |       }||S | S rZ   )shutilwhich)path_or_bingdbs     r   	which_gdbz/_EnvReloader.process_environ.<locals>.which_gdb!  s    ,,{+C/3:{:r   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   rF   lowerrV   r/   	IS_32BITSr   MACHINE_BITSfloatIS_WIN32rd   rp   r   re   joinsepglobalsnumba.np.ufuncr   _is_initializedRuntimeErrorlocalscopyrn   isupper)br@   rp   r   r   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CACHE_LOCATOR_CLASSESTRACECHROME_TRACEDEBUG_TYPEINFERDISABLE_TYPEINFER_FAIL_CACHE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_LOGr~   '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_COVERAGErx   r:   r   sb    `                                                                                               @r   rq   z_EnvReloader.process_environ   s7   		5 ""8#qA (00#q(:$ ##S.: .Q7	   4c:F
 2C>
 "**C"
 '//a'9# #++S!#5 Q/ %%>VL &&@#vN $$<c6J ##:CC .Q7	 ""8#qA .Q7	 .Q7	 ''BCM !))F),c!3 2C? .R8	
 !))FR P Q/   4c2> ##:CC (00#q(:$ ,lDA 4l'*8}':':'<	'I&*- {$6	!E !!6^L ,c>B ?C)+ ,c*=o? ##:CC #++S!#5 !))FQ O  ((Dc1M  ((Dc1M .U;	 !!6UC ""8#uE ""8#qA !!6Q? !!6UC 3S!< ?C3	- )=$?	5$ 0#{C
 &&Y8 2C; $,,)'$
 
 ##:CK &..Q&8" !!6	4H ''BI'-/   4 #S);%<> ""8#qA ""8#rB %%>QG ''N'*B0 ''N',c3 %--N-0!%5! 2C< !!6TB  ((Dc1M *22C*<& 3;;S!3E/ 

{3I,.GGLLI,N),D)(*RVVUG5;Y)H%$%>%>@	 %8$9! &&93&?A79,I126HH/''" %7$+I.A$B$D E E / !))F),a!1 "/"**!< $$c3/E+FH %%6=MN!)*@#q!I$,-N-0!%5!	; 0)UC
 ''BC'02 &&Q
 '''ER
 '//d'
# %%sA
   #q

 "8==?002KD%||~"'	$ 3r   N)F)rI   rJ   rK   r\   r[   r`   rs   rq    r   r   rX   rX   t   s     B**X(r   rX   c                  ,    t         j                          y)zL
    Reload the configuration from environment variables, if necessary.
    N)_env_reloaderr`   rq  r   r   reload_configrt  Q  s     r   ) r    r   rd   r
   r  rj   r   rl   ri   r}   llvmlite.bindingbindingr   r!   r  IS_OSXtuple__itemsize__r  r  version_info	PYVERSIONrg   r   r-   r   r/   rV   objectrX   rs  rt  rq  r   r   <module>r}     s     
 	 	   J
  <<""7+		 	 	*!!A%B	Ra 	 %( 4# #@$W(6 W(t I  Js   B/ /B98B9