Ubuntu16.04編譯安裝GPU版本mxnet

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

 

參考:

https://github.com/dingjiansw101/RoITransformer_DOTA

https://www.jianshu.com/p/45ffeec98401

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章