限制OpenCL访问英特尔CPU?

目前可以使用CUDA_VISIBLE_DEVICES env变量来限制OpenCL对Linux上的NVIDIA GPU的访问。 有没有人知道类似的方式来限制OpenCL访问英特尔CPU设备? (动机:我试图强制计算服务器的用户通过SLURM专门运行他们的OpenCL程序。)


一种可能性是直接链接到英特尔OpenCL库(我的系统上的libintelocl.so ),而不是通过OpenCL ICD加载程序。


在纯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上运行,但它可能足以指导他们不会错误地在那里运行。

链接地址: http://www.djcxy.com/p/46431.html

上一篇: restrict OpenCL access to Intel CPU?

下一篇: Virtualization CPU Emulation