pytorch—多GPU使用

单机多卡

单机多卡情况一般有,单机双卡或者八卡比较常见。一般通过nvidia-smi查看gpu的规格和使用情况。gpu会被编上序号:[0,1,2,3,4,5,6,7]等。
在这里插入图片描述

显卡编号

在默认情况下,标号为0的显卡为主卡
增加其他显卡为主卡语句:

os.environ["CUDA_VISIBLE_DEVICES"] = "3,2,0,1"
model = torch.nn.DataParallel(model, device_ids=[0,2,3]).cuda()

此时3号显卡成为主卡代替之前0号显卡的位置,即gup_ids :0123---->3201
在使用DataParallel时指定的device_ids=0,2,3号显卡实际上是原来的2,1,0号显卡

调用全部显卡

最简单的方法使用DataParallel,默认所有存在的显卡都会被使用

net = torch.nn.DataParallel(net)

调用指定编号显卡

方法1.最简单的方法修改DataParallel:

torch.nn.DataParallel(model, device_ids=[0, 1, 2])

方法2.

os.environ["CUDA_VISIBLE_DEVICES"] = ','.join(map(str, [0,1,2])) # 一般在程序开头设置
# 等价于os.environ["CUDA_VISIBLE_DEVICES"] = '0,1,2'
net = torch.nn.DataParallel(model)

CUDA_VISIBLE_DEVICES 表示当前可以被python环境程序检测到的显卡

1. os.environ[“CUDA_VISIBLE_DEVICES”]详解

1.os.environ[“CUDA_VISIBLE_DEVICES”] = '1,2’进行指定使用设备
2.os.environ[“CUDA_VISIBLE_DEVICES”] = '1,2’放在所有访问GPU
代码之前

2. torch.cuda主要函数

1.torch.cuda.is_available()判断GPU是否可用

print(torch.cuda.is_available())
True

2.torch.cuda.device_count()查看可用GPU数量

os.environ["CUDA_VISIBLE_DEVICES"] = '0,1,2'
print(torch.cuda.device_count())
3

3.torch.cuda.current_device()查看当前使用的GPU序号

os.environ["CUDA_VISIBLE_DEVICES"] = '1,2'
print(torch.cuda.current_device())
0

3.关于unet分割一段指定gpu代码

    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    os.environ['CUDA_VISIBLE_DEVICES'] = '0,1'
    device_ids = range(torch.cuda.device_count())
    if device:
        net = net.cuda()
    if len(device_ids)>1:
        net = nn.DataParallel(net, device_ids=[0, 1])
    

如果要和模型整体结合可以将声明args.gpu_ids 的值,而不需要再去找代码里的进行修改。

多机多卡

(待更。。。。)

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值