让一个过程使用所有过程的力量

时间:2015-12-19 14:51:44

标签: c linux multithreading neural-network cpu

这个问题非常普遍,所以这里有更详细的信息: 我目前运行Ubuntu 14.04并在神经网络上工作。为了找到最佳参数,我想训练许多不同的参数化网络,看看哪个最好。

网络及其训练序列用c编写,我有一个4核处理器。如果我运行该程序,它会逐个训练每个网络。

现在,系统监视器告诉我程序正在使用大约25%的总过程功率。我怎样才能改善这一点,平均使用所有内核的最佳方法是什么,以及100%的cpu(和gpu?)

目前我正在使用编译标记-pthread,但我想还有更多可能性。

1 个答案:

答案 0 :(得分:0)

我建议你研究一下OpenCL和OpenMP作为充分利用处理能力的方法。使用OpenCL和CUDA的神经网络已经做了很多工作。

这些方法可能更适合您的神经网络。此外,OpenCL和OpenMP应用程序可以编译为使用CPU和GPU硬件而无需进行重大更改。

OpenCL是一种类似C语言的语言,尽管从中获得最佳性能可能非常棘手,但如果神经网络对你很重要,IMO也是值得的。在OpenCL中,您可以在C中编写大量支持代码,并在OpenCL中调用一个小内核,以便并行处理大量数据。

您可能正在开发自己的软件,但我相信FANN神经网络库确实有一个支持OpenCL的版本。