pytorch GPU cuda 使用 報錯 整理

GPU 使用、報錯整理

  • 1. 使用指定GPU(單卡)
    • 1.1 方法1:os.environ['CUDA_VISIBLE_DEVICES']
    • 1.2 方法2:torch.device('cuda:2')
    • 1.3 報錯1:RuntimeError: CUDA error: invalid device ordinal CUDA kernel errors might be asynchronously reported
    • 1.4 torch.load報錯:RuntimeError: CUDA out of memory...
  • 2. 使用指定GPU(多卡 DataParallel)
      • 2.1 正常DP使用(未測試)
      • 2.2 pyg中DP的使用

1. 使用指定GPU(單卡)

1.1 方法1:os.environ[‘CUDA_VISIBLE_DEVICES’]

os.environ['CUDA_VISIBLE_DEVICES'] = '2'
model = Net().to('cuda')
data = data.to('cuda')

1.2 方法2:torch.device(‘cuda:2’)

device = torch.device('cuda:2')
model = Net().to(device)
data = data .to(device)

1.3 報錯1:RuntimeError: CUDA error: invalid device ordinal CUDA kernel errors might be asynchronously reported

解決方法:方法1和方法2不要混著使用

1.4 torch.load報錯:RuntimeError: CUDA out of memory…

解決方法:
1)顯存不夠只能換卡
2)即使使用方法2指定設備,torch.load也默認在0卡(保存卡)上加載。所以,可以使用方法1指定gpu,或torch.load(path, map_location=lambda storage, loc: storage.cuda(2))

2. 使用指定GPU(多卡 DataParallel)

2.1 正常DP使用(未測試)

DP的使用很簡單,使用DataParallel將模型包裹住即可,訓練代碼與單卡一致。
代碼:

import torch
from torch.nn import DataParallel
model = Model()
model = DataParallel(model, device_ids = [0, 1])

2.2 pyg中DP的使用

注意:使用torch geometric(pyg)要用torch_geometric.nn里的DataListLoader!!!
代碼:

device_ids = [0, 2, 3]
# 需指定主卡,默認是0卡,不指定device會報錯:RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:2 and cuda:0!
device = torch.device(f'cuda:{device_ids[0]}')
model = Net() # 輸入特征維度,隱藏特征維度,輸出特征維度
model = DataParallel(model, device_ids = device_ids)
model.to(device)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44661.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44661.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44661.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL學習記錄 —— ?? 常用程序和配置文件

文章目錄 1、mysqld2、mysql常用命令介紹 3、配置文件語法 1、mysqld mysqld就是MySQL服務器,是一個多線程程序。對數據目錄,即mysql的主要工作目錄進行訪問管理。當mysqld啟動時,會偵聽指定的端口,處理來自客戶端程序的網絡連接…

【vue教程】二. Vue特性原理詳解

目錄 回顧本章涵蓋知識點Vue 實例和選項創建 Vue 實例Vue 實例的選項 Vue 模板語法插值表達式指令v-bindv-modelv-on 自定義指令創建自定義指令在模板中使用自定義指令自定義指令的鉤子函數自定義指令的實例演示 指令注冊局部注冊指令過濾器 數據綁定和響應式原理響應式數據綁定…

Oracle邏輯備份

邏輯備份 expdp 備份恢復表空間 創建測試數據 # 創建表空間 create tablespace itpux01 datafile /oradata/fghsdb/itpux01.dbf size 100m autoextend off extent management local autoallocate segment space management auto; create tablespace itpux02 datafile /o…

編程題目積累(day5)

題目: 源數組a,將a中所有元素乘以2之后添加進a,則這個a就叫雙倍數組,給你一個數組a,判斷它是不是雙倍數組,如果是則輸出源數組,不是則輸出空數組。 補充知識: python中枚舉和字典…

OAuth 和 SSO 場景中的 URL 語法解析

OAuth 和 SSO 場景中的 URL 語法解析 在 OAuth 和 SSO (Single Sign-On) 場景中,URL 是一個關鍵組件,用于在客戶端和服務器之間傳遞認證請求和響應。讓我們深入解析這個 URL: https://api.commerce.ondemand.com/occ/oauth/authorize?resp…

【python數據結構精講】雙端隊列

通過總結《流暢的Python》等書中的知識,總結Python中常用工具的方法。 deque,學名雙端隊列。 1. 常用方法 append():隊列尾部添加appendleft():隊首添加pop():移除隊列最后一個元素popleft():移除隊列第一…

AI算法14-套索回歸算法Lasso Regression | LR

套索回歸算法概述 套索回歸算法簡介 在統計學和機器學習中,套索回歸是一種同時進行特征選擇和正則化(數學)的回歸分析方法,旨在增強統計模型的預測準確性和可解釋性, 正則化是一種回歸的形式,它將系數估…

并發編程-06之Semaphore

一 Semaphore入門 1.1 什么是Semaphore Semaphore,俗稱信號量,它是操作系統中PV操作的原語在java的實現,它也是基于AbstractQueuedSynchronizer實現的。 Semaphore的功能非常強大,大小為1的信號量就類似于互斥鎖,通過同…

centos部署jar包

第一步: 將IDEA中的項目打包為jar,將這個jar文件放到centos服務器上的目錄里,我在opt新建api目錄,將jar文件放入,如下圖: 第二步: 將需要讀取的配置文件也放入此目錄(其他目錄也可以,和腳本中…

【筆記】記一次讀寫分離之shardingsphere.datasource導致數據源為空錯誤

錯誤: *************************** APPLICATION FAILED TO START *************************** Description: Failed to configure a DataSource: url attribute is not specified and no embedded datasource could be configured. Reason: Failed to determin…

搭建RAG系統就這么簡單:LangChain|RAG是什么?

RAG是什么 “RAG”(Retrieval-Augmented Generation)是一種結合了檢索(Retrieval)和生成(Generation)的人工智能技術,它在大模型中被需要的原因包括: 知識豐富性: 大模…

探索數據結構與算法的奇妙世界 —— Github開源項目推薦《Hello 算法》

在浩瀚的編程與計算機科學領域中,數據結構與算法無疑是每位開發者攀登技術高峰的必經之路。然而,對于初學者而言,這條路往往布滿了荊棘與挑戰。幸運的是,今天我要向大家推薦一個令人振奮的項目——《Hello Algo》,它正…

ubuntu使用kubeadm搭建k8s集群

一、卸載k8s kubeadm reset -f modprobe -r ipip lsmod rm -rf ~/.kube/# 自己選擇性刪除 坑點哦 rm -rf /etc/kubernetes/ rm -rf /etc/systemd/system/kubelet.service.d rm -rf /etc/systemd/system/kubelet.service rm -rf /usr/bin/kube* rm -rf /etc/cni rm -rf /opt/cn…

C# Winform 自定義事件實戰

在C#的WinForms中,自定義事件是一種強大的工具,它允許你創建自己的事件,從而在特定條件下通知訂閱者。自定義事件通常用于封裝業務邏輯,使代碼更加模塊化和易于維護。下面我將通過一個實戰例子來展示如何在WinForms中創建和使用自…

多線程編程中的條件變量及其優化

本套課在線學習視頻(網盤地址,保存到網盤即可免費觀看): 鏈接:https://pan.quark.cn/s/7220b198cf00 在多線程編程中,條件變量是一種用于線程間通信和同步的機制。通過使用條件變量,可以有效地…

Prometheus + alermanager + webhook-dingtalk 告警

添加釘釘機器人 1. 部署 alermanager 1.1 下載軟件包 wget https://github.com/prometheus/alertmanager/releases/download/v0.26.0/alertmanager-0.26.0.linux-amd64.tar.gz 網址 :Releases prometheus/alertmanager (github.com) 1.2 解壓軟件包 mkdir -pv …

醫日健集團技術力量體現測試的背后

醫日健集團覆蓋式更新 科技日新月異的時代,醫日健集團始終走在行業的前列。近日,醫日健集團外勤技術人員全面對市場點位投放的數智藥房進行了新系統升級和機器測試,這是醫日健對于科技創新的最新嘗試。 以客戶體驗為核心優化新體驗 醫日健集團…

NCNN源碼學習(1):Mat詳解

前言:最原始的發行版本代碼比較簡潔,我們從2017年ncnn第一次開源的版本閱讀mat的源碼。閱讀源碼味如嚼蠟,下面就開始吧! 目錄 構造函數 內存分配 數據成員 申請和釋放內存 引用計數 輔助函數 填充函數fill 參考 構造函數 ncnn提供了8種構造函數的方式。 // emptyM…

Js 前置,后置補零的原生方法與補字符串 padStart及padEnd

在工作中,遇到了需要將不滿八位的一個字符串進行后補0的操作,所以就在網上學習了關于js原生補充字符串的方法,然后用這篇博客記錄下來。 目錄 前置補充字符串 String.prototype.padStart() 后置補充字符串String.prototype.padEnd() 前置補…

將獨熱碼應用到神經網絡中

引言 接上回,本文繼續說如何用TensorFlow將獨熱編碼應用到一個簡單的神經網絡中,以實現從一段隨機文本到另一段隨機文本的轉換。 步驟一:導入庫 import tensorflow as tf import numpy as np import random import string步驟二&#xff1…