翼度科技»论坛 编程开发 python 查看内容

Pytorch如何指定device(cuda or cpu)

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
Pytorch指定device(cuda or cpu)


torch.device()

在PyTorch中,你可以使用
  1. torch.device
复制代码
函数来设置设备(device)。
这个函数接受一个字符串作为参数,该字符串可以是 "cpu" 或 "cuda",它指定了要在哪个设备上运行张量计算。
  1. # 使用CPU  
  2. device = torch.device("cpu")

  3.   
  4. # 使用GPU(如果可用)  
  5. device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

  6. device = torch.device("cuda:0")

  7. device = torch.device("cuda:1")
复制代码
os.environ['CUDA_VISIBLE_DEVICES']

全局指定只能识别的cuda编号
  1. os.environ['CUDA_VISIBLE_DEVICES']
复制代码
是一个在运行 Python 程序时可以设置可见的 CUDA 设备的环境变量。
这个环境变量可以控制哪些 GPU 设备对 Python 程序是可见的。
例如:
如果你想让你的程序只能看到编号为 0 的 GPU,你可以在运行程序前设置这个环境变量:
  1. import os  
  2. os.environ['CUDA_VISIBLE_DEVICES'] = '0'
复制代码
或者你也可以设置多个 GPU,只需将它们的编号以逗号分隔:
  1. import os
  2. os.environ['CUDA_VISIBLE_DEVICES'] = '0,1'
复制代码
如果你想让程序对所有 GPU 都可见,只需将环境变量设置为空字符串:
  1. os.environ['CUDA_VISIBLE_DEVICES'] = ''
复制代码
说说torch.device的作用

torch.device代表将torch.Tensor分配到的设备的对象。
torch.device包含一个设备类型(‘cpu’或‘cuda’)和可选的设备序号。
如果设备序号不存在,则为当前设备。
如:torch.Tensor用设备构建‘cuda’的结果等同于‘cuda:X’,其中X是torch.cuda.current_device()的结果。
  1. #开始脚本,创建一个张量
  2. device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
  3. ...
  4. #但是无论你获得一个新的Tensor或者Module
  5. #如果他们已经在目标设备上则不会执行复制操作
  6. input = data.to(device)
  7. model = MyModule(...).to(device)
复制代码
总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

来源:https://www.jb51.net/python/323402q17.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具