是否可以为一个进程锁定/保留 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 进程执行此操作。
给定一个 GPU 池,我们通过检查 GPU 上是否没有 运行 进程来检查 GPU 是否空闲。
问题是我们的进程并不立即需要 GPU。因此,有可能两个进程分配了相同的 GPU。
是否可以为特定进程锁定/保留 GPU?通过 shell?
GPU 应该只能由 运行 进程使用,直到它完成,然后 GPU 应该再次空闲。
假设 GPU 是 Nvidia 的(由标签推断)
它的答案类似于:
回答你的问题
sudo nvidia-smi -c 3
将使设备进入独占计算模式,只允许单个进程在设备上创建上下文。
请注意,进程本身必须实际创建一个上下文,最好是在启动时,这样才能有效。你如何做到这一点取决于进程本身是什么以及它使用什么 API 系列来连接到 CUDA(即运行时或驱动程序 API,或者构建在运行时或驱动程序之上的某种抽象级别API)。另一个进程无法代表 GPU 进程执行此操作。