===========Mc-cnn的环境配置,离线 =================
Ubuntu16.04 + Cuda8.0 + cudnn5 + opencv2.4 + png++ + torch7
本文适合离线配置环境, 在线配置,可以参考文末链接
目录
1. 更新显卡驱动
tips: 建议先下载cuda, 根据cuda版本对驱动的要求,下载符合要求的驱动.。例如:cuda为cuda_8.0.61_375.26_linux.run, 即要求驱动版本不能低于375
1.1: 关闭图形化桌面, 如果是服务器,跳过
>> ctrl + Alt + F1
>> sudo service ligthdm stop
1.2: 卸载旧驱动
>> sudo apt-get install autoremove --purge nvidia*
>> sudo apt-get purge nvidia-*
验证卸载成功:使用nvidia-smi, 不会出来显卡信息,即为OK.
1.3: 安装新的驱动:
>> sudo chmod a+x cuda_8.0.61_375.26_linux.run // 获取权限
>> sudo bash NVIDIA-Linux-x86_64-430.26.run //本地
>> sudo bash NVIDIA-Linux-x86_64-430.26.run --no-x-check //服务器
1.4 启动图形界面
>> sudo service lightdm restart
2. 安装cuda
2.1: 安装
>> sudo sh cuda_8.0.61_375.26_linux.run
>> Q跳过文件阅读, 除了安装驱动的选项选择no,其他默认/yes
2.2: 添加环境变量
? 还没弄清楚这几种方法的区别?
方法1.
a.添加环境变量:
>> sudo gedit /etc/profile
在文件末尾添加:
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
b.添加Lib库路径 (可选)
在/etc/ld.so.conf.d加入cuda.conf:
>> vim /etc/ld.so.conf.d/cuda.conf
加入新内容: /esr/local/cuda-8.0/lib64
>> sudo ldconfig
c.查看是否安装成功: nvcc -V
方法2.
>> vim ~/.bashrc
在文件末尾添加:
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
>> source ~/.bashrc
方法3.
>>sudo gedit ~/.bash_profile
在文件末尾添加:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64:/usr/local/cuda-8.0/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda-8.0
>>source ~/.bashrc
2.3 验证是否安装成功:
>> cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
>> sudo make
>> ./deviceQuery
如果显示result=PASS 则安装成功
2.4 如果需要卸载cuda重装:
>> cd /usr/local/cuda/bin
>> sudo ./uninstall_cuda_8.0.pl
3.安装cudnn
1.cudnn中文件结构:
---include
cudnn.h
---lib64
libcudnn.so
libcudnn.so.6
libcudnn.so.6.0.5
libcudnn_static.a
2. 配置
方法1: (12345)或(12346)
1>> tar xvzf cudnn-8.0-linux-x64-v5.1.tgz // 解压后文件名为cuda, 重命名为cudnn
2>> cd cudnn
3>> sudo cp include/cudnn.h /usr/local/cuda/include/
4>> sudo cp lib64/libcudnn* /usr/local/cuda/lib64
5>> sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
6.1>> sudo rm libcudnn.so.6 libcudnn.so
6.2>> sudo ln libcudnn.so.6.0.5 libcudnn.so.6
6.3>> sudo ln libcudnn.so.6 libcudnn.so
方法2:
1>> vim ~/.bashrc
2>> 添加 export LD_LIBRARY_PATH=xxx/xxx/cudnn/lib64:$LD_LIBRARY_PATH
3>> source ~/.bashrc
重启terminal
5>> sudo cp include/cudnn.h /usr/local/cuda/include/
6>> sudo chmod a+r /usr/local/cuda/include/cudnn.h
4. 安装opencv2.4
4.1 编译安装:
1.下载,解压,cd opencv-2.4.13
2. >> mkdir release
3. >> cd release
4. >> cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
5. >> make -j4
6. >> sudo make install
4.2 配置环境:
1. 加入系统路径:
>> sudo vim /etc/ld.so.conf.d/opencv.conf
>> 末尾加入: /usr/local/lib
>> sudo ldconfig
>> sudo vim /etc/bash.bashrc
>>末尾加入:export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
>> sudo source /etc/bash.bashrc // 如果报错,则需要切换到root, source /etc/bash.bashrc
>> ctrl+d (退出root)
>> sudo updatedb //更新database
2.测试用例是否成功, 见参考链接:https://blog.csdn.net/u011557212/article/details/54706966
5.PNG++安装:
5.1. 下载PNG++所依赖的libpng和zlib====libpng-1.2.53.tar; zlib-1.2.8.tar;
下载地址:http://sourceforge.net/projects/libpng/files/libpng12/1.2.53/libpng-1.2.53.tar.xz/download
解压,libpng和zlib安装指令一样,如下:
./configure
make check
sudo make install
make check
sudo ldconfig
5.2. 安装png++: png++-0.2.9:http://download.savannah.gnu.org/releases/pngpp/
>> make # 如果出现pixel_generator.deb not found 类似的错误,再运行一遍make
>> make test # 貌似又一些错误可以忽略不管,只要最后一步测试用例可以通过即可
>> make install PREFIX=$HOME
测试用例参考:https://blog.csdn.net/qq_37641714/article/details/86067091
6. torch离线 安装:
1.使用之前联网机子上编译好的torch文件。 不确定没有编译好的可不可以用,感觉应该也可以, 因为后期又重新install 了。
2.正常联网运行install-deps,是装依赖,主要是BLAS,和lapack. 离线的话,需要手动装
######## OpenBLAS 安装
1.下载,,解压,cd OpenBLAS-0.3.9
2.make
3.sudo make PREFIX=/usr/local/OpenBLAS install
make -j 8 -f Makefile.install install
make[1]: Entering directory '/home/userxxx/demo/Stereo_Depth/mccnn/install_package/OpenBLAS-0.3.9'
Generating openblas_config.h in /usr/local/OpenBLAS/include
Generating f77blas.h in /usr/local/OpenBLAS/include
Generating cblas.h in /usr/local/OpenBLAS/include
Copying LAPACKE header files to /usr/local/OpenBLAS/include
Copying the static library to /usr/local/OpenBLAS/lib
Copying the shared library to /usr/local/OpenBLAS/lib
Generating openblas.pc in /usr/local/OpenBLAS/lib/pkgconfig
Generating OpenBLASConfig.cmake in /usr/local/OpenBLAS/lib/cmake/openblas
Generating OpenBLASConfigVersion.cmake in /usr/local/OpenBLAS/lib/cmake/openblas
Install OK!
make[1]: Leaving directory '/home/userxxx/demo/Stereo_Depth/mccnn/install_package/OpenBLAS-0.3.9'
#### lapack-3.5.0.tgz 安装
1.tar xzf lapack-3.5.0.tgz
2.cd lapack-3.5.0/
3.mkdir build
4.cd build/
5.cmake ..
-- Configuring done
-- Generating done
-- Build files have been written to: /home/userxxx/demo/Stereo_Depth/mccnn/install_package/lapack-3.5.0/build
报错: cmake fortran compiler not found.
方案: lapack可以通过cmake编译安装, 也可以通过apt-get安装, 可以先通过下载deb安装libblas-dev,liblapack-dev后, 再云顶step5中的cmake ..
libfortran下载地址:https://launchpad.net/~ubuntu-security-proposed/+archive/ubuntu/ppa/+build/15039877
6.修改CMakeCache.txt:
CMAKE_INSTALL_PREFIX:PATH=/usr/local
USE_OPTIMIZED_BLAS:BOOL=OFF
blas_LIB_DEPENDS:STATIC=general;m; 改为:blas_LIB_DEPENDS:STATIC=/usr/local/OpenBLAS/lib/libopenblas.a
7.make
.......
[100%] Linking Fortran executable ../../bin/xeigtstd
[100%] Built target xeigtstd
8.sudo make install
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/lib/pkgconfig/lapack.pc
-- Installing: /usr/local/lib/cmake/lapack-3.4.2/lapack-config.cmake
-- Installing: /usr/local/lib/cmake/lapack-3.4.2/lapack-config-version.cmake
-- Installing: /usr/local/lib/cmake/lapack-3.4.2/lapack-targets.cmake
-- Installing: /usr/local/lib/cmake/lapack-3.4.2/lapack-targets-noconfig.cmake
-- Installing: /usr/local/lib/pkgconfig/blas.pc
-- Installing: /usr/local/lib/libblas.a
-- Installing: /usr/local/lib/liblapack.a
-- Installing: /usr/local/lib/libtmglib.a
3.在torch中,注意install.sh文件中的line46:
export CMAKE_LIBRARY_PATH=/opt/OpenBLAS/include:/opt/OpenBLAS/lib:$CMAKE_LIBRARY_PATH
报错1: cmake not found, 虽然通过cmake --version, which cmake, whereis cmake, 均可以看到已经装了cmake,但编译的时候仍然报错, 可以重新装一遍cmake, 最好装与当前cmake --version 版本一致的.
报错2: install.sh时,出现有关libz.so的错误, 但是通过查找并没有发现/usr/lib, /usr/lib/x86....等存在libz文件,可能是系统根本没有装libz库, 所以通过下载deb包安装后再继续运行。
说明寻找OpenBLAS时,是在/opt/路径下找的,可能是在线安装时,默认的安装路径把. 因为我们离线安装在了/usr/local/OpenBLAS, 所以将/usr/local/下的OpenBLAS拷贝到/opt/下即可.
4.重新运行./install.sh 出现错误:
CMake Error at cmake/FindCUDNN.cmake:141 (file):
file failed to open for reading (No such file or directory):
/usr/local/include/cudnn.h
Call Stack (most recent call first):
CMakeLists.txt:15 (FIND_PACKAGE)
-- Configuring incomplete, errors occurred!
See also "/home/torch/extra/cudnn/build/CMakeFiles/CMakeOutput.log".
Error: Build error: Failed building.
Do you want to automatically prepend the Torch install location
to PATH and LD_LIBRARY_PATH in your /home/.bashrc? (yes/no)
[yes] >>>
yes
ORZ....似乎cmake没有找到cudnn......
5.直接将cudnn.h拷贝到/usr/local/include下
cd ~/userxxx/demo/Stereo_Depth/mccnn/install_package/cudnn/include
sudo cp cudnn.h /usr/local/include
6.再次运行./install.sh
这次显示:
Found CUDA on your machine. Installing optional CUDA packages
cmake -E make_directory build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="/home/torch/install/bin/.." -DCMAKE_INSTALL_PREFIX="/home/torch/install/lib/luarocks/rocks/cudnn/scm-1" && make
-- Found Torch7 in /home/torch/install
-- Configuring done
-- Generating done
-- Build files have been written to: /home/torch/extra/cudnn/build
cd build && make install
Install the project...
-- Install configuration: "Release"
-- Installing: /home/torch/install/lib/luarocks/rocks/cudnn/scm-1/lua/cudnn/BGRU.lua
-- Installing: /home/torch/install/lib/luarocks/rocks/cudnn/scm-1/lua/cudnn/BLSTM.lua
.......
.......
Updating manifest for /home/torch/install/lib/luarocks/rocks
cudnn scm-1 is now built and installed in /home/torch/install/ (license: BSD)
Do you want to automatically prepend the Torch install location
to PATH and LD_LIBRARY_PATH in your /home/.bashrc? (yes/no)
[yes] >>>
yes
其他一些不确定是否必须的包的安装:
#######离线的lua安装:
1. 下载lua-5.2.3包
2. sudo make linux test
# error:recipe for target 'lua.o' failed, fatal error: readline/readline.h: No such file or directory, 是因为没有装readline包
3.下载libreadline-dev_6.3-8ubuntu2_amd64.deb, 及其依赖
# sudo dpkg -i xxxx.deb
4.sudo make linux test
5.输入lua,显示如下:
The program 'lua' can be found in the following packages:
* lua5.2
* lua5.1
* lua50
Try: sudo apt install <selected package
6.正常联网时应该:sudo apt install lua5.2, 由于离线安装,需要先下载包,及其一系列包下载liblua50-dev_5.0.3-7_amd64.deb,
#sudo dpkg -i xxx.deb
8.安装完,输入lua, 测试
Lua 5.0.3 Copyright (C) 1994-2006 Tecgraf, PUC-Rio
> io.write("hello world\n")
hello world
tips:
- apt-get需要联网, 离线时,先下载deb包,再安装:
- 例如: libreadline-dev , 从Ubuntu官网下载库,通过sudo dpkg -i libreadline-dev 安装,需要注意其所依赖的环境。
遇见的错误:
- lua安装:
- lua.c:82:31: fatal error: readline/readline.h: 没有那个文件或目录: https://my.oschina.net/u/1420452/blog/830834
参考连接:
1. MC-CNN环境配置:https://blog.csdn.net/qq_37641714/article/details/86067091;
https://blog.csdn.net/fighter_zzh/article/details/81712047
3.cuda安装:
https://blog.csdn.net/EliminatedAcmer/article/details/80528980
4.cudnn安装:
https://blog.csdn.net/u013066730/article/details/80894063
5.opencv安装:
https://blog.csdn.net/u011557212/article/details/54706966
6.
离线安装dev包 替代apt-get:https://blog.csdn.net/xing1989/article/details/8763914
7.deb包下载地址:
8. BLAS安装:
https://blog.csdn.net/zhe_csdn/article/details/98477939
9. lapack 安装参考, 下载地址:http://www.netlib.org/lapack/, 安装方式:http://piaolingspace.blogspot.com/2017/09/ubuntu-1604openblas-lapack.html
10.png++安装参考:https://www.nongnu.org/pngpp/doc/0.2.5/; 注意最后一步验证是否成功时, 不是单引号。
g++ -c example.cpp `libpng-config --cflags`
g++ -c example.cpp `libpng-config --cflags`