MinkowskiEngine安装(CUDA11.8+torch2.0.1+RTX4070TI)

ops/2025/2/22 12:17:14/

1、背景

1)因为项目要用这个库:MinkowskiEngine,Minkowski Engine — MinkowskiEngine 0.5.3 documentation

然后就用了之前安装好 MinkowskiEngine 的torch1.8.1,cuda11.1的环境。

2)自己的代码出现cuda不支持torch用gpu进行矩阵运算的情况。

现象是可以跑大部分程序,查看GPU使用情况也会显示大部分显存被用着。

但torch.det/inverse等计算矩阵就报错:

MAGMA error: function-specific error, see documentation (10) in magma_sgetrf_gpu_expert at /opt/conda/conda-bld/magma-cuda111_1605822518874/work/src/sgetrf_gpu.cpp:126

inverse_matrix = torch.inverse(matrix)

RuntimeError: cusolver error: 7, when calling cusolverDnCreate(handle)

然后查了不少,装个依赖库和magma库解决不了问题。

移到cpu上不报错,但这个项目类似计算不少,还是从根源解决问题吧。

然后大部分都说是cuda和torch版本不匹配。

然后我系统装了12.1和11.1的cuda,改为12.1的时候的虚拟环境是不报错的。但MinkowskiEngine 不能支持太高版本的cuda,目前我能查到的是11.8装成功的案例。

最后查到了一个东西,说明就是cuda11.1版本太低了。

https://en.wikipedia.org/wiki/CUDA#GPUs_supported

总结就是40系的显卡,最低装CUDA11.8

2、修改过程

安装CUDA11.8,

可参考https://blog.csdn.net/2201_75663877/article/details/145207222

更新旧版本选择no,更新已有软连接选择no。不装driver,不选最后一项kernel(这个是加速计算的,但选了会报错)。

这个时候系统有好几个版本的CUDA了,使用update-alternatives工具管理,update-alternatives链接到/usr/local/cuda,update-alternatives加进来所有cuda,这样每次改alternative的选择就可以了。gcc我也只如此管理https://blog.csdn.net/SimpleForest/article/details/144018234。

CUDA的环境变量只设置/usr/local/cuda就够了。

安装好后创建虚拟环境过程不再赘述。

3、安装准备

和cuda版本匹配的gpu版的torch等。

说明一下的是,我在虚拟环境中和base中都装了OpenBLAS和ninja,用户系统环境之前装过。因为用到了,但不知道具体用的哪里的。但不想在这费功夫。

4、安装过程及问题解决

MinkowskiEngine在cuda11.8中成功安装_minkowskiengine 11.8-CSDN博客

以上过程很简单,但实际中一般都会报错。

我报错,查GPT好像是CUDA的问题,但虚拟环境我都设置了,并且设置对了。前人也能在11.8上装,torch是gpu版且与cuda版本也都对应。

然后去查源文件。打开setup.py

比较清楚:--cuda_home都是可以编译的时候在终端输入的,,我检查了其它设置没啥问题,也不用特意设置,

if not (CUDA_HOME is False): # False when not set, str otherwiseprint(f"Using CUDA_HOME={CUDA_HOME}")

这个安装过程终端没有打印,说明还是没get到CUDA_HOME,原因未知

然后安装命令最后手动加上了CUDA_HOME路径

python setup.py install --blas_include_dirs=${CONDA_PREFIX}/include --blas=openblas --cuda_home=/usr/local/cuda

如果电脑一般,中间可能会闪退,按照其它教程改小140多行的MAX_COMPILATION_THREADS = 12就行,我这里改为4.

然后虽然会有很多warning,最后还是安成了,python测试暂时没问题。

2025年2月20


http://www.ppmy.cn/ops/160506.html

相关文章

Docker 性能优化指南

Docker 提供了强大的容器化功能,能够帮助开发者在不同的环境中构建、测试和部署应用。然而,随着容器化应用的不断增长,Docker 容器可能会面临一些性能瓶颈,影响其运行效率、资源占用和扩展能力。为了确保容器在生产环境中的高效运…

2024华为OD机试真题-单词接龙(C++)-E卷B卷-100分

2024华为OD机试最新题库-(C卷+D卷+E卷)-(JAVA、Python、C++) 目录 题目描述: 输入描述: 输出描述: 示例1 示例2 题目解析 考点 代码 c++ 题目描述: 单词接龙的规则是:可用于接龙的单词首字母必须要前一个单词的尾字母相同; 当存在多个首字母相同的单词时,取…

【登月计划】 DAY2 中期:产品研发与设计验证(4-6)--《设计图纸如何从电脑飞进生产线?揭秘研发系统的 “暗箱操作”》

目录 四、乐高教学:拆解 CAD/CAE 与 PLM 的 “共生关系” 1. CAD 系统:工程师的 “数字画笔” 🎨 2. CAE 系统:产品的 “虚拟实验室” 🔬 3. PLM 系统:设计的 “大管家” 五、装逼话术:设计…

FPGA与传统硬件开发:开发流程与效率对比

随着科技的不断进步,硬件开发已经不再是一个单一的领域。在众多硬件开发平台中,FPGA(现场可编程门阵列)因其灵活性、可重构性和高性能,逐渐成为电子工程师和硬件开发者的首选工具之一。然而,FPGA开发与传统…

5分钟下载excel模板

PostMapping("/downloadTemplate") Operation(summary"下载入职excel模板") public void downloadExcel(HttpServletResponse response){try{//获取输入流,原始模板位置String filePath "template/gridPersonTemplate.xlsx";ClassPa…

mysql索引为什么用B+树不用,B树或者红黑树

MySQL 选择 B 树作为索引结构,而不是 B 树或红黑树,主要原因如下: 1. 磁盘 I/O 优化 B 树:节点存储更多键值,树的高度较低,减少了磁盘 I/O 次数,适合处理大规模数据。 B 树:虽然也…

C++ 设计模式-解释器模式

数学表达式解释器 示例需求 支持数字、变量、加减乘除运算支持函数调用(如 max(2,3))能够处理嵌套表达式(如 (x + 5) * max(y,10))完整代码实现 #include <iostream> #include <memory> #include <unordered_map> #include <vector> #include &l…

PWM(脉宽调制)技术详解:从基础到应用实践示例

PWM&#xff08;脉宽调制&#xff09;技术详解&#xff1a;从基础到应用实践示例 目录 PWM&#xff08;脉宽调制&#xff09;技术详解&#xff1a;从基础到应用实践示例学前思考&#xff1a;一、PWM概述二、PWM的基本原理三、PWM的应用场景四、PWM的硬件配置与使用五、PWM的编程…