Paddle/Pytorch设置指定GPU进行计算

1,993 阅读2分钟

引言

  • 场景:如下图所示一般一个服务器上有多个GPU的时候可能每个GPU都有人在用,而默认GPU使用是编号0那一块儿,那么要使用的时候就要指定属于自己的GPU来运算。
  • 下图为展示图(V100),与下面的另一个展示图不一致,这个主要是展示使用nvidia-smi指令后的一个结果(Memory-Usage为使用占比,后面要用于比对设置指定GPU是否成功,默认为第0块儿,就是那个左边第一列N/A上面的编号0)

那么使用单个GPU运算的时候,如何指定某个GPU呢?

Paddle设置指定GPU(已验证有效)

  • 下图为需要传参的方式指定,那么直接命令行执行该py文件的时候指定参数--device即可,如下图所示(我指定的是第四块)

  • 结果如下,第四块GPU运行设定成功

  • 当然如果不是传参方式,也可以在代码中设置(未验证)
    • 根据device关键字找到 paddle.set_device()所在行,改写成 paddle.set_device('gpu:3')即可
    • 貌似paddle2.3版本后不能这样用了,需要paddle.device.set_device('gpu:3'),这个仅供参考啦

Pytorch设置指定GPU(未验证)

  • 首先pytorch设置device有三种方式(单卡的情况,多卡需要添加其他设置的)
  • 1 .to(device),可以指定使用CPU或GPU
# 有GPU用GPU(同时指定编号),没有用CPU
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
# 也可以指定GPU/CPU
device = torch.device("GPU/CPU")
# 将模型加载到相应的设备中
model.to(device)
  • 2 .cuda(),只能指定GPU(官方建议方式)
import os
# 添加GPU编号
os.environ['CUDA_VISIBLE_DEVICES']='2'
model.cuda()
# 在命令行设置
CUDA_VISIBLE_DEVICES=1 python xxx.py
  • 3 .set_device()
## 官方不建议使用该方法
import torch 
torch.cuda.set_device(1)
  • 上述未验证的部分待后续验证后会进行补充和更新,当前仅供参考(因为学习的时候顺便看了下torch如何设置,为了方便以后查找故将指定GPU部分合并到一篇文章中)