企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 2.5。环境变量 > 原文: [http://numba.pydata.org/numba-doc/latest/reference/envvars.html](http://numba.pydata.org/numba-doc/latest/reference/envvars.html) Numba 允许通过使用环境变量来改变其行为。除非另有说明,否则这些变量具有整数值且默认为零。 为方便起见,Numba 还支持使用配置文件来保留配置设置。注意:要使用此功能,必须安装`pyyaml`。 配置文件必须命名为`.numba_config.yaml`并存在于调用 Python 解释器的目录中。在搜索环境变量之前,将读取配置文件(如果存在)以进行配置设置。这意味着环境变量设置将覆盖从配置文件获取的设置(配置文件用于设置永久首选项,而环境变量用于短暂首选项)。 配置文件的格式是`YAML`格式的字典,它将下面的环境变量(没有`NUMBA_`前缀)映射到所需的值。例如,要永久打开开发人员模式(`NUMBA_DEVELOPER_MODE`环境变量)并控制流程图打印(`NUMBA_DUMP_CFG`环境变量),请创建一个包含以下内容的配置文件: ```py developer_mode: 1 dump_cfg: 1 ``` 在想要使用基于终端背景颜色的设定颜色方案的情况下,这尤其有用。例如,如果终端背景颜色为黑色,则`dark_bg`颜色方案将非常适合,并且可以通过添加以下内容设置为永久使用: ```py color_scheme: dark_bg ``` ## 2.5.1。错误和警告显示 ```py NUMBA_WARNINGS ``` 如果设置为非零,则启用 Numba 警告的打印输出,否则将禁止警告。警告可以深入了解编译过程。 ## 2.5.2。调试 这些变量会影响 [JIT 函数](../glossary.html#term-jit-function)编译过程中打印的内容。 ```py NUMBA_DEVELOPER_MODE ``` 如果设置为非零,则开发人员模式会生成完整的回溯并禁用帮助说明。默认值为零。 ```py NUMBA_FULL_TRACEBACKS ``` 如果设置为非零,则在发生异常时启用完全回溯。默认为 <cite>NUMBA_DEVELOPER_MODE</cite> 设置的值。 ```py NUMBA_SHOW_HELP ``` 如果未设置或设置为零,则显示用户级帮助信息。默认为 <cite>NUMBA_DEVELOPER_MODE</cite> 设置的值的否定。 ```py NUMBA_DISABLE_ERROR_MESSAGE_HIGHLIGHTING ``` 如果设置为非零错误消息突出显示被禁用。这对于在 CI 系统上运行测试套件非常有用。 ```py NUMBA_COLOR_SCHEME ``` 更改错误报告中使用的颜色方案(需要安装`colorama`包才能工作)。有效值为: * `no_color`没有添加颜色,只是粗体字体加权。 * `dark_bg`适用于背景较暗的终端。 * `light_bg`适用于背景较浅的终端。 * `blue_bg`适用于蓝色背景的终端。 * `jupyter_nb`适用于 Jupyter 笔记本电脑。 _ 默认值:_ `no_color`。值的类型是`string`。 ```py NUMBA_DEBUG ``` 如果设置为非零,则在函数编译期间打印出所有可能的调试信息。使用下面的其他变量可以获得更细粒度的控制。 ```py NUMBA_DEBUG_FRONTEND ``` 如果设置为非零,则在编译器前端的操作期间打印出调试信息,直到并包括 Numba 中间表示的生成。 ```py NUMBA_DEBUGINFO ``` 如果设置为非零,则通过设置`jit`中`debug`选项的默认值,为整个应用程序启用调试。请注意,启用调试信息会显着增加每个已编译函数的内存消耗。默认值等于 <cite>NUMBA_ENABLE_PROFILING</cite> 的值。 ```py NUMBA_GDB_BINARY ``` 设置`gdb`二进制文件以用于 Numba 的`gdb`支持,它采用路径和二进制文件的全名,例如:`/path/from/root/to/binary/name_of_gdb_binary`这是为了允许使用来自非 COD3 的`gdb`具有非默认名称的默认位置。如果未设置,则假定`gdb`位于`/usr/bin/gdb`。 ```py NUMBA_DEBUG_TYPEINFER ``` 如果设置为非零,则打印出有关类型推断的调试信息。 ```py NUMBA_DEBUG_CACHE ``` 如果设置为非零,则打印出有关 [JIT 编译缓存](../user/jit.html#jit-cache)操作的信息。 ```py NUMBA_ENABLE_PROFILING ``` 启用 LLVM 的 JIT 事件以支持 jitted 函数的分析。某些分析器下会自动启用此选项。 ```py NUMBA_TRACE ``` 如果设置为非零,则跟踪某些函数调用(函数入口和出口事件,包括参数和返回值)。 ```py NUMBA_DUMP_BYTECODE ``` 如果设置为非零,则打印出已编译函数的 Python [字节码](../glossary.html#term-bytecode)。 ```py NUMBA_DUMP_CFG ``` 如果设置为非零,则打印出有关已编译函数的控制流图的信息。 ```py NUMBA_DUMP_IR ``` 如果设置为非零,则打印出已编译函数的 Numba Intermediate Representation。 ```py NUMBA_DUMP_ANNOTATION ``` 如果设置为非零,则打印出已编译函数的类型注释。 ```py NUMBA_DUMP_LLVM ``` 转储未经优化的 LLVM 汇编程序编译函数源。未经优化的代码通常非常冗长;因此,建议改用 [`NUMBA_DUMP_OPTIMIZED`](#envvar-NUMBA_DUMP_OPTIMIZED) 。 ```py NUMBA_DUMP_FUNC_OPT ``` 在 LLVM“函数优化”通过之后但在“模块优化”通过之前转储 LLVM 汇编程序源。这在开发 Numba 本身时很有用,否则使用 [`NUMBA_DUMP_OPTIMIZED`](#envvar-NUMBA_DUMP_OPTIMIZED) 。 ```py NUMBA_DUMP_OPTIMIZED ``` 在所有优化过程之后转储已编译函数的 LLVM 汇编器源。输出包括 raw 函数以及与 CPython 兼容的包装器(其名称以`wrapper.`开头)。请注意,该函数通常也会在包装器内部内联。 ```py NUMBA_DEBUG_ARRAY_OPT ``` 转储与`parallel=True` jit 装饰器选项相关的处理相关的调试信息。 ```py NUMBA_DEBUG_ARRAY_OPT_RUNTIME ``` 转储与`parallel=True` jit 装饰器选项关联的运行时调度程序相关的调试信息。 ```py NUMBA_DEBUG_ARRAY_OPT_STATS ``` 转储有关将多少个运算符/调用转换为并行 for 循环以及多少融合在一起的统计信息,这些都与`parallel=True` jit 装饰器选项相关联。 ```py NUMBA_PARALLEL_DIAGNOSTICS ``` 如果设置为 1 到 4(包括 1 和 4)之间的整数值,Numba 进行的并行变换的诊断信息将写入 STDOUT。值越高,产生的信息越详细。 ```py NUMBA_DUMP_ASSEMBLY ``` 转储已编译函数的本机汇编代码。 也可以看看 [故障排除和提示](../user/troubleshoot.html#numba-troubleshooting)和 [Numba 架构](../developer/architecture.html#architecture)。 ## 2.5.3。编译选项 ```py NUMBA_OPT ``` 优化水平;此选项直接传递给 LLVM。 _ 默认值:_ 3 ```py NUMBA_LOOP_VECTORIZE ``` 如果设置为非零,则启用 LLVM 循环向量化。 _ 默认值:_ 1(32 位 Windows 除外) ```py NUMBA_ENABLE_AVX ``` 如果设置为非零,则在 LLVM 中启用 AVX 优化。默认情况下,Sandy Bridge 和 Ivy Bridge 架构禁用此功能,因为它有时会导致这些平台上的代码速度变慢。 ```py NUMBA_DISABLE_INTEL_SVML ``` 如果设置为非零且 Intel SVML 可用,则将禁用 SVML。 ```py NUMBA_COMPATIBILITY_MODE ``` 如果设置为非零,则 JIT 函数的编译永远不会完全失败,而是生成一个简单地解释函数的回退。只有在从旧的 Numba 版本(0.12 之前)迁移大型代码库时才能使用它,并希望避免一次性破坏所有内容。否则,请不要使用它。 ```py NUMBA_DISABLE_JIT ``` 完全禁用 JIT 编译。 [`jit()`](jit-compilation.html#numba.jit "numba.jit") 装饰器就像它不执行任何操作一样,并且装饰函数的调用调用原始 Python 函数而不是编译版本。如果要在代码上运行 Python 调试器,这可能很有用。 ```py NUMBA_CPU_NAME and NUMBA_CPU_FEATURES ``` 覆盖 CPU 和 CPU 功能检测。通过设置`NUMBA_CPU_NAME=generic`,将为 CPU 体系结构选择通用 CPU 模型,并且功能列表(`NUMBA_CPU_FEATURES`)默认为空。必须以`+feature1,-feature2`格式列出 CPU 功能,其中`+`表示启用,`-`表示禁用。例如,`+sse,+sse2,-avx,-avx2`启用 SSE 和 SSE2,并禁用 AVX 和 AVX2。 这些设置将传递给 LLVM 以配置编译目标。要获取可用选项列表,请使用 LLVM 中的`llc`命令行工具,例如: ```py llc -march=x86 -mattr=help ``` 小费 要强制所有缓存函数(`@jit(cache=True)`)发出可移植代码(在同一架构和操作系统中可移植),只需设置`NUMBA_CPU_NAME=generic`即可。 ```py NUMBA_FUNCTION_CACHE_SIZE ``` 覆盖函数高速缓存的大小,以便在内存中保留最近反序列化的函数。在像 [Dask](http://dask.pydata.org) 这样的系统中,通常会对函数进行多次反序列化。只要解释器​​中有某个引用,Numba 就会缓存函数。此高速缓存大小变量控制将保留不再引用的函数的数量,以防它们将来出现。这种实现并不是真正的 LRU,但是对于大多数情况来说,大尺寸的缓存应该足够了。 _ 默认值:_ 128 ## 2.5.4。 GPU 支持 ```py NUMBA_DISABLE_CUDA ``` 如果设置为非零,则禁用 CUDA 支持。 ```py NUMBA_FORCE_CUDA_CC ``` 如果设置,则强制 CUDA 计算功能为给定版本(类型为`major.minor`的字符串),而不考虑连接的设备。 ```py NUMBA_ENABLE_CUDASIM ``` 如果设置,请不要编译和执行 GPU 的代码,而是使用 CUDA Simulator。用于调试目的。 ## 2.5.5。线程控制 ```py NUMBA_NUM_THREADS ``` 如果设置,则并行 CPU 目标的线程池中的线程数将采用此值。必须大于零。该值与`OMP_NUM_THREADS`和`MKL_NUM_THREADS`无关。 _ 默认值:_ 运行时确定的系统 CPU 核心数,可通过`numba.config.NUMBA_DEFAULT_NUM_THREADS`访问。 ```py NUMBA_THREADING_LAYER ``` 此环境变量控制用于 CPU 并行目标(`@vectorize(target='parallel')`,`@guvectorize(target='parallel')`和`@njit(parallel=True)`)的并发执行的库。变量类型是字符串,默认情况下是`default`,它将根据运行时中可用的内容选择线程层。有效值为(有关这些的更多信息,请参见[线程层文档](../user/threading-layer.html#numba-threading-layer)): * `default` - 根据当前运行时可用的内容选择线程层。 * `safe` - 选择一个既安全又安全的线程层(需要 TBB 包)。 * `forksafe` - 选择叉安全的线程层。 * `threadsafe` - 选择线程安全的线程层。 * `tbb` - 由英特尔 TBB 支持的线程层。 * `omp` - 由 OpenMP 支持的线程层。 * `workqueue` - 一个简单的内置工作共享任务调度程序。