![如何检查 GPU 是否正在用于计算或是否空闲?](https://linux22.com/image/225147/%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5%20GPU%20%E6%98%AF%E5%90%A6%E6%AD%A3%E5%9C%A8%E7%94%A8%E4%BA%8E%E8%AE%A1%E7%AE%97%E6%88%96%E6%98%AF%E5%90%A6%E7%A9%BA%E9%97%B2%EF%BC%9F.png)
我正在尝试确定当前使用哪些 GPU 在 GPU 服务器上进行计算。更好的是,我希望能够回答 GPU 是否可以“免费”运行新作业。理想情况下,它会定期轮询,一旦我识别出一张免费卡,我就会在上面运行我自己的工作。
有什么想法是否有现成的方法可以做到这一点?
解析 nvidia-smi 输出是一个选项,但是是否有一个预先存在的命令行参数列出每个 GPU 上正在运行的进程?
答案1
经过进一步谷歌搜索后,似乎可以从当前正在执行的计算进程的 PID 列表中找出这一点:
nvidia-smi --query-compute-apps=pid --format=csv,noheader -i 0
上面将查询 GPU #0。下一步是循环执行此操作。 GPU 的数量可以通过以下方式推断:
nvidia-smi -L | wc -l
那么 bash 会循环遍历前者的结果来窥探未占用的 GPU 吗?有关于这个的想法吗?有没有更直接的方法来解决这个问题?