1. 软件列表
- Ubuntu 14.04 amd64
(.iso)
› Alternative downloads › Past releases › 14.04.5 › 选择ubuntu-14.04.5-desktop-amd64.iso
- Cuda 8.0
(.run)
› CUDA Toolkit Downloads › Linux+x86_64+Ubuntu+14.04+runfile ›Download(1.4GB)
- Cudnn 5.1
(.tgz)
› Download › Agree › Download cuDNN v5.1 for CUDA 8.0 ›cdDNN v5.1 Library for Linux
- MKL: Intel® Parallel Studio XE Cluster Edition for Linux:
› Linux* › 全部勾选 Accept › 注册(教育Email+Country+Submit) › Register an Account ›parallel_stuio_xe_2017_update2.tgz
- Matlab 2014a
Optional
2. 系统安装
UltralSO
制作U盘启动盘on Windows
。
› 启动 › 写入硬盘映像 › 选择U盘 › 写入
- 提醒,写入过程会 格式化 U盘,请注意 备份 数据。
- 开机,
F2
或DEL
进入BIOS
, 启动顺序选U盘
。退出BIOS,进入Ubuntu安装界面,选择安装Ubuntu
,默认安装。
- 提醒, 选择 安装类型 时,警惕
清除整个磁盘安装
选项。 - 推荐选择
LVM
- 提醒, 选择 安装类型 时,警惕
- 磁盘分区可以默认全划给
/dev/sda
。 - 注册 用户名,主机名,密码。
重启
电脑,恢复BIOS
中的启动顺序为硬盘
第一。
3. 安装依赖 [1]
3.0 热身准备
-
通用依赖
sudo apt-get update
sudo apt-get install -y \
libprotobuf-dev protobuf-compiler \
libleveldb-dev libhdf5-serial-dev libsnappy-dev \
libopencv-dev # opencv
sudo apt-get install -y --no-install-recommends libboost-all-dev # boost-c++
-
其他依赖
sudo apt-get install -y \
libgflags-dev libgoogle-glog-dev \
liblmdb-dev
-
常用软件
sudo apt-get install -y \
vim cmake openssh-server lrzsz git gparted
-
安装NVIDIA驱动
3.1 拷贝程序
-
挂载U盘
sudo mkdir -p /mnt/usb # 创建挂载目录
sudo fdisk -l # 查看U盘盘符
sudo mount -t auto [/dev/sdb5] /mnt/usb # 挂载
ll /mnt/usb # 测试挂载成功
-
拷贝软件
sudo cp -r /mnt/usb/softwares ~/
cd ~/softwares
sudo chown -R 755 . # 修改文件权限
-
卸载U盘
sudo umount /mnt/usb # 卸载U盘
3.2 Cuda 8.0
-
关闭图形界面,防止
驱动更新
造成开机死循环。
Ctrl+Alt+F1
进入字符界面。sudo service lightdm stop # 关闭桌面服务
-
安装
cuda 8.0
。sudo ./cuda_8.0.61_375.26_linux.run # 启动cuda安装程序
## 安装引导
1. Do you accept the previously read EULA?
accept/decline/quit: accept `enter`
2. Install NVIDIA Accelerated Graphics Driver for Linux-x86_86xxx?
(y)es/(n)o/(q)uit: n `enter`
3. Do you want to install a symbolic link at /uer/local/cuda?
(y)es/(n)o/(q)uit: y `enter`
4. Install the CUDA 8.0 Samples?
* (y)es/(n)o/(q)uit: y `enter` # develop
Enter CUDA Samples Location
[ default is /home/usr ]: `enter`
* (y)es/(n)o/(q)uit: n `enter` # deploy
-
重启图形界面。
sudo service lightdm start # 启动桌面服务
-
配置环境变量
sudo su
echo "export PATH=/usr/local/cuda-8.0/bin:$PATH" >> /etc/profile && source /etc/profile
echo "/usr/local/cuda/lib64"
> /etc/ld.so.conf.d/cuda.conf && ldconfig -v | grep cuda
exit
-
验证是否安装成功
if installed Samples
nvcc -V # 版本信息release 8.0
nvidia-smi # 显卡管理器
## if installed Cuda Samples
cd ~/NVIDIA_CUDA-8.0_Samples/1_Utilities/deviceQuery
make
./deviceQuery # 输出结尾为`pass`
3.3 Cudnn 5.1
cd ~/softwares
sudo mv cudnn-8.0-linux-x64-v5.1.solitairetheme8 cudnn-8.0-linux-x64-v5.1.tgz
sudo tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz
sudo cp cuda/include/cudnn.h /usr/local/include
sudo cp cuda/lib64/libcudnn.* /usr/local/lib
sudo chmod a+r /usr/local/include/cudnn.h
sudo chmod a+r /usr/local/lib/libcudnn.*
3.3.1 NCCL Optional
Version ≥ 1.2.3
(Linked with Cuda8.0), 单机多卡支持。
unzip nccl-1.2.3-1-cuda8.0.zip && cd nccl-1.2.3-1-cuda8.0
make CUDA_HOME=/usr/local/cuda test -j $(nproc)
## tset
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./build/lib
./build/test/single/all_reduce_test 10000000
## install
sudo make PREFIX=/usr/local install
3.4 BLAS
基础线性代数子程序(Basic Linear Algebra Subprograms)
-
MKL
: Intel® Parallel Studio XE Cluster Edition for LinuxSelect
tar -zxvf parallel_studio_xe_2017_update2.tar.gz
cd parallel_studio_xe_2017_update2
sudo chmod a+x -R .
sudo ./install.sh # or ./install_GUI.sh
配置环境变量
sudo su
echo "/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64" > /etc/ld.so.conf.d/intel_mkl.conf && ldconfig -v | grep intel
exit
-
Atlas
:Select
sudo apt-get install -y libatlas-base-dev
3.5 OpenCV
Version ≥ 3.1.0
兼容cuda8.0
-
解压源码
unzip opencv-3.2.0.zip && cd opencv-3.2.0
-
ippicv_linux_20151201
三方依赖包下载超时[2]。ipp_file=../ippicv_linux_20151201.tgz
ipp_hash=$(md5sum $ipp_file | cut -d" " -f1)
ipp_dir=3rdparty/ippicv/downloads/linux-$ipp_hash
mkdir -p $ipp_dir
cp $ipp_file $ipp_dir
- 更简单的方法,在 确保 MD5是808b791a6eac9ed78d32a7666804320e的情况下,在OpenCV源码根目录下创建目录:
opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e
将下载的ippicv_linux_20151201.tgz
拷贝进去。
-
编译安装
sudo chmod a+x .
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j $(nproc) # 多线程编译
sudo make install && sudo ldconfig # 安装并更新环境变量
3.6 Matlab 2014a Optional
[3]
-
挂载iso镜像
cd ~/softwares
mkdir matlab # 加载目录
sudo mount -o loop MATHWORKS_R2014A.iso matlab # 解压
sudo chmod 755 -R matlab
-
安装与激活
cd matlab
sudo ./install # 选择不联网安装
> 12345-67890-12345-67890 # 序列号
> Crack/license_405329_R2014a.lic # 不联网安装激活文件
-
破解
sudo chmod -R a+w /usr/local/MATLAB
sudo cp Crack/Linux/libmwservices.so /usr/local/MATLAB/R2014A/bin/glnxa64/
-
卸载镜像
cd ..
sudo umount matlab
4. 编译Caffe
4.1 配置编译选项
-
下载Caffe
release candidate 5
wget -O caffe-rc5.zip https://codeload.github.com/BVLC/caffe/zip/rc5
unzip caffe-rc5.zip && rm caffe-rc5.zip && cd caffe-rc5
-
修改编译配置文件
cp Makefile.config.example Makefile.config
sed -i 's/# USE_CUDNN := 1/USE_CUDNN := 1/' Makefile.config
sed -i 's/# WITH_PYTHON_LAYER := 1/WITH_PYTHON_LAYER := 1/' Makefile.config
sed -i 's/# OPENCV_VERSION := 3/OPENCV_VERSION := 3/' Makefile.config
sed -i 's/BLAS := atlas/BLAS := mkl/' Makefile.config # if installed mkl
4.2 编译与测试
make all -j $(nproc)
make test -j $(nproc)
make runtest -j $(nproc)
4.3 编译PyCaffe Optional
使用系统原生Python version 2.7.6
sudo apt-get install -y \
python-pip python-dev \
python-numpy python-scipy python-matplotlib \
python-sklearn python-skimage \
python-h5py python-protobuf python-leveldb \
python-networkx python-nose python-pandas \
python-gflags cython ipython
make pycaffe -j $(nproc)
make pytest -j $(nproc)
4.4 编译MatCaffe Optional
Matlab_2014a for Unix
sed -i 's/CXXFLAGS += -MMD -MP/CXXFLAGS += -MMD -MP -std=c++11/' Makefile
sudo make matcaffe -j $(nproc)
sudo make mattest -j $(nproc)
5 Cmake cuda [4]
5.1 Configure
vim CMakeLists.txt
- Change USE_NCCL to "ON"
vim cmake/Dependencies.cmake
- find "set(BLAS "Atlas" ...)"
- change "Atlas" to "MKL"
5.2 Cmake
mkdir cmake_build && cd cmake_build && cmake ..
5.3 Make
cmake . -DCMAKE_BUILD_TYPE=Debug # 跳转到Debug模式下
make -j $(nproc) && make install
cmake . -DCMAKE_BUILD_TYPE=Release # 跳转到Release模式下
make -j $(nproc) && make install
make symlink # softlink cmake_build to build
Debug
和Release
下生成的可执行文件不会相互覆盖,Debug下都会有-d
的后缀。
5.4 cmake shared-lib with caffe and JNI
Predict.java
public static native HashMap<String, Float> predict(List<CalculateInfo> images,
int reset,
String modelFile,
String trainedFile,
int batchSize,
int gpuId);
Signature head file
javac com/persist/.../Predict.java # get Predict.class
javah com.persist...Predict # get Predict.h
CMakeLists.txt
cmake_minimum_required(VERSION 2.8.8)
set(SrcFile classify.cpp)
# file(GLOB_RECURSE examples_srcs "${PROJECT_SOURCE_DIR}/porn-jni/*.cpp")
find_package(JNI)
if (JNI_FOUND)
message (STATUS "JNI_INCLUDE_DIRS=${JNI_INCLUDE_DIRS}")
message (STATUS "JNI_LIBRARIES=${JNI_LIBRARIES}")
endif()
find_package(OpenCV REQUIRED)
if (OpenCV_FOUND)
message (STATUS "OpenCV_INCLUDE_DIRS=${OpenCV_INCLUDE_DIRS}")
message (STATUS "OpenCV_LIBS=${OpenCV_LIBS}")
endif()
find_package(Caffe REQUIRED)
if (Caffe_FOUND)
message (STATUS "Caffe_INCLUDE_DIRS=${Caffe_INCLUDE_DIRS}")
message (STATUS "Caffe_DEFINITIONS=${Caffe_DEFINITIONS}")
message (STATUS "Caffe_LIBRARIES=${Caffe_LIBRARIES}")
endif()
message (STATUS "Caffe_Link=${Caffe_Link}")
include_directories(${JNI_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS} ${Caffe_INCLUDE_DIRS})
add_library(PornJni SHARED ${SrcFile})
target_link_libraries(PornJni ${Caffe_Link} ${JNI_LIBRARIES} ${OpenCV_LIBS} ${Caffe_LIBRARIES})
cmake
mkdir cmake_build && cd cmake_build
cmake .. && make -j $(nproc)
[1] Ubuntu 14.04+cuda8.0+opencv3.1+caffe↩
[2] OpenCV 3.1下载 ippicv_linux_20151201失败↩
[3] 在Ubuntu14.04下安装matlab2014a↩
[4] https://github.com/BVLC/caffe/pull/1667↩