DALI 环境变量#
此页面列出了 DALI 使用的环境变量。请注意,这些变量通常控制 DALI 的内部行为,如有更改,恕不另行通知。
内存管理#
DALI_USE_DEVICE_MEM_POOL#
值:0、1
默认值:1
如果为非零值,DALI 将对设备内存使用内存池;否则将使用普通的 cudaMalloc
。
警告
仅在调试时指定 0,这样做会大幅降低性能。
DALI_USE_VMM#
值:0、1
默认值:1
如果为非零值,DALI 将在可能的情况下使用基于虚拟内存管理函数(cuMemCreate
、cuMemMap
等)的内存池。如果禁用,DALI 将使用基于 cudaMalloc 的池。
DALI_USE_PINNED_MEM_POOL#
值:0、1
默认值:1
如果为非零值,DALI 将对设备可访问的主机内存使用内存池;否则将使用普通的 cudaMallocHost
。
警告
仅在调试时指定 0,这样做会大幅降低性能。
DALI_USE_CUDA_MALLOC_ASYNC#
值:0、1
默认值:0
如果启用,DALI 将使用 cudaMallocAsync
作为设备内存分配机制。此标志与 DALI_USE_DEVICE_MEM_POOL=0
不兼容,并且显式启用 DALI_USE_VMM=1
。
DALI_MALLOC_POOL_THRESHOLD#
值:>= 0,可以选择后跟 k 表示 KiB 或 M 表示 MiB。
默认值:0
如果为非零值,则 dali 对指定大小以下的常规主机内存使用内部内存池。
DALI_GDS_CHUNK_SIZE#
值:2 的幂,4k 到 16M,带有可选的 k 或 M 后缀
默认值:2M
GPU Direct Storage 在 DALI 中使用的内存块大小。
DALI_HOST_BUFFER_SHRINK_THRESHOLD#
值:浮点数,0..1
默认值:0.5
如果设置,调整大小到低于容量给定分数的缓冲区将被缩小以适应数据。
DALI_BUFFER_GROWTH_FACTOR#
值:浮点数,>=1
默认值:1.1
当大于 1 时,将分配带有余量的缓冲区以避免频繁的重新分配。
DALI_HOST_BUFFER_GROWTH_FACTOR#
DALI_BUFFER_GROWTH_FACTOR 的专用版本,仅适用于 CPU 缓冲区。
DALI_DEVICE_BUFFER_GROWTH_FACTOR#
DALI_BUFFER_GROWTH_FACTOR 的专用版本,仅适用于 GPU 缓冲区。
DALI_RESTRICT_PINNED_MEM#
值:0、1
默认值:0
如果启用,DALI 将减少对固定主机内存的使用;在固定内存量受限的系统(例如 WSL)上很有用。
图像解码#
DALI_MAX_JPEG_SCANS#
值:>= 1
默认值:256
渐进式 JPEG 扫描的最大数量。指定较低的值以缓解恶意构造的 JPEG,这些 JPEG 旨在用于拒绝服务攻击。
DALI_NVIMGCODEC_LOG_LEVEL#
值:1..5
默认值:2
nvJPEG 生成的日志的详细程度
杂项#
DALI_OPTIMIZE_GRAPH#
值:0、1
默认值:1
仅用于调试;如果设置为 0,则禁用所有 DALI 图优化。
DALI_ENABLE_CSE#
值:0、1
默认值:1
仅用于调试;如果设置为 0,则禁用公共子表达式消除 (CSE) 图优化。如果禁用 DALI_OPTIMIZE_GRAPH,则此标志无效。
DALI_USE_EXEC2#
值:0、1
默认值:0
如果设置,DALI 将使用动态执行器(就像在 Pipeline 中设置了 exec_dynamic=True
一样),只要指定了具有统一队列大小的默认异步流水线执行。启用动态执行器可能会提高内存消耗。
注意
此标志仅在后端使用;Python 前端不知道它,并且不会启用通过在 pipeline 中指定 exec_dynamic=True
而启用的新特性和优化。
DALI_AFFINITY_MASK#
值:逗号分隔的 CPU ID 列表
默认值:空
设置线程亲和性。列表中的条目数必须与传递给 pipeline 的 num_threads
匹配。需要 NVML。
DALI_PRELOAD_PLUGINS#
值:冒号分隔的路径列表
默认值:空
如果指定,DALI 将预加载此列表中指定的插件。
DALI_DISABLE_NVML#
值:0、1
默认值:0
如果设置,DALI 不会尝试使用 NVML。在没有 NVML 支持的系统(例如 WSL2)上很有用。
测试#
DALI_EXTRA_PATH#
值:路径
默认值:空
DALI_extra 存储库的内容所在的路径。运行 DALI 测试所必需。