本人的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前前後後裝了不下十遍,真的很氣。。。。。。
參考: