具有200 MFLOP运行代码的10个处理器的性能是10%顺序和90%并行化?

时间:2015-01-01 19:31:47

标签: performance parallel-processing

来自Wilkinson和Allen的并行编程的简单问题:使用网络化工作站和并行计算机的技术和应用。完成第一章末尾的练习,并确保我在正确的轨道上。完整的问题是:

1-11 多处理器由10个处理器组成,每个处理器的峰值执行速率为200 MFLOP(每秒数百万个浮点运算)。当10%的代码是顺序的并且90%是可并行化时,在MFLOP中测量的系统性能是什么?

我认为这个问题要我找到一个串行处理器每秒的操作次数,这个操作所需的时间与多处理器相同。

我认为我认为10%的程序运行在200 MFLOPs,90%运行在2,000 MFLOPs,我可以平均这些速度来找到MFLOPs中多处理器的性能:

1/10 * 200 + 9/10 * 2000 = 1820 MFLOPs

因此,当运行10%串行且90%可并行化的程序时,多处理器的性能为1820 MFLOP。

我的方法是否正确?

ps:我知道这并不是现实中的实际情况,因为它更复杂,但我想知道我是否掌握了这些概念。

1 个答案:

答案 0 :(得分:1)

如果90%的时间,所有10个处理器都被充分利用,并且10%的时间只使用1个处理器,那么您的计算将会很好。但是,我不认为这是对问题的合理解释。我认为假设如果使用单个处理器,其计算的10%将在顺序部分上,并且其计算的90%将在可并行化部分上,则更合理。

一种可能性是顺序部分和可并行化部分可以并行运行。然后一个处理器可以运行顺序部分,其他9个处理器可以执行可并行化部分。所有处理器都将被完全使用,结果将是2000 MFLOPS。

另一种可能性是需要首先运行顺序部分,然后运行可并行化部分。如果单个处理器需要1小时来完成第一部分,而9小时需要执行第二部分,则需要10个处理器1 + 0.9 = 1.9小时总计,平均约为(1 * 200 + 0.9 * 2000)/ 1.9~1053 MFLOPS。