情况
有两个显卡,但是指定运行在cuda1
上时候,一定会占用cuda0
显卡大约2GB显存。当cuda0
在正常运行,没有显存时候,运行代码在cuda1
上时候,会因为第一个卡显存不够跑不起来。
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.85.02 Driver Version: 510.85.02 CUDA Version: 11.6 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA TITAN Xp Off | 00000000:27:00.0 On | N/A |
| 29% 42C P5 23W / 250W | 548MiB / 12288MiB | 1% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 1 NVIDIA GeForce ... Off | 00000000:28:00.0 Off | N/A |
| 21% 45C P2 63W / 130W | 4600MiB / 6144MiB | 70% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
解决方法
运行代码时候
CUDA_VISIBLE_DEVICES=1 python run.py
然后在代码中,注意设置cuda:0
device = torch.device('cuda:0')
解释
CUDA_VISIBLE_DEVICES=1
代表了电脑只有GPU FAN = 1
的这个第二张显卡,程序只“看得见”GPU FAN = 1
这块显卡。
torch.device('cuda:0')
,因为只有第二张显卡了,所以它变成了下标是0的显卡。即:GPU FAN = 1
显卡在程序的眼里就变成了第0块显卡