首页 > 解决方案 > 检查 GPU 是否共享

问题描述

当 GPU 与其他进程(例如 Xorg 或其他 CUDA 进程)共享时,CUDA 进程最好不要消耗所有剩余内存,而是动态增加其使用量。

(您可能会间接从中得到各种错误,例如Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR。但这个问题与此无关。)

(在 TensorFlow 中,您将使用allow_growth=TrueGPU 选项来完成此操作。但这个问题与此无关。)

有没有一种简单的方法来检查 GPU 当前是否被其他进程使用?(我不是在问它是否配置为用于独占访问。)

我可以解析输出nvidia-smi并寻找其他进程。但这似乎有点 hacky,可能不那么可靠,也不够简单。

(我的软件使用的是 TensorFlow,所以如果 TensorFlow 提供了这样的功能,那很好。但如果没有,我不在乎这是 C API 还是 Python 函数。不过,我宁愿避免其他外部依赖,除了那些我'我无论如何都在使用,比如 CUDA 本身或 TensorFlow。我不害怕使用ctypes。所以考虑这个问题语言不变。)

标签: cuda

解决方案


nvmlDeviceGetComputeRunningProcessesnvmlDeviceGetGraphicsRunningProcesses。(文档。)这是一个 C API,但pynvml如果我不关心额外的依赖项,我可以使用。 示例用法通过)。


推荐阅读