如何自動設定環境變數?

如何自動設定環境變數?

所以我研究機器學習並使用遠端 GPU 伺服器來完成這些工作。當我上班時,我通常會做的是使用 SSH 客戶端存取伺服器並執行我的別名hi命令,該命令是:

alias hi='conda activate userconda; export CUDA_VISIBLE_DEVICES=1; alias hi'

伺服器通常由兩到三個人共享,並有兩個 GPU,每個 GPU 都有 ID01.

我想知道的是,是否有某種方法可以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 取得其總線的其他裝置。

相關內容