本人的mxnet因为要用到面向DOTA数据集的RoI网络下的包(如下),只能先把包拷过来再编译安装;
cp ${RoI_ROOT}/fpn/operator_cxx/* ${MXNET_ROOT}/src/operator/contrib
如果不需要使用附加包,直接pip安装简单省事:
pip install mxnet//CPU版本
pip install mxnet-cuxx//GPU版本
确定需要编译安装,首先安装build依赖:
sudo apt-get update
sudo apt-get install -y build-essential git
安装openblas:
sudo apt-get install -y libopenblas-dev liblapack-dev
安装opencv:
sudo apt-get install -y libopencv-dev
下载mxnet源码:
git clone --recursive https://github.com/apache/incubator-mxnet
cd incubator-mxnet
git submodule update --init --recursive
注意下载这个新版本,老版本编译有问题。
编译mxnet:
make -j $(nproc) USE_OPENCV=1 USE_BLAS=openblas USE_CUDA=1 USE_CUDA_PATH=/usr/local/cuda USE_CUDNN=1
注意:你的/usr/local/下可能有好几个cuda版本,选择自己要用的那一个
!!!!!!
然后就出现了这个问题:
error: token ""__CUDACC_VER__ is no longer supported. Use __CUDACC_VER_MAJOR__, __CUDACC_VER_MINOR__, and __CUDACC_VER_BUILD__ instead."" is not valid in preprocessor expressions
#define __CUDACC_VER__ "__CUDACC_VER__ is no longer supported. Use __CUDACC_VER_MAJOR__, __CUDACC_VER_MINOR__, and __CUDACC_VER_BUILD__ instead."
网上对这个问题的解法如下:
解法1:g++版本降级到4.8;
解法2:cuda路径问题,检查~/.bashrc,~/etc/profile,/etc/ld.so.conf.d/cuda.conf;
解法3:cuda和Eigen版本问题,因为__CUDACC_VER__ =
__CUDACC_VER_MAJOR__ * 10000 +
__CUDACC_VER_MINOR__ * 100 +
__CUDACC_VER_BUILD__
需要cuda版本降级到cuda8或者Eigen编译安装;
以上三个解法毫无卵用。
真正有用的解法是:
把你已经装好的cuda再装一遍,之前安装的不用卸载或者任何处理,cuda再安装一遍就行(driver不要选,这个不需要重新装)
cuda需要安装两遍才行,不知道这个问题是cuda10.1专有还是其他版本也有问题;安装一遍它自己假装装好了其实并没有装好。。。。。。
!!!!!!
将mxnet安装到python上:
cd python
sudo python setup.py install
注意:如果你是双版本python,sudo默认绑定的是主版本python,需要先which python确定要目标python路径,把上面命令替换成
cd python
sudo which python找到的路径下/python setup.py install
很久不写博了,安静地搞科研去了,但mxnet前前后后装了不下十遍,真的很气。。。。。。
参考: