3

使用并行编程的典型或实际问题可能是什么?实施起来可能非常具有挑战性。在互联网上,他们解释了如何使用它,但没有解释为什么。

4

4 回答 4

5

性能是使用并行编程的最常见原因。但是:并非所有程序都会通过使用并行编程变得更快。在大多数情况下,您的算法由可并行化的部分和固有顺序的部分组成。您总是必须对使用并行编程的潜在性能增益进行推理。在某些情况下,使用它的开销实际上会使您的程序变慢。查看Amdahl 定律,了解更多关于您可以达到的潜在性能改进的信息。

如果您只想要一些并行计算的使用示例:有些算法本质上是并行的,请参阅这篇文章伯克利的矮人

于 2013-08-20T12:03:55.930 回答
2

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

在这种情况下使用线程只是使代码更清晰的好习惯。程序员可以选择使用线程,让一个线程等待输入,而另一个线程执行计算。

换句话说,多线程有时可以更好地利用计算机可支配的不同资源:网络、磁盘、输入设备或简单的监视器。

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

于 2013-08-20T13:28:06.020 回答
1

人们对并行编程越来越感兴趣的部分原因是我们今天使用的硬件更加并行。(多核处理器,多核 GPU)。要充分利用此硬件,您需要并行编程。

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

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

现在,有些程序比其他程序更容易并行化。您不应该随意尝试并行化整个代码库。但即使没有商业原因,这样做也是一种有用的练习:那么当你真正需要它的那一天,你就会准备得更充分。

于 2013-08-20T13:51:15.087 回答
-3

很少有问题不能通过并行程序比串行程序更快地解决。很少有计算机没有多个处理单元。

因此,我得出结论,您应该始终使用并行编程。

于 2013-08-20T11:47:08.007 回答