
所以我研究機器學習並使用遠端 GPU 伺服器來完成這些工作。當我上班時,我通常會做的是使用 SSH 客戶端存取伺服器並執行我的別名hi
命令,該命令是:
alias hi='conda activate userconda; export CUDA_VISIBLE_DEVICES=1; alias hi'
伺服器通常由兩到三個人共享,並有兩個 GPU,每個 GPU 都有 ID0
或1
.
我想知道的是,是否有某種方法可以CUDA_VISIBLE_DEVICES
根據未使用的 GPU 自動確定將哪個 GPU ID 分配給環境變數?現在我的別名被硬編碼為CUDA_VISIBLE_DEVICES=1
,但如果程式可以自動執行此操作會更方便。
我在想也許有一種方法可以使用 的輸出nvidia-smi
,但我不確定這是否是正確的方法。
謝謝!
答案1
Nvidia smi 向您報告活動顯示卡的匯流排:
nvidia-smi
Sat Apr 11 04:02:56 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.64.00 Driver Version: 440.64.00 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 2070 On | 00000000:01:00.0 On | N/A |
| 45% 33C P8 11W / 175W | 252MiB / 7974MiB | 4% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1089 G /usr/lib/xorg/Xorg 106MiB |
| 0 1355 G /usr/bin/kwin_x11 79MiB |
| 0 1361 G /usr/bin/krunner 2MiB |
| 0 1364 G /usr/bin/plasmashell 56MiB |
| 0 5152 G /usr/lib/firefox/firefox 2MiB |
+-----------------------------------------------------------------------------+
所以:00000000:01:00.0 開啟是設備總線。因此,您可以執行 nvidia-smi grep 來取得此結果,並評估您可以透過 lspci 取得其總線的其他裝置。