解决cuda环境使用dgl

news2024/11/29 12:30:30

Dgl 是实现图结构数据构造的工具包,想在gpu环境下使用它,如果安装的是pip install dgl

会有下面错误

dgl._ffi.base.DGLError: [09:10:13] /opt/dgl/src/runtime/c_runtime_api.cc:82: Check failed: allow_missing: Device API cuda is not enabled. Please install the cuda version of dgl.
Stack trace:
  [bt] (0) /opt/miniconda3/envs/lora/lib/python3.10/site-packages/dgl/libdgl.so(dmlc::LogMessageFatal::~LogMessageFatal()+0x75) [0x7fd8d29508f5]
  [bt] (1) /opt/miniconda3/envs/lora/lib/python3.10/site-packages/dgl/libdgl.so(dgl::runtime::DeviceAPIManager::GetAPI(std::string, bool)+0x202) [0x7fd8d2cbfd82]
  [bt] (2) /opt/miniconda3/envs/lora/lib/python3.10/site-packages/dgl/libdgl.so(dgl::runtime::DeviceAPI::Get(DGLContext, bool)+0x1e1) [0x7fd8d2cbc361]
  [bt] (3) /opt/miniconda3/envs/lora/lib/python3.10/site-packages/dgl/libdgl.so(dgl::runtime::NDArray::Empty(std::vector<long, std::allocator<long> >, DGLDataType, DGLContext)+0x13b) [0x7fd8d2cd783b]
  [bt] (4) /opt/miniconda3/envs/lora/lib/python3.10/site-packages/dgl/libdgl.so(dgl::runtime::NDArray::CopyTo(DGLContext const&) const+0xc3) [0x7fd8d2d12043]
  [bt] (5) /opt/miniconda3/envs/lora/lib/python3.10/site-packages/dgl/libdgl.so(dgl::UnitGraph::CopyTo(std::shared_ptr<dgl::BaseHeteroGraph>, DGLContext const&)+0x3ff) [0x7fd8d2e1f53f]
  [bt] (6) /opt/miniconda3/envs/lora/lib/python3.10/site-packages/dgl/libdgl.so(dgl::HeteroGraph::CopyTo(std::shared_ptr<dgl::BaseHeteroGraph>, DGLContext const&)+0xf6) [0x7fd8d2d1e8c6]
  [bt] (7) /opt/miniconda3/envs/lora/lib/python3.10/site-packages/dgl/libdgl.so(+0x51b686) [0x7fd8d2d2d686]
  [bt] (8) /opt/miniconda3/envs/lora/lib/python3.10/site-packages/dgl/libdgl.so(DGLFuncCall+0x48) [0x7fd8d2cbb598]

这个错误表明 DGL(Deep Graph Library)未启用 CUDA(NVIDIA 的并行计算平台和编程模型)。具体来说,它提示您当前安装的 DGL 版本不支持 CUDA,因此不能利用 GPU 进行计算。

我们的原因是安装了 CPU 版本的 DGL,而不是支持 GPU 的 CUDA 版本

但是pip install dgl-cu122 报

ERROR: Could not find a version that satisfies the requirement dgl-cu122 (from versions: none)
ERROR: No matching distribution found for dgl-cu122

我们得去别处找dgl对应的cuda版本, 好在官网上给出了下载地址

Dgl | Anaconda.org

在有gpu训练卡的环境上使用conda 切换到激活环境

conda activate myenv

再使用conda安装dgl-cu121

conda install -c dglteam/label/th24_cu121 dgl

安装完成

再运行dgl的训练脚本速度飞起

另外发现修改了一个问题

logits = model.forward(g, "_N")
labels = batch.label
loss = criterion(logits, labels)
f1 = evaluate_f1_score(
     logits.detach().to(device).numpy(), labels.detach().to(device).numpy()
)

将一个位于 GPU 上的 PyTorch 张量(tensor)直接转换为 NumPy 数组。PyTorch 不支持直接将 GPU 张量转换为 NumPy 数组。要解决此问题,需要先将张量移动到 CPU 上。

解决方案

在调用 .numpy() 方法之前,您需要使用 .cpu() 方法将张量从 GPU 移动到 CPU。修改您的代码如下:

logits.detach().cpu().numpy(), labels.detach().cpu().numpy()


Dgl | Anaconda.org

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

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

相关文章

软考高级备考记录

一 报考条件和报名流程 报考条件 该考试具有水平考试性质&#xff0c;报考任何级别不需要学历、资历条件&#xff0c;只要达到相应的专业技术水平就可以报考相应的级别 报名流程 软考报名官网&#xff1a;中国计算机技术职业资格网 官网上有 报名时间&#xff0c;考试…

springboot077基于SpringBoot的汽车票网上预订系统--论文pf(论文+源码)_kaic

汽车票网上预订系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了汽车票网上预订系统的开发全过程。通过分析汽车票网上预订系统管理的不足&#xff0c;创建了一个计算机管理汽车票网上预订系统的方案。文章…

vue使用xlsx以及file-saver进行下载xlsx文件以及Unit8Array、ArrayBuffer、charCodeAt的使用

先说Unit8Array、ArrayBuffer、charCodeAt的使用下面会用到这三个 Unit8Array&#xff1a;数组类型表示一个 8 位无符号整型数组&#xff0c;创建时内容被初始化为 0。创建完后&#xff0c;可以以对象的方式或使用数组下标索引的方式引用数组中的元素。 new Uint8Array(); //…

Python中的数据可视化:Matplotlib基础与高级技巧

Python中的数据可视化&#xff1a;Matplotlib基础与高级技巧 数据可视化是数据分析和数据科学中不可或缺的一部分。通过图表&#xff0c;我们可以更直观地观察数据的分布和趋势。Matplotlib作为Python最基础、也是最广泛使用的绘图库之一&#xff0c;不仅支持多种常用图表&…

Android Studio中Gradle一直在加载怎么解决(首次安装过程中)

目录 前言&#xff1a;遇到问题&#xff1a;已解决&#xff1a; 前言&#xff1a; Android Studio中Gradle一直在加载怎么解决&#xff08;首次安装过程中&#xff09;&#xff0c;在安装Android Studio的过程中&#xff0c;我因为环境的问题&#xff0c;被困扰了一天&#xf…

合合信息发布智能文档处理“百宝箱”,助力文档应用开发

文档是知识传递的载体&#xff0c;无论是大模型应用发展&#xff0c;还是与产业数字化息息相关的高质量数据库的建立&#xff0c;都离不开对于文档数据的处理和分析。目前&#xff0c;越来越多的开发者开始关注文档数据处理背后的“文档解析”技术&#xff0c;用以实现自动化数…

python常见内置函数

介绍Python常见的内置函数。 1、abs 取一个数的绝对值 int_value -2 print(abs(int_value))2、all 若一个可迭代对象(可循环遍历的对象)中所有元素为真&#xff0c;结果为真 list_value1 [1,2,3,4,0] list_value2 [1,2,3,4] print(all(list_value1)) print(all(list_va…

【cmake实战六】如何使用编译的库(动态库dll)——windows系统

【cmake实战六】如何使用编译的库&#xff08;动态库dll&#xff09;——windows系统_make windows下生成库-CSDN博客 基于以上文章&#xff0c;遇到的一些问题&#xff1a; 一、首先我用vs code 新建了一个项目&#xff1a;TEST 新增文件&#xff1a;CMakeList.txt #…

Kafka 与传统 MQ 消息系统之间有三个关键区别?

大家好&#xff0c;我是锋哥。今天分享关于【Kafka 与传统 MQ 消息系统之间有三个关键区别&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; Kafka 与传统 MQ 消息系统之间有三个关键区别&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 …

微信小程序的日期区间选择组件的封装和使用

组件化开发是一种将大型软件系统分解为更小、更易于管理和复用的独立模块或组件的方法。这种方法在现代软件开发中越来越受到重视&#xff0c;尤其是在前端开发领域。微信小程序的日期区间选择组件的使用 wxml 代码 <view><view bind:tap"chooseData">…

flask自学教程(二)

文章目录 前言一、中型flask目录二、大型flask目录1.启动文件run.py定义2.实例创建文件定义&#xff08;app/__init__.py&#xff09;3.配置项config.py4. app/routes下的__init__.py5. 定义一个路由并写一个静态页面6. 模型文件7.static目录8.requirements.txt依赖 3.flask&am…

威胁 Windows 和 Linux 系统的新型跨平台勒索软件:Cicada3301

近年来&#xff0c;网络犯罪世界出现了新的、日益复杂的威胁&#xff0c;能够影响广泛的目标。 这一领域最令人担忧的新功能之一是Cicada3301勒索软件&#xff0c;最近由几位网络安全专家进行了分析。他们有机会采访了这一危险威胁背后的勒索软件团伙的成员。 Cicada3301的崛…

C/C++ 随机数生成方法

1. 使用 rand() 和 srand() - 库: <stdlib.h> 或 <cstdlib> - 特点: 伪随机数生成器&#xff0c;简单易用。 - 示例: #include <stdlib.h> #include <time.h> int main() { srand(time(NULL)); // 初始化随机数生成器 int random_nu…

openEuler 系统进程管理全攻略

openEuler 系统进程管理全攻略 一、前言 在 openEuler 操作系统中&#xff0c;进程管理是系统管理的重要组成部分。有效地管理进程可以提高系统的性能、稳定性和安全性。本文将详细介绍 openEuler 系统中与进程管理相关的操作、工具和命令&#xff0c;包括它们的应用场景和使…

Jenkins发布vue项目,版本不一致导致build错误

问题一 yarn.lock文件的存在导致在自动化的时候&#xff0c;频频失败问题二 仓库下载的资源与项目资源版本不一致 本地跑好久的一个项目&#xff0c;现在需要部署在Jenkins上面进行自动化打包部署&#xff1b;想着部署后今后可以省下好多时间&#xff0c;遂兴高采烈地去部署&am…

技术成神之路:设计模式(二十一)外观模式

相关文章&#xff1a;技术成神之路&#xff1a;二十三种设计模式(导航页) 介绍 外观模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;它为子系统中的一组接口提供一个统一的接口。外观模式定义了一个高层接口&#xff0c;使得子系统更容易使用。 …

十六:Python学习笔记-- 爬虫(2)requests 模块详解

目录 安装 requests 模块 基本请求方法 GET 请求 POST 请求 PUT 请求 DELETE 请求 添加请求头&#xff1a; 处理查询参数&#xff1a; 文件上传&#xff1a; 常见响应状态码 访问超时 cookie的查询和设置 查询 Cookies 设置 Cookies 设置爬虫代理 小试牛刀 安装 …

QStringList 使用详解

QT开发之路 企业级开发系列文章&#xff0c;主要目标快速学习、完善、提升 相关技能 高效完成企业级项目开发 分享在企业中积累的实用技能和经验。 通过具体的编码过程、代码示例、步骤详解、核心内容和展示的方法解决遇到的实际问题。 转载请附上文章出处与本文链接。 QStrin…

尚硅谷 | Nginx | 学习笔记

尚硅谷 | Nginx | 学习笔记 尚硅谷Nginx教程由浅入深&#xff08;一套打通丨初学者也可掌握&#xff09;_哔哩哔哩_bilibili 文章目录 尚硅谷 | Nginx | 学习笔记一、Nginx相关概念1.Nginx是什么2.正向代理和反向代理正向代理反向代理 3.负载均衡和动静分离负载均衡动静分离 二…

AtCoder ABC376A-D题解

个人觉得 ABC 变得越来越难了/kk/kk/kk 比赛链接:ABC376 Problem A: Code #include <bits/stdc.h> using namespace std; int main(){int N,C;cin>>N>>C;for(int i1;i<N;i)cin>>T[i];int ans0,pre-1e5;for(int i1;i<N;i){if(T[i]-pre>C){…