目前可以使用 CUDA_VISIBLE_DEVICES 环境变量限制 OpenCL 访问 Linux 上的 NVIDIA GPU。有谁知道限制 OpenCL 访问 Intel CPU 设备的类似方法?(动机:我试图强迫计算服务器的用户通过 SLURM 专门运行他们的 OpenCL 程序。)
问问题
499 次
2 回答
1
一种可能性是直接链接到英特尔 OpenCL 库(libintelocl.so
在我的系统上),而不是通过 OpenCL ICD 加载程序。
于 2014-08-29T18:28:46.497 回答
1
在纯 OpenCL 中,避免将任务分配给 CPU 的方法是不选择它(作为平台或设备)。clGetDeviceIDs 可以使用 device_type 参数来做到这一点(不要设置 CL_DEVICE_TYPE_CPU 位)。
在 ICD 级别,如果是 Intel 的实现,我想您可以排除 CPU 驱动程序;对于 AMD,它变得有点棘手,因为他们有一个适用于两个平台的驱动程序(似乎 CPU_MAX_COMPUTE_UNITS 环境变量可以将其限制为一个核心,但不能禁用它)。
如果目标是将 OpenCL 程序限制为通过特定启动器运行,例如 slurm,一种方法可能是为该启动器添加一个组,并在 /etc/OpenCL(可能还有驱动程序设备节点)中创建 OpenCL ICD 供应商文件只能由该组使用。
这些都不会阻止用户拥有自己的 OpenCL 实现以在 CPU 上运行,但足以引导他们不要错误地在 CPU 上运行。
于 2014-09-08T09:57:47.850 回答