红联Linux门户
Linux帮助

ubuntu16 CUDA编译opencl caffe版本并通过mnist训练测试

发布时间:2017-03-26 10:34:15来源:blog.csdn.net/10km作者:10km
一般来说,大家谈到caffe(https://github.com/BVLC/caffe),都是基于CUDA在的NVIDIA显卡上运行的版本,其实有一个支持opencl的分支版本OpenCL Caffe(https://github.com/BVLC/caffe/tree/opencl)。理论上这个版本的caffe可以运行在支持OpenCL并行计算框架的任何设备上(不限于显卡),因为这个分支版本目前还是试验性版本,所以之前一直没有尝试使用,今天想起来就试着在NVIDIA显卡编译OpenCL Caffe。
这里记下编译过程:
 
硬件配置
神舟Z7M-SL7D2笔记本
CPU Core i7-6700HQ(含集成显卡)
芯片组 Intel Hm170
独立显卡 NVIDIA GTX965M
 
软件环境
ubuntu 16.04
NVIDIA driver 378
CUDA8.0
 
安装OpenCL
对于NVIDIA显卡,只要正常安装了CUDA,就自动包含了OpenCL的支持,所以不需要另外的安装。
ubuntu16 CUDA编译opencl caffe版本并通过mnist训练测试
如果是Intel,AMD或其他的GPU显卡,就要安装相应的OpenCL支持,可以去对应的官网下载。
 
编译环境准备
安装编译OpenCL Caffe所需的依赖库,大部分依赖库与CUDA下编译是一样的,参见《Ubuntu16:cmake生成Makefile编译caffe过程(OpenBLAS/CPU+GPU)#编译环境准备》(http://www.linuxdiyf.com/linux/29147.html)
#!/bin/bash
sudo apt-get install cmake cmake-gui #安装 cmake
sudo apt-get install libprotobuf-dev protobuf-compiler libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev 
sudo apt-get install libboost-all-dev   // 安装boost库
#sudo apt-get install libatlas-base-dev  //BLAS如使用OpenBLAS,可不安装
sudo apt-get install libopenblas-dev    //BLAS如使用atlas,可不安装
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install python-numpy  // 安装numpy
#sudo apt-get install doxygen // doxygen用于文档生成 可不安装
唯一不同的是需要安装ViennaCL,ubuntu下安装ViennaCL也很简单:
sudo apt-get install libviennacl-dev
ViennaCL(http://viennacl.sourceforge.net/)是一个用于并行矩阵计算库,ViennaCL在后台支持OpenCL、OpenMP和CUDA。
 
下载并编译Caffe
#!/bin/bash
# 下载Caffe代码到本地
git clone --recursive https://github.com/BVLC/caffe.git
# 检出opencl分支版本
git checkout opencl
cd caffe && mkdir build && cd build
# 在build下执行cmake生成Makefile 
# 指定BLAS使用OpenBLAS
cmake -DBLAS=Open .. 
# 如果使用atlas 则更简单
# cmake .. 
# 开始编译并安装到build/install文件夹下 并发8线程 提高编译速度
make install -j 8
经编译成功后运行ldd显示,caffe已经是基于cuda下的OpenCL动态库版本
ubuntu16 CUDA编译opencl caffe版本并通过mnist训练测试
 
MNIST训练测试
OpenCL Caffe编译成功后可以运行mnist手写体数字识别训练测试一下效果:
#!/bin/bash
cd caffe
# 下载MNIST训练数据
./data/mnist/get_mnist.sh
# 创建imdb格式数据
./examples/mnist/create_mnist.sh
# 开始训练
./build/tools/caffe  train --solver=examples/mnist/lenet_solver.prototxt
训练过程中运行nvidia-smi,显示GPU已经在满速运行中
ubuntu16 CUDA编译opencl caffe版本并通过mnist训练测试
 
参考
《Caffe-OpenCL在ubuntu16.04.2上的简要安装指南》(http://www.linuxdiyf.com/linux/29298.html)
 
本文永久更新地址:http://www.linuxdiyf.com/linux/29493.html