CUDA_VISIBLE_DEVICES‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。

问题:

命令行出现CUDA_VISIBLE_DEVICES=0 python trainer.py这种命令
这是Linux可以的,但是Windows不行。

解决方案:

这条命令的含义是指定某个GPU来运行程序,我们可以在程序开头添加指定GPU的代码,效果是一样的:

    import osos.environ["CUDA_VISIBLE_DEVICES"]='0'

或者在程序外部cmd命令行里执行以下命令,设置临时变量:

set CUDA_VISIBLE_DEVICES=0

或者直接添加到环境变量,同时记得删除原命令的CUDA_VISIBLE_DEVICES=0

在这里插入图片描述


GPU卡号编码规则:

当主机有多个GPU设备时,设置CUDA_VISIBLE_DEVICES 环境变量可以改变CUDA程序所能使用的GPU设备。假如主机中有4块GPU设备,那么这些GPU设备的默认编号为[0,1,2,3],在默认情况下,编号为0的显卡为第一块卡。多卡设置规则如下:
在这里插入图片描述

备注规则:

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())
1. 临时设置
1.1 命令提前设置环境变量
#Linux: 后面的值为要使用的GPU编号,正常的话是从0开始
export CUDA_VISIBLE_DEVICES=0
#windows: 
set CUDA_VISIBLE_DEVICES=0
1.2 Python代码中设置环境变量
import os
# 仅设置一块可见
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
# 设置多块可见
os.environ['CUDA_VISIBLE_DEVICES'] = '0,2,3'
1.3 命令行前指定
# 以下方法linux可用, windows 需要提前设置环境变量
CUDA_VISIBLE_DEVICES=0 python some-app.py

2. 永久设置

2.1 linux

通过编辑 ~/.bashrc 文件来永久设置,系统启动时将加载 ~/.bashrc 文件,达到自动设置的目的。

export CUDA_VISIBLE_DEVICES=1,2,3

然后通过 如下命令刷新环境变量

. ~/.bashrc
2.2 windows

添加到环境变量,同时记得删除原命令的CUDA_VISIBLE_DEVICES=0

在这里插入图片描述

3. 使用torch.cuda接口

import torch
#当前可见的(重新编号后的)设备可使用如下代码来查看
print(torch.cuda.current_device())torch.cuda.set_device(0)
#或者 使用pytorch的并行GPU接口
net = torch.nn.DataParallel(model, device_ids=[0])#确定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)

4. 使用torch.nn.DataParallel

多卡数据并行一般使用torch.nn.DataParallel

torch.nn.DataParallel(model,device_ids)'''使用的GPU一定是编号连续的其中model是需要运行的模型,device_ids指定部署模型的显卡,数据类型是list/device。device_ids中的第一个GPU(即device_ids[0])和model.cuda()或torch.cuda.set_device()中的第一个GPU序号应保持一致,否则会报错
举例:
'''
torch.nn.DataParallel(model, device_ids=device_ids)
torch.nn.DataParallel(modul, device_ids=[x1,x2,x3,x4,x5,x6,x7])torch.nn.DataParallel(model,device_ids = range(torch.cuda.device_count()) )

此外如果两者的第一个GPU序号都不是0,比如设置为:

'''
如下代码,程序可以在GPU2和GPU3上正常运行。
device_ids的默认值是使用可见的GPU,不设置model.cuda()或torch.cuda.set_device()等效于设置了model.cuda(0)
'''
model=torch.nn.DataParallel(model,device_ids=[2,3])
model.cuda(2)#模型绑定GPU代码
model = model.cuda() 
device_ids = [0, 1] 	
model = torch.nn.DataParallel(model, device_ids=device_ids)

参考:

【疑难杂症】‘CUDA_VISIBLE_DEVICES‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
CUDA 指定设备的方法,CUDA_VISIBLE_DEVICES 设置当前pytorch程序使用那些GPU设备

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/19432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HackTheBox-Machines--Lazy

Lazy测试过程 1 信息收集 1.端口扫描 发现 SSH(22)、HTTP(80)端口 nmap -sC -sV 10.129.159.512.访问 80 端口 1.页面中存在注册功能,测试注册功能 页面返回登录页面及用户名 使用burpsuite观察注册请求 /register.p…

Facebook:连接世界,畅游社交之旅

作为全球最大的社交平台之一,Facebook不仅仅是一个网站,更是一个连接世界的桥梁,让人们可以轻松地与全球各地的朋友、家人和同事保持联系,分享生活、交流想法,畅游社交的无边界之旅。本文将带领读者探索Facebook的魅力…

电子商务网站(网上商店PetShop)

PetShop是一个范例,微软用它来展示.Net企业系统开发的能力。PetShop随着版本的不断更新,至现在基于.Net2.0的PetShop 4.0为止,整个设计逐渐变得成熟而优雅,有很多可以借鉴之处。PetShop是一个小型的项目,系统架构与代码…

鸿蒙OS开发:【一次开发,多端部署】(分栏控件)

一多分栏控件 介绍 本示例分别展示了多场景下,一多分栏控件的响应式变化效果。 本示例分别用到了[SideBarContainer]组件与[Navigation]组件,对应使用场景如下: ABC:即SideBarContainer组件组合Navigation组件AC:S…

Python开发 —— 文件读写操作open与with open

在 Python 中,文件读写操作是非常常见的任务。本文是一些关键操作和代码示例,包括如何使用 open、with open、read 和 write 函数进行文件操作。 1. 打开文件 (open) 使用 open 函数打开文件。在 Python 中,打开文件是进行文件操作的第一步。…

继承与多态2

2.5(杨.丹尼尔梁英文第11版P537:*13.12)(几何对象的面积求和)写一个方法,将数组中所有几何对象的面积求和。 方法签名是: 公共静态双求和区域(几何对象【】a) 编写一个测试程序&…

高速数据传输新纪元?ADT-Link领先推出USB4转PCIe 4.0桥接板

在科技飞速发展的今天,数据传输速度一直是推动行业进步的关键驱动力。最近,备受瞩目的硬件制造商ADT-Link宣布推出一款引领潮流的新产品——USB4转PCIe 4.0桥接板,这一创新设备势必会显著提升数据传输效率,为用户带来前所未有的高…

NI PXIe-7857R与PXIe-8842的区别

一、NI PXIe-7857R 类型: FPGA模块:基于FPGA的可编程I/O模块。 主要功能: FPGA处理:包含Xilinx Kintex-7 FPGA,支持自定义逻辑和处理。 I/O接口:提供丰富的模拟和数字I/O通道。 高速数据处理&#xff1a…

软件测试新手要达到一个什么水平才能找到一份9K的工作?

我的读者里有很多 软测 新人,新人是指正在学 测试 的、以及工作时间不长的年轻人,他们经常问我一个问题: 自学到什么程度才能找到一份还不错的测试工作? 今天我就从我自己面试新人的角度来回答一下,我会把面试的知识点…

查询指定会话免打扰

查询指定用户(requestId) 为指定会话(targetId)的设置的免打扰状态。 提示 该设置为用户级别设置。对应的设置接口详见设置指定会话免打扰。 请求方法 POST: https://数据中心域名/conversation/notification/get.json 频率限…

AVFrame结构体分析

AVFrame是FFmpeg中的一个核心数据结构,用于表示音频或视频的帧。它包含了一系列用于描述帧数据和元数据的字段。以下是对AVFrame结构体的详细分析,包括其主要字段及其作用。 AVFrame的定义 在FFmpeg的源代码中,AVFrame的定义可以在avframe.…

Nginx网页服务

nginx的配置: 1、全局块:全局配置,对全局生效; 2、events块:配置影响 Nginx 服务器与用户的网络连接; 3、http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置&#xf…

【Python编程实践2/3】Python图像处理模块(上)

目录 引言 目标 安装模块 Windows系统 macOS系统 路径 Windows路径 ​编辑macOS路径 windows路径报错 windows路径前的r 示例代码 windows快速查看路径 macOS快速查看路径 打开图片 展示图片 下节预告 总结 引言 欢迎各位大佬垂阅本篇Python实践博客&a…

【教学类-59-01】专注力视觉训练01(圆点百数图)

背景需求: 视觉训练的神奇效果,让你的宝贝成为焦点 - 小红书魔法视觉追踪-视觉训练—— 🔍视觉训练🔍 🔹想要提高宝宝的专注力,视觉训练是个绝佳方法! 🔹让宝宝仔细观察数字的路线&a…

微信小程序毕业设计-农场驿站平台系统项目开发实战(附源码+论文)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…

HoneyTrap蜜罐系统实践操作@FreeBSD

HoneyTrap介绍 HoneyTrap是一个可扩展的开源系统,用于运行、监控和管理蜜罐。 HoneyTrap蜜罐系统通过在网络中部署感应节点,实时感知周边网络环境,并将感应节点的日志进行实时存储和可视化分析,从而实现对网络环境中威胁情况的感…

Honor of Kings 2024.03.29 Ban for 3 day

我又被举报消极然后禁赛 都说了别选蔡文姬,对面三个肉,非要选个软辅助 吐槽下这游戏策划:游戏体验感越来越差,公正也很差 对说了对面4个法师,就是不出魔抗,把把都是0-N开局,到底谁消极啊&#x…

stable Diffusion缺失模型补充地址

Hires. fix 8x_NMKD-Superscale https://huggingface.co/uwg/upscaler/resolve/main/ESRGAN/8x_NMKD-Superscale_150000_G.pth 放置位置: \models\ESRGAN

【工具使用】在vscode中用python绘图

安装拓展Jupyter Keymap 然后重启vscode在代码之前加上这个代码,利用jupyter一行一行运行 # %%点击Run Cell即可运行 # %% import matplotlib.pyplot as plt# 提供的数据 data [0.02856750446367257, 0.248564674096589, 0.1645266594124048, 0, 0.375108941955725…

智能台灯系统之哪种调光方式更节能?

在节能方面,不同的调光方式有不同的表现。 PWM调光通过反复开关驱动器来控制LED灯的实际输出功率,以达到照明调光的目的。这种方式能够在最小电流和最大电流之间进行频繁的切换,从而调节照明灯具的亮度。由于LED照明光源仅处于接通或关断两种…