如何使用多CPU内核使用caffe和OpenBLAS训练NN

时间:2015-05-12 15:52:00

标签: multithreading machine-learning neural-network caffe openblas

我最近正在学习深度学习,我的朋友推荐我caffe。使用OpenBLAS安装后,我按照文档中的教程MNIST task进行操作。但后来我发现它超级慢,只有一个CPU核心工作。

问题是我实验室中的服务器没有GPU,所以我不得不使用CPU。

我用Google搜索并获得了一些像this这样的页面。我尝试export OPENBLAS_NUM_THREADS=8export OMP_NUM_THREADS=8。但是caffe仍然使用了一个核心。

如何让caffe使用多CPU?

非常感谢。

3 个答案:

答案 0 :(得分:2)

@Karthik。这对我也有用。我做的一个有趣的发现是,使用4个线程可以在caffe定时测试期间减少向前/向后传递2倍。但是,将线程数增加到8或甚至24会导致f / b速度小于我的速度获得OPENBLAS_NUM_THREADS = 4。 以下是几个线程计数的时间(在NetworkInNetwork模型上测试)。

[#threads] [f / b时间以毫秒为单位]
1 223
2 150
4 113
8 125
12 144

相比之下,在Titan X GPU上,f / b通过时间为1.87 ms。

答案 1 :(得分:1)

构建OpenBLAS时,必须设置USE_OPENMP = 1标志以启用OpenMP支持。接下来设置Caffe在Makefile.config中使用OpenBLAS,请通过设置OMP_NUM_THREADS = n导出在运行时期间要使用的线程数。其中n是您想要的线程数。

答案 2 :(得分:-2)

我发现这种方法有效:

在make命令中构建caffe时,请将其用于8个核心: make all -j8make pycaffe -j8

另外,请确保         OPENBLAS_NUM_THREADS=8 已经确定了。

This问题有一个完整的脚本。