是否有任何需要 CPU 而不是 GPU 的令人尴尬的并行任务?

计算科学 并行计算 显卡
2021-12-04 21:05:49

我正在寻找的任务

  • 不适合 GPU
  • 随着更多 CPU 节点的添加,获得显着加速
  • 不需要大数据传输或节点之间的线程间通信。

这种类型的问题还存在吗?

4个回答

电磁学 (EM) 的简单示例是为频域仿真执行并行频率扫描,例如,对设备的网络参数(S、Y、Z 等)进行全波提取。由于每个频点的模拟高度独立于另一个,因此模拟可以跨不同内核并行化,包括微不足道的分布式内存并行化。

此类模拟涉及最少的数据传输(如果有),但工作负载分配和最终结果共享除外。然而,对于简单的实现(当然,GPU 上某些 EM 模拟的并行化/编码领域很大),每个模拟都不太适合 GPU,因为它涉及大量分支、复杂的数据处理模式,存储大量辅助数据等。因此,不希望在 GPU 上执行令人尴尬的频率扫描并行化。

注意:请勿阅读此内容,因为 GPU 不适合任何 EM 模拟。对于某些数值方法(例如,有限差分时域)和不同的并行化模式,它们更可取。但是,扫频并行化也是一个必须实现的重要模式。

高质量的视频编码是这样的。

搜索空间是如此巨大,以至于需要分支来快速修剪它,但 GPU 在这方面很糟糕。现代 CPU 短向量 SIMD 可以很好地解决这个问题,它可以处理 16 到 64 字节的连续数据块。同时仍然与 CPU 内核紧密耦合,它可以在 SIMD 结果上有效地分支,而不会产生任何显着的传输开销。

像 x265 这样的现代编码器可以扩展到至少一百个 CPU 内核,以获得足够高的分辨率。(或者您可以将长视频分割成多个片段,使其真正令人尴尬地平行。)

现代 GPU 具有独立于主要 GPU 执行单元的固定功能视频编码硬件,但我认为它们所能达到的最大质量是有限的。(除非它们可以在 CPU 做出决策但将繁重的数据并行工作卸载到 GPU 的模式下运行,例如运动搜索。)我没有跟上硬件编码的最新发展,但 AFAIK 仍然不可能获得与x265 -preset veryslowCPU相同的质量。

另请参阅https://video.stackexchange.com/questions/14656/why-processor-is-better-for-encoding-than-gpu/14657#14657

GPU 使用 SIMD 模型(单指令多数据),即它们对多数据执行指令。给出一个想法:在 CUDA 技术下,当您获得 if-then-else 条件时,两个分支将在各自的数据上按顺序执行。

在您的问题中,支持 CPU 的条件建议使用 MISD 或 MIMD 模型,即对相同数据或不同数据的不同指令。

因此,要找到一类示例,我们必须执行顺序任务。例如,具有相同初始条件的本质上是连续的 ODE 的解,在这种情况下,我们得到了 SD。并在不同的条件下运行,用不同的方法进行对比研究,这里我们得到了MI。通过这个简单的示例,节点之间的通信很少,因为它们是独立的。

在使用MiniMax 算法玩国际象棋和其他复杂的回合制游戏时,GPU 加速要么不可行,要么仅对几个小问题可行。

国际象棋引擎需要评估大量的走法,以找出最适合 AI 的走法。人工智能如何知道一个位置比另一个位置好?通过使用一个评级函数,该函数应用关于国际象棋中什么是好什么是坏的所有常识,并将其转化为一个数字。所有这些位置评估都可以并行化。简单地计算物质优势(有后总比没有好)是一个简单的国际象棋引擎的开始,但更强大的国际象棋引擎也会考虑战略考虑,比如棋子是否受到威胁或压制、棋盘控制、棋子结构,片开发等。所以这些评级函数会变得非常复杂。这通常使它们不适合在 GPU 上运行。