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 otherwise
print(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