ubuntu上Caffe使用OpenBLAS多线程加速

一些概念

使用Caffe的模型做分类时,其运算大概是这样:把输入的图像当做矩阵,一直不停的和模型里面的卷积层kernel做卷积,然后推给pooling层做缩放,最后得到分类结果。最耗时的部分应该在于卷积的操作,Caffe把卷积这种操作转化成了矩阵相乘。而Caffe使用了BLAS的矩阵相乘接口。BLAS是一个数学函数接口标准,有很多个实现。按照Caffe官方ubuntu的安装文档默认安装的是ATLAS。这个版本的BLAS不能利用多核CPU,我们将其换为OpenBLAS,可以利用多核CPU并行计算,加快Caffe的分类速度。


安装配置OpenBLAS

使用下面命令将OpenBLAS的源代码clone到本地并安装:

1
2
3
4
git clone https://github.com/xianyi/OpenBLAS.git
cd OpenBLAS
make -j4
make install

修改Caffe的Makefile.config,将下面几行:

1
2
3
4
5
6
BLAS := atlas
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
# BLAS_INCLUDE := /path/to/your/blas
# BLAS_LIB := /path/to/your/blas

改为

1
2
3
4
5
6
BLAS := open
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
BLAS_INCLUDE :=  /opt/OpenBLAS/include
BLAS_LIB := /opt/OpenBLAS/lib

然后编译程序运行,打开htop可以看到Caffe模型进行分类时会用满所有的CPU。

配置BLAS

事实上,在计算时候将所有CPU核心用完并不一定是一件好的事情。CPU核心使用的越多,数据通信的开销就会越大,性能反而会下降。OpenBLAS提供了很多方法修改占用CPU核心数。我觉得导出环境变量的方式最方便。在控制台里输入:

1
export OPENBLAS_NUM_THREADS=4

就是设置使用四个核心计算。尝试不同的核心数目,可以得到在当前设备上最优的选择,写到~/.bashrc里就可以一劳永逸啦。


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值