[整理]Pytorch指定GPU的方法

在多GPU环境下,可以通过设置CUDA_VISIBLE_DEVICES环境变量来指定CUDA程序使用的GPU。临时设置在Linux和Windows上的方法不同,永久设置需修改bashrc文件。PyTorch中,可以使用torch.cuda.set_device或DataParallel接口来指定GPU。同时介绍了检查GPU数量、模型转移至GPU以及获取GPU名称的方法。
摘要由CSDN通过智能技术生成

方法1:临时设置方法

一定要在第一次使用 cuda 之前进行设置 

当服务器有多个GPU时,设置CUDA_VISIBLE_DEVICES 环境变量可以改变CUDA程序所能使用的GPU设备,默认情况下:标号为0的显卡为主卡。

  • 改变系统变量使得仅目标显卡可见,临时设置
    • Linux: export CUDA_VISIBLE_DEVICES=0 #要使用的GPU编号,正常的话是从0开始
    • windows: set CUDA_VISIBLE_DEVICES=0
  • python:程序开头添加
    • import os
    • os.environ['CUDA_VISIBLE_DEVICES'] = '0'
    • os.environ['CUDA_VISIBLE_DEVICES'] = '0,2,3' #多GPU
  • 命令行
    • CUDA_VISIBLE_DEVICES=0 python **.py
  • 注:[转]使用CUDA_VISIBLE_DEVICES设置显卡_华科附小第一名的博客-CSDN博客
    • CUDA应用运行时,CUDA将遍历当前可见的设备,并从零开始为可见设备编号。
    • 第一种情况,卡1设置为主卡,但CUDA遍历时会设置为可见编号0。
    • 最后一种情况,设备0,2,3将显示为设备0,1,2。如果将字符串的顺序更改为“2,3,0”,则设备2,3,0将分别被设置为0,1,2。
    • 如果为CUDA_VISIBLE_DEVICES 设置了不存在的设备,所有实际设备将被隐藏,CUDA 应用将无法使用GPU设备;
    • 如果设备序列是存在和不存在设备的混合,那么不存在设备前的所有存在设备将被重新编号,不存在设备之后的所有设备将被屏蔽。
    • 当前可见的(重新编号后的)设备可使用CUDA 程序来查看。
      • import torch
        print(torch.cuda.current_device())

2. 使用torch.cuda接口

在生成网络对象之前执行:

  • torch.cuda.set_device(0)

3. 使用pytorch的并行GPU接口

  • net = torch.nn.DataParallel(model, device_ids=[0])

4. 初始化模型时

  • net = Net.cuda(0)

##########################pycharm设置方法###############

  • 直接在程序中设置os.environ["CUDA_VISIBLE_DEVICES"] = '0,1,2,3'

打开Run/Debug Configurations,在Environment variables右边点击…处。

################################################

方法2:永久设置

  • linux: 在~/.bashrc 的最后加上export CUDA_VISIBLE_DEVICES=‘ids’(预设置的gpu_id),然后source ~/.bashrc
  • windows: 打开我的电脑环境变量设置的地方,直接添加就行了。

###################

确定GPU的个数

  • count = torch.cuda.device_count()

  • device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

把一个模型放到GPU上

  •     device = torch.device("cuda:0")
  •     model.to(device)

GPU: 然后复制所有的张量到GPU上:

  • mytensor = my_tensor.to(device)

  • 只调用my_tensor.to(device)并没有复制张量到GPU上,而是返回了一个copy。你需要把它赋值给一个新的张量并在GPU上使用这个张量

获得GPU的名字

  • torch.cuda.get_device_name(0)
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值