我想監視使用cuda和MPI的過程,有沒有什麼辦法可以做到這一點,就像命令「頂部」,但也監視GPU呢?GPU的使用CUDA的頂部命令
回答
我不知道的東西,結合這些信息,但是你可以使用nvidia-smi
工具,以獲得原始數據,像這樣(感謝@jmsu對-l提示):
$ nvidia-smi -q -g 0 -d UTILIZATION -l
==============NVSMI LOG==============
Timestamp : Tue Nov 22 11:50:05 2011
Driver Version : 275.19
Attached GPUs : 2
GPU 0:1:0
Utilization
Gpu : 0 %
Memory : 0 %
從here下載並安裝最新的穩定CUDA驅動程序(4.2)。在Linux上,nVidia-smi 295.41給你正是你想要的。使用nvidia-smi
:
[[email protected] release]# nvidia-smi
Wed Sep 26 23:16:16 2012
+------------------------------------------------------+
| NVIDIA-SMI 3.295.41 Driver Version: 295.41 |
|-------------------------------+----------------------+----------------------+
| Nb. Name | Bus Id Disp. | Volatile ECC SB/DB |
| Fan Temp Power Usage /Cap | Memory Usage | GPU Util. Compute M. |
|===============================+======================+======================|
| 0. Tesla C2050 | 0000:05:00.0 On | 0 0 |
| 30% 62 C P0 N/A/N/A | 3% 70MB/2687MB | 44% Default |
|-------------------------------+----------------------+----------------------|
| Compute processes: GPU Memory |
| GPU PID Process name Usage |
|=============================================================================|
| 0. 7336 ./align 61MB |
+-----------------------------------------------------------------------------+
編輯:在最新的NVIDIA驅動程序,這支持僅限於特斯拉卡。
另一個有用的監測方法是使用ps
過濾上消耗你的GPU過程。我用這個很多:
ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `lsof -n -w -t /dev/nvidia*`
這將顯示所有nvidia GPU利用進程和一些關於他們的統計資料。 lsof ...
檢索使用當前用戶擁有的nvidia GPU的所有進程的列表,ps -p ...
顯示這些進程的結果ps
。 ps f
爲子/父進程關係/層次結構顯示了很好的格式,-o
指定了自定義格式。這與剛剛做ps u
類似,但添加了進程組ID並刪除了一些其他字段。
與nvidia-smi
相比,其中一個優勢是它將顯示進程分叉以及使用GPU的主進程。
不過,它僅限於執行命令的用戶擁有的進程。爲了將其打開到任何用戶擁有的所有進程,我在lsof
之前添加一個sudo
。
最後,我將它與watch
結合起來以獲得持續更新。因此,在最後,它看起來像:
watch -n 0.1 'ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `sudo lsof -n -w -t /dev/nvidia*`'
其中有像輸出:
Every 0.1s: ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `sudo lsof -n -w -t /dev/nvi... Mon Jun 6 14:03:20 2016
USER PGRP PID %CPU %MEM STARTED TIME COMMAND
grisait+ 27294 50934 0.0 0.1 Jun 02 00:01:40 /opt/google/chrome/chrome --type=gpu-process --channel=50877.0.2015482623
grisait+ 27294 50941 0.0 0.0 Jun 02 00:00:00 \_ /opt/google/chrome/chrome --type=gpu-broker
grisait+ 53596 53596 36.6 1.1 13:47:06 00:05:57 python -u process_examples.py
grisait+ 53596 33428 6.9 0.5 14:02:09 00:00:04 \_ python -u process_examples.py
grisait+ 53596 33773 7.5 0.5 14:02:19 00:00:04 \_ python -u process_examples.py
grisait+ 53596 34174 5.0 0.5 14:02:30 00:00:02 \_ python -u process_examples.py
grisait+ 28205 28205 905 1.5 13:30:39 04:56:09 python -u train.py
grisait+ 28205 28387 5.8 0.4 13:30:49 00:01:53 \_ python -u train.py
grisait+ 28205 28388 5.3 0.4 13:30:49 00:01:45 \_ python -u train.py
grisait+ 28205 28389 4.5 0.4 13:30:49 00:01:29 \_ python -u train.py
grisait+ 28205 28390 4.5 0.4 13:30:49 00:01:28 \_ python -u train.py
grisait+ 28205 28391 4.8 0.4 13:30:49 00:01:34 \_ python -u train.py
你也可以得到計算程序的PID,佔用沒有'sudo'的所有用戶的GPU像這樣:'nvidia-smi --query-compute-apps = pid --format = csv,noheader' –
使用參數 「--query - 計算 - 應用=」
nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv
如需更多幫助,請參考
nvidia-smi --help-query-compute-app
- 1. 頂部的進程命令
- 2. 使用多個CUDA GPU
- 3. 使用CUDA的多GPU編程策略
- 4. 多GPU與CUDA Thrust的使用
- 5. 窗口頂部的vim命令
- 6. 瞭解ubuntu命令頂部的數字
- 7. 聯網CUDA GPU
- 8. CUDA遠程GPU
- 9. 使用awk在頂部命令中的字段分隔
- 10. cuda集成GPU +外部設備
- 11. 未能在OpenCV的GPU(CUDA)
- 12. Cuda的GPU和主機
- 13. tensorflow不使用GPU,但CUDA做
- 14. 多GPU Cuda計算
- 15. 多GPU CUDA推力
- 16. cuda啓用nvidia GPU的比較
- 17. CUDA:從GPU發送數據到GPU
- 18. mysql命令通過顯示在頂部
- 19. 爲什麼GPU外部的頂點轉換與GPU內部的頂點轉換不同?
- 20. shell腳本:頂部命令和日期命令一次
- 21. linux中的頂級命令
- 22. 使用Zend_Db_Select命令排序特定項目頂部()
- 23. 在子查詢中使用子查詢頂部命令
- 24. 在ruby中使用Open3執行頂部命令
- 25. Uncrustify命令CUDA內核
- 26. 使用CUDA將BIG數據複製到GPU以及從GPU使用CUDA複製BIG數據
- 27. 如何使用GPU-CUDA代碼中的GPU-DMA來複制數據?
- 28. 使用CUDA的GPU上的高級加密標準
- 29. 沒有GPU的系統上的CUDA
- 30. 使用ps命令的頂級CPU使用者
我想如果你添加一個-l,你就可以持續更新,有效地監控GPU和內存的利用率。 – jmsu
如果我運行GPU utilizacion時只說N/A? – natorro
@natorro看起來像nVidia放棄了對某些顯卡的支持。檢查此鏈接http://forums.nvidia.com/index.php?showtopic=205165 – jmsu