4

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

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

我用谷歌搜索了这个并得到了一些这样页面。我试着export OPENBLAS_NUM_THREADS=8export OMP_NUM_THREADS=8。但是 caffe 仍然使用一个核心。

如何让 caffe 使用多 CPU?

非常感谢。

4

3 回答 3

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 毫秒。

于 2016-05-20T16:34:31.593 回答
1

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

于 2017-05-25T04:16:20.217 回答
-2

我发现这种方法有效:

当您构建 caffe 时,在您的 make 命令中,将其用于 8 个内核: make all -j8make pycaffe -j8

另外,请确保 OPENBLAS_NUM_THREADS=8 已设置。

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

于 2016-01-24T03:27:34.973 回答