10 个处理器能够运行 10% 顺序和 90% 并行化代码的 200 MFLOPs 的性能是多少?
What is the performance of 10 processors capable of 200 MFLOPs running code which is 10% sequential and 90% parallelelizable?
来自 Wilkinson 和 Allen 的并行编程的简单问题:使用网络工作站和并行计算机的技术和应用程序。完成第一章末尾的练习,并希望确保我在正确的轨道上。完整的问题是:
1-11 一个多处理器由 10 个处理器组成,每个处理器的峰值执行速率可达 200 MFLOP(每秒百万次浮点运算)。当 10% 的代码是顺序的,90% 的代码是可并行的时,以 MFLOPs 衡量的系统性能是多少?
我假设这个问题是要我找出串行处理器每秒的操作次数,这将花费与多处理器相同的时间来运行程序。
我认为我的想法是正确的,10% 的程序以 200 MFLOPs 运行,90% 以 2,000 MFLOPs 运行,我可以对这些速度进行平均以找到 MFLOPs 中多处理器的性能:
1/10 * 200 + 9/10 * 2000 = 1820 MFLOPs
因此,当运行一个 10% 串行和 90% 并行的程序时,多处理器的性能是 1820 MFLOPs。
我的做法正确吗?
ps:我知道这在现实中并不完全是这样,因为它要复杂得多,但我想知道我是否掌握了这些概念。
如果在 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.
来自 Wilkinson 和 Allen 的并行编程的简单问题:使用网络工作站和并行计算机的技术和应用程序。完成第一章末尾的练习,并希望确保我在正确的轨道上。完整的问题是:
1-11 一个多处理器由 10 个处理器组成,每个处理器的峰值执行速率可达 200 MFLOP(每秒百万次浮点运算)。当 10% 的代码是顺序的,90% 的代码是可并行的时,以 MFLOPs 衡量的系统性能是多少?
我假设这个问题是要我找出串行处理器每秒的操作次数,这将花费与多处理器相同的时间来运行程序。
我认为我的想法是正确的,10% 的程序以 200 MFLOPs 运行,90% 以 2,000 MFLOPs 运行,我可以对这些速度进行平均以找到 MFLOPs 中多处理器的性能:
1/10 * 200 + 9/10 * 2000 = 1820 MFLOPs
因此,当运行一个 10% 串行和 90% 并行的程序时,多处理器的性能是 1820 MFLOPs。
我的做法正确吗?
ps:我知道这在现实中并不完全是这样,因为它要复杂得多,但我想知道我是否掌握了这些概念。
如果在 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.