加速并行计算

时间:2016-01-05 02:23:17

标签: java parallel-processing google-compute-engine

我使用google compute运行基于控制台的Java程序并获得了以下加速:

  • 2个vCPU需要3分钟
  • 8个vCPU需要1.5分钟

我原本期望使用8个vCPU比使用2个vCPU快4倍(尽管我还没有尝试使用4个vCPU)。这是正常的还是应该仔细检查我的程序?

如果这是正常的,那么实现1.5分钟/ 2 = 0.75分钟的加速需要多少个vCPU? 16或32或......?

我是这个并行的新手。

2 个答案:

答案 0 :(得分:2)

这取决于你的程序是否可以完全并行化(这是你实现理论上的最大加速比),或者它有一些是并行的部分,而某些部分则不是(在现实世界的程序中更有可能)

请参阅Amdahl's law说明:

  

在计算机体系结构中,Amdahl定律(或Amdahl的论证)给出了在固定工作负载下执行任务的延迟的理论加速,这可以预期资源得到改善的系统。 / p>

这里有一个加速的可视化,取决于程序可以并行化的程度:

  

Amdahl's law

图片来自" AmdahlsLaw"作者:Daniels220英文维基百科 - 自己的工作基于:文件:AmdahlsLaw.png。通过下载CC BY-SA 3.0获得许可 - https://commons.wikimedia.org/wiki/File:AmdahlsLaw.svg#/media/File:AmdahlsLaw.svg

答案 1 :(得分:1)

根据您的数字,您的程序看起来可以80%并行化。 这意味着固定运行成本应该在1分钟左右。所以你无法进一步减半。

  • 10个vCPU:1.4分钟
  • 40 vCPUS:1.1分钟
  • 80个vCPU:1.05分钟