本篇文章903字,读完约2分钟

雷锋。(公开号码:雷锋。出版社:这篇文章是著名的数据科学家和salesforce的机器学习工程师anmol rajpurohit给开发者的建议。算法的并行处理是行业中常见的加速方法,但许多开发人员对此有误解。因此,anmol rajpurohit用这篇文章向每个人解释什么时候代码应该并行执行,以及它的前提是什么。

anmol rajpurohit

当一个任务可以被分成几个独立处理的子任务时(没有信息交流和资源共享),并行执行是一个很好的选择。

即便如此,效率,即如何有效地实施它,仍然是一个关键问题。这关系到并行化的理论优势能否实现。

实际上,大多数代码都有需要连续执行的部分。并行子任务也需要某种形式的数据传输同步。因此,与串行相比,很难预测并行化能否使算法运行得更快。

与按顺序处理任务所需的计算周期相比,并行执行总是有额外的成本——至少包括将任务分成子任务并整合它们的结果。与串行计算相比,并行计算的性能在很大程度上取决于一个因素:上述额外步骤消耗的时间与并行执行节省的时间之间的差异。

值得注意的是,并行化带来的额外步骤不限于代码运行的时间,还包括编写并行计算代码和修复漏洞(并行与串行)所需的额外时间。

有一种众所周知的评估并行化性能的理论方法——阿姆达尔定律。它使用以下公式来衡量并行执行子任务(多处理器)相对于串行操作(单处理器)带来的加速:

预定性是完成整个任务的理论加速度;

s是任务中受益于额外系统资源的部分的加速;

p是从额外系统资源中获益的执行时间的比例。

要了解阿姆达尔定律的意义,请看下面的图表。它显示了对应于不同处理器内核的理论加速度。当然,这是基于任务可以实现的不同并行度。

雷锋需要提醒你的一点是:并不是所有的代码都能有效地并行化。它可以在多处理器内核上达到理论上的加速水平,这样的代码很少。这是由于自然限制,如串行部分和内部信息交换成本。通常,大型数据集是并行执行的理想选择。然而,开发人员不应该提高相机并行化的性能,而应该在并行化之前对任务子集进行并行和串行的比较。

走出并行计算的误区 你应该在什么时候用它?

雷锋编的《Viakdnuggets》。

雷锋文章版权所有。严禁擅自转载。详情请参考转载说明。

来源:搜狐微门户

标题:走出并行计算的误区 你应该在什么时候用它?

地址:http://www.shwmhw.com/shxw/60348.html