环境变量#

运行时使用#

以下是 CuPy 在运行时使用的环境变量。

CUDA_PATH#

包含 CUDA 的目录路径。默认使用包含 nvcc 的目录的父目录。如果找不到 nvcc,则使用 /usr/local/cuda。详见 使用自定义 CUDA 安装

CUPY_CACHE_DIR#

默认值:${HOME}/.cupy/kernel_cache

存储内核缓存的目录路径。详见 性能最佳实践

CUPY_CACHE_SAVE_CUDA_SOURCE#

默认值:0

如果设置为 1,CUDA 源代码文件将与编译后的二进制文件一起保存在缓存目录中,用于调试。注意:如果缓存中已存在编译后的二进制文件,则不会保存源代码文件。

CUPY_CACHE_IN_MEMORY#

默认值:0

如果设置为 1,则 CUPY_CACHE_DIRCUPY_CACHE_SAVE_CUDA_SOURCE 将被忽略,缓存将存储在内存中。此环境变量可以减少磁盘 I/O,但在将 nvcc 设置为编译器后端时会被忽略。

CUPY_DISABLE_JITIFY_CACHE#

默认值:0

如果设置为 1,Jitify 加载的头文件将不会缓存在磁盘上(到 CUPY_CACHE_DIR)。默认始终缓存。

CUPY_DUMP_CUDA_SOURCE_ON_ERROR#

默认值:0

如果设置为 1,当 CUDA 内核编译失败时,CuPy 会将 CUDA 内核代码转储到标准错误输出。

CUPY_CUDA_COMPILE_WITH_DEBUG#

默认值:0

如果设置为 1,CUDA 内核将使用调试信息编译(--device-debug--generate-line-info)。

CUPY_GPU_MEMORY_LIMIT#

默认值:0 (无限制)

每个设备可以分配的内存量。该值可以指定为绝对字节数或每个 GPU 总内存的百分比(例如,"90%")。详见 内存管理

CUPY_SEED#

设置随机数生成器的种子。

CUPY_EXPERIMENTAL_SLICE_COPY#

默认值:0

如果设置为 1,将启用以下语法

cupy_ndarray[:] = numpy_ndarray
CUPY_ACCELERATORS#

默认值:"cub"(在 ROCm HIP 环境中,默认值为 "",即不使用加速器。)

一个逗号分隔的后端名称字符串(cubcutensorcutensornet),指示在 CuPy 操作中使用的加速后端及其优先级(降序排列)。默认情况下,所有加速器在 HIP 上禁用,仅在 CUDA 上启用 CUB。

CUPY_TF32#

默认值:0

如果设置为 1,它允许 CUDA 库使用 Tensor Cores TF32 计算进行 32 位浮点计算。

CUPY_CUDA_ARRAY_INTERFACE_SYNC#

默认值:1

这控制 CuPy 作为 Consumer 的行为。如果设置为 0,当 CuPy 消费由实现 CUDA Array Interface 的外部库提供的设备数组时,将*不*执行流同步。更多详情,请参阅 CUDA Array Interface v3 文档中的 Synchronization 要求。

CUPY_CUDA_ARRAY_INTERFACE_EXPORT_VERSION#

默认值:3

这控制 CuPy 作为 Producer 的行为。如果设置为 2,正在操作数据的 CuPy 流将不会导出,因此 Consumer(另一个库)将不会执行任何流同步。更多详情,请参阅 CUDA Array Interface v3 文档中的 Synchronization 要求。

CUPY_DLPACK_EXPORT_VERSION#

默认值:0.6

这控制 CuPy 的 DLPack 支持。目前,将值设置为小于 0.6 会将托管内存伪装成普通设备内存,从而支持与尚未更新 DLPack 支持的库进行数据交换;而从 0.6 开始,CUDA 托管内存可以被正确识别为有效的设备类型。

NVCC#

默认值:nvcc

定义编译 CUDA 源代码时使用的编译器。注意,大多数 CuPy 内核使用 NVRTC 构建;此环境变量仅在 RawKernel/RawModule 使用 nvcc 后端或使用 cub 作为加速器时有效。

CUPY_CUDA_PER_THREAD_DEFAULT_STREAM#

默认值:0

如果设置为 1,CuPy 将使用 CUDA 每线程默认流,有效地使每个主机线程自动在自己的流中执行,除非指定了 CUDA 默认 (null) 流或用户创建的流。如果设置为 0(默认),则使用 CUDA 默认 (null) 流,除非指定了每线程默认流 (ptds) 或用户创建的流。

CUPY_COMPILE_WITH_PTX#

默认值:0

默认情况下,CuPy 直接将内核编译为 SASS (CUBIN) 以支持 CUDA 增强兼容性。如果设置为 1,CuPy 会将内核编译为 PTX,并让 CUDA Driver 从 PTX 组装 SASS。此选项仅对 CUDA 11.1 或更高版本有效;在早期 CUDA 版本上,CuPy 总是编译为 PTX。此外,此选项仅在选择 NVRTC 作为编译后端时适用。NVCC 后端总是编译为 SASS (CUBIN)。

CUDA Toolkit 环境变量

除了上面列出的环境变量之外,与任何 CUDA 程序一样,CUDA Toolkit Documentation 中列出的所有 CUDA 环境变量也会被遵守。

注意

CUPY_ACCELERATORSNVCC 环境变量设置时,需要 g++-6 或更高版本作为运行时主机编译器。关于如何安装 g++ 的详细信息,请参阅 从源代码安装 CuPy

安装时使用#

这些环境变量在安装(从源代码构建 CuPy)时使用。

CUTENSOR_PATH#

cuTENSOR 根目录的路径,该目录包含 libinclude 目录。(实验性)

CUPY_INSTALL_USE_HIP#

默认值:0

如果设置为 1,则为 AMD ROCm 平台构建 CuPy(实验性)。关于构建 ROCm 支持的详细信息,请参阅 安装二进制包

CUPY_USE_CUDA_PYTHON#

默认值:0

如果设置为 1,CuPy 将使用 CUDA Python 构建。

CUPY_NVCC_GENERATE_CODE#

为特定的 CUDA 架构构建 CuPy。例如

CUPY_NVCC_GENERATE_CODE="arch=compute_60,code=sm_60"

要指定多个架构,请使用分号 (`;`) 连接 arch=... 字符串。如果指定 current,则会在构建时自动检测当前安装的 GPU 架构。如果未设置此项,默认支持所有架构。

CUPY_NUM_BUILD_JOBS#

默认值:4

启用或禁用并行构建,设置用于并行构建扩展的进程数。

CUPY_NUM_NVCC_THREADS#

默认值:2

启用或禁用 nvcc 并行编译,设置使用 nvcc 编译文件时使用的线程数。

此外,在构建时也会尊重环境变量 CUDA_PATHNVCC