我什么时候应该使用并行编程?

时间:2013-08-20 11:36:42

标签: algorithm parallel-processing

使用并行编程可能是一个典型的或真正的问题?它难以实现的东西认为没有并行编程就很简单。在互联网上,他们解释了如何使用它,但不是为什么。

4 个答案:

答案 0 :(得分:5)

性能是使用并行编程的最常见原因。但是:并非所有程序都会通过并行编程变得更快。在大多数情况下,您的算法由可并行化的部分和部分组成,这些部分本质上是顺序的。您总是需要推断使用并行编程的潜在性能提升。在某些情况下,使用它的开销实际上会使您的程序变慢。请查看Amdahl's law,详细了解可以达到的潜在性能改进。

如果您只想要一些并行计算的使用示例:有一些本质上并行的算法类,请参阅本文the dwarfs of berkeley

答案 1 :(得分:2)

使用多线程应用程序架构的另一个原因是它的响应能力。某些功能阻止程序执行一段时间,即从文件,网络读取,等待用户输入等。在这样等待不消耗CPU功率时,它通常会阻塞或减慢程序流。

在这种情况下使用线程只是使代码更清晰的好习惯。而不是使用(通常是复杂的或不直观的)输入检查,将这些检查集成到程序流中,在处理输入和其他任务之间手动切换,程序员可以选择使用线程并让一个线程等待输入,而另一个线程则执行计算

换句话说,多线程有时可以让您更好地使用计算机上的不同资源:网络,磁盘,输入设备或只是监控。

泛化:当速度和响应速度增加超过同步成本和并行化应用程序所需的工作时,建议使用多个线程(包括并行数据处理)。

答案 2 :(得分:1)

之所以对并行编程越来越感兴趣,部分原因在于我们今天使用的硬件更加平行。 (多核处理器,多核GPU)。要从这个硬件中充分受益,您需要并行编程。

有趣的是,并行处理还可以延长电池寿命:

  • 1Ghz的4个内核比4Ghz的单个内核消耗更少的功率。
  • 具有多核CPU的手机将尝试同时运行尽可能多的任务,因此可以在完成所有工作后关闭CPU。这有时被称为“急于闲置”。

现在,有些程序比其他程序更容易并行化。您不应该随机尝试并行化整个代码库。但即使没有商业原因,这也是一个有用的例外:那么当你真正需要它时,你会更加准备好。

答案 3 :(得分:-3)

并行程序比串行程序更难以解决的问题非常少。很少有计算机没有多个处理单元。

因此,我总结说,你应该一直使用并行编程。