是否可以为一个进程锁定/保留 GPU?

Is it possible to lock / reserve a GPU for one process?

给定一个 GPU 池,我们通过检查 GPU 上是否没有 运行 进程来检查 GPU 是否空闲。

问题是我们的进程并不立即需要 GPU。因此,有可能两个进程分配了相同的 GPU。

是否可以为特定进程锁定/保留 GPU?通过 shell?

GPU 应该只能由 运行 进程使用,直到它完成,然后 GPU 应该再次空闲。

假设 GPU 是 Nvidia 的(由标签推断) 它的答案类似于:

回答你的问题

sudo nvidia-smi -c 3

将使设备进入独占计算模式,只允许单个进程在设备上创建上下文。

请注意,进程本身必须实际创建一个上下文,最好是在启动时,这样才能有效。你如何做到这一点取决于进程本身是什么以及它使用什么 API 系列来连接到 CUDA(即运行时或驱动程序 API,或者构建在运行时或驱动程序之上的某种抽象级别API)。另一个进程无法代表 GPU 进程执行此操作。