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