arrow系列32---环境变量
作者:yunjinqi   类别:    日期:2023-10-17 19:48:49    阅读:276 次   消耗积分:0 分    

环境变量 

以下环境变量可用于在运行时影响 Arrow C++ 的行为。许多这些变量仅在每个进程中检查一次(例如,当加载 Arrow C++ DLL 时),因此不能假定稍后更改它们的值会产生效果。

ARROW_DEBUG_MEMORY_POOL 

启用简单的内存检查,以防止缓冲区溢出。当检测到缓冲区溢出时,此环境变量的值选择行为:

  • abort:退出进程并返回非零退出值;

  • trap:触发特定于平台的调试器断点/陷阱指令;

  • warn:在 stderr 上打印警告并继续执行。

如果未设置此变量或其值为空,则内存检查将被禁用。

注意 虽然此功能可能很有用且开销小,但它不能替代更复杂的内存检查工具,如 Valgrind 或 Address Sanitizer。

ARROW_DEFAULT_MEMORY_POOL 

覆盖默认内存池的后端。可能的值包括 jemalloc、mimalloc 和 system,取决于构建 Arrow C++ 时启用了哪些后端。

ARROW_IO_THREADS 

覆盖全局 IO 线程池的默认线程数。此环境变量的值应该是正整数。

ARROW_LIBHDFS_DIR 

包含 C HDFS 库的目录(Windows 上为 hdfs.dll,macOS 上为 libhdfs.dylib,其他平台上为 libhdfs.so)。或者,可以设置 HADOOP_HOME。

ARROW_TRACING_BACKEND 

导出基于 OpenTelemetry 的执行跟踪的后端。可能的值包括:

  • ostream:将文本日志消息发送到标准输出(stdout);

  • otlp_http:将 OTLP JSON 编码的跟踪发送到 HTTP 服务器(默认情况下,端点 URL 为“http://localhost:4318/v1/traces”);

  • arrow_otlp_stdout:将 JSON 跟踪发送到标准输出(stdout);

  • arrow_otlp_stderr:将 JSON 跟踪发送到标准错误(stderr)。

如果未设置此变量,则不会导出跟踪。

如果 Arrow C++ 未启用跟踪,则此环境变量不起作用。

另请参见

用于远程端点的 OpenTelemetry 配置

ARROW_USER_SIMD_LEVEL 

要选择的 SIMD 优化级别。默认情况下,Arrow C++ 在运行时检测当前 CPU 的能力并基于该信息选择最佳的执行路径。可以通过将此环境变量设置为明确定义的值来覆盖检测。支持的值包括:

  • NONE:禁用任何运行时选择的 SIMD 优化;

  • SSE4_2:启用任何基于 SSE2 的优化,直到 SSE4.2(包括 SSE4.2);

  • AVX:启用任何基于 AVX 的优化和之前的优化;

  • AVX2:启用任何基于 AVX2 的优化和之前的优化;

  • AVX512:启用任何基于 AVX512 的优化和之前的优化。

此环境变量仅对 x86 平台生效。其他平台目前不实现任何形式的运行时分发。

注意

除了运行时分发,还可以使用 ARROW_SIMD_LEVEL CMake 配置变量设置编译时 SIMD 级别。与运行时分发不同,编译时 SIMD 优化不能在运行时更改(例如,如果使用启用了 AVX512 的 Arrow C++ 编译 Arrow,则生成的二进制文件仅在启用了 AVX512 的 CPU 上运行)。将 ARROW_USER_SIMD_LEVEL=NONE 设置为禁止明确的 SIMD 优化代码的执行,但不排除编译器生成的 SIMD 指令的执行。例如,在 x86_64 平台上,默认情况下,Arrow 使用 ARROW_SIMD_LEVEL=SSE4_2 进行构建。编译器可能从任何 C/C++ 源代码生成 SSE4.2 指令。在不支持 SSE4.2 的旧版 x86_64 平台上,Arrow 二进制文件可能会因 SIGILL(非法指令)而失败。用户必须通过设置 cmake 选项 ARROW_SIMD_LEVEL=NONE 从头开始重新构建 Arrow 和 PyArrow。

GANDIVA_CACHE_SIZE 

Gandiva JIT 编译缓存中要保留的条目数。该缓存在内存中,不会跨进程保持持久状态。

HADOOP_HOME 

Hadoop 安装路径。

JAVA_HOME 

设置 Java 运行时环境的安装路径。如果 Java 安装在非标准位置,则可能需要此设置以支持 HDFS。

OMP_NUM_THREADS 

全局(进程范围)CPU 线程池中的工作线程数。如果未定义此环境变量,将使用特定于平台的例程来确定可用的硬件并发性。

OMP_THREAD_LIMIT 

全局(进程范围)CPU 线程池中工作线程数的上限。

例如,如果当前计算机有 4 个硬件线程且 OMP_THREAD_LIMIT 为 8,则全局 CPU 线程池将有 4 个工作线程。但如果 OMP_THREAD_LIMIT 为 2,则全局 CPU 线程池将有 2 个工作线程。


版权所有,转载本站文章请注明出处:云子量化, http://www.woniunote.com/article/365
上一篇:arrow系列31---OpenTelemetry
下一篇:《quantitative finance with cpp》阅读笔记1