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.pswp.cn/bicheng/19432.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/19432.shtml
英文地址,請注明出處:http://en.pswp.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照明光源僅處于接通或關斷兩種…