计算多核架构的性能?

时间:2014-01-31 18:07:05

标签: computer-architecture

Cal拥有10个计算核心的多核架构:2个处理器核心和8个协处理器。每个处理器内核可提供2.0 GFlops,而每个协处理器可提供1.0 GFlops。所有计算核心都可以同时执行计算。除非有明确的限制,否则任何指令都可以在处理器或协处理器内核中执行。

如果应用程序中70%的动态指令是可并行化的,那么在最佳情况下可以获得的最大平均性能(触发器)是多少?请注意,只有在执行并行70%结束后才能执行剩余的30%指令。

考虑另一个应用程序,其中所有动态指令可以分为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%) -->

1 个答案:

答案 0 :(得分:1)

对于第一部分,您需要使用Amdahl定律,即:

max speed-up = 1/(1-p+p/n)

其中p是可并行化的部分。 n是执行并行部分的改进因素。

(注意,Amdahl定律公式可用于其他类型变化的一阶估计。例如,考虑到ALU能量使用的N减少因子和ALU使用的P能量分数,可以找到改进在总能源使用中。)

在您的情况下,由于串行部分将在更高性能(2 GFLOPS)处理器内核上执行,因此n为6([8个协处理器内核* 1个GFLOPS /内核+ 2个处理器内核* 2个GFLOPS /内核] / 2 GFLOPS /处理器核心。)

快速计算显示,您可以获得的最大加速比为2.4与1个处理器核心相关。因此,如果整个程序在一个处理器内核上串行执行,那么最大FLOPS将是速度的加速时间,即2.4 * 2 GFLOPS = 4.8 GFLOPS。

对于第二部分,请注意,最初有两个独立的指令流:A - > C和B - > C.由于系统有两个处理器内核,因此两者都可以在更高性能的处理器内核上并行执行。此外,两者都具有相同的工作量(每个流的总量的40%),因此它们将同时完成相同的性能核心。

由于E取决于C和D的结果,因此必须在两次完成后启动。 E和F将在处理器内核上执行(该内核是任意的,因为E必须等待两个处理器内核上运行的任务完成)。

正如您所看到的,80%的程序(40%用于A + C; 40%用于B + D)可以并行化2倍,20%的程序(E + F)是串行的。然后,您可以将数字插入Amdahl定律公式(p = 0.8,n = 2)。