一、需要安装MinkowskiEngine的目标环境
主机:
Centos Linux8,cuda12.2.
anaconda:
python3.9,gcc9.5.0(用conda安装的gcc),pytorch2.3.1(对应cuda12左右的版本)
二、直接安装
pip有安装MinkowskiEngine的命令,首先肯定是直接尝试安装
pip install MinkowskiEngine -i https://pypi.tuna.tsinghua.edu.cn/simple
问题一:
直接安装是报错的,然后稍微往上面翻了一下报错,缺少cblas.h。
自动安装不行所以选择了手动安装。
三、手动安装
找到MinkowskiEngine的git官网:MinkowskiEngine的git链接
可以手动下载整个压缩包或者使用git命令下载
git clone https://github.com/NVIDIA/MinkowskiEngine.git
cd MinkowskiEngine
下载好之后也就是正常开始安装,当然肯定也是报错的。
# 这里CONDA_PREFIX换成anaconda本身的虚拟环境名称即可。
python setup.py install --blas_include_dirs=${CONDA_PREFIX}/include --blas=openblas
错误一:cuda版本不匹配的问题
RuntimeError: The detected CUDA version (12.2) mismatches the version that was used to compile
一般的手动setup.py安装会有版本检测,注释检测即可。
错误二:虚拟环境pip安装ninja引起的问题
我个人把ninja理解成安装助手的意思,看到然后因为ninja报错不太好看bug所以有些博主直接pip
uninstall ninja这里我们也采用了暂时卸载ninja的做法,但是这一步骤做不做感觉都可以,感兴趣的自己试试。
错误三:回到了直接安装时出现bug的地方,没有cblas.h头文件
缺少了openblas这个包。linux本身的包,解决:
openblas安装方法很多,conda、apt-get、手动安装
- 没有root所以apt-get无法使用,如果有root的朋友可以直接:
sudo apt-get install libopenblas-dev
- conda安装,conda本身也可以装,大家参考MinkowskiEnginegit官网的安装教程:
conda install openblas-devel -c anaconda
- 第一种我没法用,第二种我由于某些原因也没装上,所以有了第三种:目的安装openblas,没有root。
还是日常去官网找zip或者tar包https://sourceforge.net/projects/openblas/files/加压。这里注意一下跟gcc的匹配关系,个人感觉应该是有关系的,我是gcc9.5,找了openblas-0.3.21,安装成功了但是安装结果说的是不完全安装,不过对我来讲够了。有其他需求的朋友找别的博客细看一下不完全安装的原因吧。
安装:
cd openblas-0.3.21/
# 这里找到的需要gfoetran的命令,如果没有的朋友自己想办法或者直接make试试
make FC=gfortran NO_AVX2=1
make install PREFIX=/非root可以配置的自己想要安装到的目录
不幸运的是不完全安装,但是好在安装成功了也就不管了继续MinkowskiEngine的安装。
当然手动安装需要配置环境变量:vim一下.bashrc,加入下面的几行
OPEN_BLAS_HOME=PREFIX/openblas # PREFIX改成安装的openblas路径
export CPLUS_INCLUDE_PATH=$OPEN_BLAS_HOME/include:$CPLUS_INCLUDE_PATH
export LIBRARY_PATH=$OPEN_BLAS_HOME/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=$OPEN_BLAS_HOME/lib:$LD_LIBRARY_PATH
错误四:这里遇到了MinkowskiEngine源代码里面的一些文件报错,找了官网问题讨论里面的一些参考https://github.com/NVIDIA/MinkowskiEngine/issues/543
emmm大概就按照下面步骤自己操作了:
1. 找到setup文件中
MAX_COMPILATION_THREADS = 12
改成
MAX_COMPILATION_THREADS = 4
2. 有些文件里面好像缺少了头文件,直接按照下面操作
修改:MinkowskiEngine/src/convolution_kernel.cuh文件,加入:
#include <thrust/execution_policy.h>
修改:MinkowskiEngine/src/coordinate_map_gpu.cu文件,加入:
#include <thrust/unique.h>
#include <thrust/remove.h>
修改:MinkowskiEngine/src/spmm.cu文件,加入:
#include <thrust/execution_policy.h>
#include <thrust/reduce.h>
#include <thrust/sort.h>
修改:MinkowskiEngine/src/3rdparty/concurrent_unordered_map.cuh文件,加入:
#include <thrust/execution_policy.h>
四、安装成功
解决完上面的bug回到手动安装的命令
# 这里CONDA_PREFIX换成anaconda本身的虚拟环境名称即可。
python setup.py install --blas_include_dirs=${CONDA_PREFIX}/include --blas=openblas
差不多没啥问题了。
最后给出一些我参考的链接:
记录MinkowskiEngine 安装过程中的踩坑经历_minkowski engine-CSDN博客