我试图监控一个使用CUDA和MPI的进程,有没有办法我可以做到这一点,像命令“顶部”,但也监控GPU ?
当前回答
我在一台windows机器上用下面的代码创建了一个批处理文件来监视每一秒。这对我很管用。
:loop
cls
"C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi"
timeout /T 1
goto loop
如果你只想运行一次命令,NVIDIA -smi exe通常位于“C:\Program Files\NVIDIA Corporation”。
其他回答
我发现gpustat非常有用。它可以与pip install gpustat一起安装,并按进程或用户打印使用情况。
使用参数"——query-compute-apps="
nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv
如需进一步帮助,请关注
nvidia-smi --help-query-compute-app
在设备监控模式下运行nvidia-smi,例如:
$ nvidia-smi dmon -d 3 -s pcvumt
# gpu pwr gtemp mtemp mclk pclk pviol tviol sm mem enc dec fb bar1 rxpci txpci
# Idx W C C MHz MHz % bool % % % % MB MB MB/s MB/s
0 273 54 - 9501 2025 0 0 100 11 0 0 18943 75 5906 659
0 280 54 - 9501 2025 0 0 100 11 0 0 18943 75 7404 650
0 277 54 - 9501 2025 0 0 100 11 0 0 18943 75 7386 719
0 279 55 - 9501 2025 0 0 99 11 0 0 18945 75 6592 692
0 281 55 - 9501 2025 0 0 99 11 0 0 18945 75 7760 641
0 279 55 - 9501 2025 0 0 99 11 0 0 18945 75 7775 668
0 279 55 - 9501 2025 0 0 100 11 0 0 18947 75 7589 690
0 281 55 - 9501 2025 0 0 99 12 0 0 18947 75 7514 657
0 279 55 - 9501 2025 0 0 100 11 0 0 18947 75 6472 558
0 280 54 - 9501 2025 0 0 100 11 0 0 18947 75 7066 683
完整的细节在man nvidia-smi。
要获得使用资源的实时洞察,请执行:
Nvidia-smi -l
这将在每一秒循环并调用视图。
如果你不想在控制台历史记录中保留循环调用的过去痕迹,你也可以这样做:
观看-n0.1 nvidia-smi
其中0.1是时间间隔,单位为秒。
这可能不够优雅,但你可以尝试一下
while true; do sleep 2; nvidia-smi; done
我也尝试了@Edric的方法,它很有效,但我更喜欢nvidia-smi的原始布局。