【发布时间】:2019-06-02 15:07:53
【问题描述】:
我们希望尽可能高效地执行下面的循环。我们有两台不同的机器,一台 MIMD 机器和一台 SIMD 机器。
for (i=0; i<2000; i++)
for (j=0; j<3000; j++)
X_array[i][j] = Y_array[j][i] + 200;
第一季度。对于一台 4 CPU MIMD 机器,这台 MIMD 机器的加速是多少?
第二季度。对于八宽 SIMD 机器(即八个并行 SIMD 功能单元),比较 SIMD 机器和 MIMD 机器上执行的指令数。
我认为 Q1 的答案是 4,但我不知道 Q2.. 如何解决这个问题?
【问题讨论】:
-
这看起来像家庭作业,并且关于 SO 家庭作业的问题预计会显示出对解决方案的一些努力。不能指望 SO 用户只会给出解决方案。请编辑以显示已尝试的内容。
-
多核与 SIMD 不是相互冲突的选择,它们是正交的。事实上,大多数现实世界的多核 CPU 都有某种形式的 SIMD,因为在创建多核 CPU 的复杂性之前,值得将 SIMD 指令添加到单核中。使用多线程的加速通常只对大问题很重要,因为线程在大多数系统上都有很多启动开销。您的 4 倍完美加速还假设线程不竞争内存带宽或任何东西。
标签: architecture cpu-architecture