校准具有10个计算核心的多核架构:2个处理器核心和8个协处理器。每个处理器内核可以提供2.0 GFlop,而每个协处理器则可以提供1.0 GFlop。所有计算核心可以同时执行计算。除非有明确的限制,否则任何指令都可以在处理器或协处理器内核中执行。
如果应用程序中70%的动态指令是可并行化的,那么在最佳情况下可以获得的最大平均性能(触发器)是多少?请注意,剩余的30%指令只能在并行70%的执行结束后才能执行。
考虑另一个应用程序,其中所有动态指令都可以按照以下依赖关系分为6组(A,B,C,D,E,F)。例如,A-> C表示在开始执行C中的指令之前,需要先完成A中的所有指令。前四个组(A,B,C和D)中的每一个都包含20%的动态指令而其余的两组(E和F)则包含10%的动态指令。每个组中的所有指令必须在同一处理器或协处理器内核上顺序执行。如何在多核体系结构上安排它们以获得最佳性能?现在最大的平均性能(触发器)是多少?
A(20%) --> C(20%) -->
E(10%)-->F(10%)
B(20%) --> d(20%) -->
对于第一部分,您需要使用阿姆达尔定律,即:
max speed-up = 1/(1-p+p/n)
其中p是可并行化的部分。n是执行并行部分的改进因素。
(请注意,阿姆达尔定律公式可用于其他类型的变化的一阶估算。例如,给定ALU能源使用的N减少因子和ALU所使用的能量P因子,可以发现总能量的改善利用。)
在您的情况下,由于串行部分将在更高性能的(2 GFLOPS)处理器内核上执行,因此n为6([8个协处理器内核* 1 GFLOPS /内核+ 2个处理器内核* 2 GFLOPS /内核] / 2 GFLOPS /处理器核心)。
快速计算显示,与1个处理器内核相关的最大加速为2.4。因此,如果整个程序在一个处理器内核上串行执行,则最大FLOPS将是速度乘以速度,即2.4 * 2 GFLOPS = 4.8 GFLOPS。
对于第二部分,请注意,最初有两个独立的指令流:A-> C和B->C。由于系统具有两个处理器核心,因此两者都可以在更高性能的处理器核心上并行执行。此外,两者的工作量相同(每个流占总工作量的40%),因此它们将在同一时间完成相同的性能核心。
由于E取决于C和D的结果,因此必须在两者均完成后才开始。E和F将在处理器核心上执行(该核心是任意的,因为E必须等待两个处理器核心上运行的任务完成)。
如您所见,程序的80%(A + C为40%; B + D为40%)可以并行化2倍,并且程序(E + F)的20%是串行的。然后,您可以将数字插入阿姆达尔定律公式(p = 0.8,n = 2)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句