我正在尝试确定当前使用哪些 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 吗?有关于这个的想法吗?有没有更直接的方法来解决这个问题?