指定GPU设备

在运行代码的时候遇到下面报错:

完整报错信息:

python 复制代码
DeferredCudaCallError: CUDA call failed lazily at initialization with error: device >= 0 && device < num_gpus INTERNAL ASSERT FAILED at "/opt/conda/conda-bld/pytorch_1716905969824/work/aten/src/ATen/cuda/CUDAContext.cpp":50, please report a bug to PyTorch. device=, num_gpus=

排查后发现问题出在有1块GPU error了,在代码中显式地指定GPU编号即可解决问题。

指定GPU设备

方法一:

python 复制代码
import os
os.environ["CUDA_VISIBLE_DEVICES"] = '0,1,2'

CUDA_VISIBLE_DEVICES :决定进程能看见哪些物理 GPU,并且会重新编号(映射成从 0 开始的逻辑编号),要放在import torch前。

方法二:

python 复制代码
import torch
torch.cuda.set_device(2)

torch.cuda.set_device(k) 是在"已经可见的逻辑 GPU 列表"里,把默认 GPU 指针设成第 k 个;不会屏蔽 GPU,也不会改变可见性。

简单来说:

  • 想"只用某几张卡 / 不要碰其他卡" → 用CUDA_VISIBLE_DEVICES来设置;
  • 想"在可见卡里把默认卡设成哪张" → 用 set_device

示例1:

python 复制代码
os.environ["CUDA_VISIBLE_DEVICES"] = "2,3"
import torch
torch.cuda.set_device(1)

这里其实是在选:逻辑1->GPU 3,而不是GPU 1。

示例2:

python 复制代码
os.environ["CUDA_VISIBLE_DEVICES"] = "2,3"
import torch
torch.cuda.set_device(2)   # 报错

因为可见逻辑设备只有0和1,没有2。

参考:

1\] [【设置gpu设备】os.environ\['CUDA_VISIBLE_DEVICES'\] 和 torch.cuda.set_device()_os设置gpu使用设备](https://blog.csdn.net/qq_51392112/article/details/129739768)

相关推荐
Gain_chance2 小时前
36-学习笔记尚硅谷数仓搭建-DWS层数据装载脚本
大数据·数据仓库·笔记·学习
肖永威2 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos
暗光之痕2 小时前
Unreal5研究笔记 Actor的生命周期函数
笔记·unreal engine
Gain_chance3 小时前
35-学习笔记尚硅谷数仓搭建-DWS层最近n日汇总表及历史至今汇总表建表语句
数据库·数据仓库·hive·笔记·学习
宵时待雨3 小时前
STM32笔记归纳9:定时器
笔记·stm32·单片机·嵌入式硬件
m0_719084114 小时前
React笔记张天禹
前端·笔记·react.js
Rorsion5 小时前
PyTorch实现二分类(单特征输出+单层神经网络)
人工智能·pytorch·分类
r i c k6 小时前
数据库系统学习笔记
数据库·笔记·学习
shandianchengzi7 小时前
【小白向】错位排列|图文解释公考常见题目错位排列的递推式Dn=(n-1)(Dn-2+Dn-1)推导方式
笔记·算法·公考·递推·排列·考公
浅念-7 小时前
C语言编译与链接全流程:从源码到可执行程序的幕后之旅
c语言·开发语言·数据结构·经验分享·笔记·学习·算法