如何在CPU和GPU混合算法中计算速度和效率?

问题描述 投票:1回答:1

我有一个算法,仅使用CPU即可并行执行,并且实现了30倍的加速。也就是说,效率等于0.93(效率=加速/核心,即0.93 = 30/32)。后来我将2个GPU(每个448个内核的Tesla C2075)一起添加到32个CPU内核中。要计算包括CPU和GPU在内的效率,是否应将GPU内核数量添加到CPU内核中?也就是说,我将使用928个内核(32 + 448 + 448 = 928)来计算效率。还是应该以不同的方式计算?

根据此处所说的内容计算出加速和效率:https://software.intel.com/en-us/articles/predicting-and-measuring-parallel-performance

performance parallel-processing gpu cpu
1个回答
0
投票

GPU具有更大的称为“ SM”或“ CU”的“核心复杂”体系结构,每个体系结构都有数十个管道。它们与CPU的“ SIMD”不太“相似”,它们可以在“单线程”内核代码中并行于这些管道发出命令。

[您已经计算了CPU中的“内核”,而不是SIMD管道(这是内核数的4至16倍),因此,计算Nvidia的SM单元或Amd的CU或Intel的Slice子集是没有错的。

Tesla C2075具有14个SM单元,因此您可以为每个GPU添加14个(32 + 14 + 14)。

[如果您还对CPU使用SIMDified代码,那么计数GPU / SM / CU数量的32到192倍(例如您的每个GPU的448)的GPU的每个流水线就没错了(32*SIMD_WIDTH + 448 + 448 )。

至少这是我计算“核心效率”和“管道效率”的方式。如果与GPU之间的数据传输不是瓶颈,那么添加GPU后效率不应降低太多。

© www.soinside.com 2019 - 2024. All rights reserved.