nvida/cuda容器編譯Caffe踩坑記錄(Ubantu16.04+CUDA10.2)

背景

最近再學caffe,同時想自己編譯下,瞭解瞭解過程。

使用docker容器,利用官方cuda鏡像,進行caffe編譯,瞭解編譯過程,踩坑記錄。

編譯使用cmake。

編譯caffe-python接口。

官方鏡像

#查找cuda鏡像
docker search cuda

docker pull nvidia/cuda

注意cuda鏡像pull下來默認是最新版的CUDA10.2,cuda要和本機的cuda driver版本匹配,匹配版本如下圖(https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html):

有關具體版本可以到docker hub上找相關鏡像。

注意

運行容器的時候,別忘在run的後面加上 --gpus all參數,來映射顯卡驅動,否則還會出現cuda版本和driver不匹配的錯誤(實際上是沒映射驅動)

安裝caffe依賴和編譯器

apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

apt-get install libboost-all-dev    #安裝boost庫

apt-get install libopenblas-dev liblapack-dev libatlas-base-dev

apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev


apt-get install git build-essential cmake-gui #注意這裏沒有cmake

安裝caffe依賴,但要注意,對於cmake的安裝,沒有直接使用apt-get來安裝,因爲用它安裝最新版本只能到3.10.0,如果使用它來編譯,會由於CUDA版本太新,cmake的時候找不到Cuda的某個庫。

cmake要求版本>=3.12.0,安裝方式如下:(我用的3.13.0)

wget https://cmake.org/files/v3.13/cmake-3.13.0.tar.gz #沒有wget的話用apt-get安裝
tar -zxvf cmake-3.13.0.tar.gz
cd cmake-3.13.0
ln -s cmakePath/bin/* /usr/bin #直接將cmake中的二進制文件拷貝到/usr/bin下就能用

Cmake編譯

修改配置

git clone https://github.com/BVLC/caffe.git
cd caffe
#修改CMakeLists.txt
將set(python_version "2" CACHE STRING "Specify which Python version to use")
改爲set(python_version "3" CACHE STRING "Specify which Python version to use")

cd cmake
#修改cuda.cmake文件
將gpu_archs改爲如下:
# Known NVIDIA GPU achitectures Caffe can be compiled for.
# This list will be used for CUDA_ARCH_NAME = All option
set(Caffe_known_gpu_archs "30 35 50 60 61")
#否則或make的時候會出現nvcc fatal   : Unsupported gpu architecture 'compute_20'錯誤

編譯

#在caffe目錄下
mkdir build
cmake ..
make -j'nproc'
make install

編譯成功。

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