問題背景:
最近跑代碼時發現報錯CUDA out of memory,進入linux終端查看GPU使用情況(nvidia-smi),結果如下:
我用的GPU序號是0,但這塊被人占用了,所以我可以用剩下的3號和4號。
解決方案:
在代碼中更改GPU使用序號(修改/添加代碼):
1 import os 2
3 os.environ["CUDA_VISIBLE_DEVICES"] = "0,1,2,3"
4 args.device = torch.device('cuda:{}'.format(2) if torch.cuda.is_available() else 'cpu')
os是列舉出可用的GPU序號, args選擇可用的index為2的序號,因此也為2.
可能出現的問題:代碼中有些位置沒有使用arg.device,而是直接使用model.cuda(),因為此時默認的序號0的GPU被占用,同樣會報錯:cuda out of memory
解決方法:需要修改代碼為model.to(arg.device)