Apple 芯片上的 SIMD、并行和 GPU 计算

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

考虑一个 n x m 的浮点数矩阵,比如 A={a_{ij}},其中 n 和 m 非常大。我想计算一个 n x n 对称矩阵,比如 B={b_{ij}},其通用条目 b_{ij}=\sum_{k=1}^{m} a_{ik}*a_{jk}/m,对于所有我

我正在使用这个虚拟问题来了解 Apple 芯片架构。我特别想知道

  1. 这将是 Apple 芯片上最快的实现,比如说 M3?

  2. 每个b_{ij}的计算彼此独立并且可以并行进行。哪种计算范式更适合这种情况(CPU 上的并行化还是 GPU 上的并行化)?

  3. 每个b_{ij}的计算可以使用SIMD进行。 SIMD 单元显然可以在 Apple 芯片上使用(即使不清楚它们是什么?也许是神经单元?)这些指令在 CPU 或 GPU 上并行计算时是否可用?

我目前没有尝试任何事情。在继续之前,我试图了解我应该使用哪种实施策略。

parallel-processing simd apple-silicon
1个回答
0
投票

看起来你想计算一个传统的矩阵*矩阵乘积,输入上具有相同的矩阵,然后除以标量常数?

我从未为现代苹果硬件开发过东西,但我希望金属计算(即 GPGPU)是最快的可用方法。 AFAIK 他们的 NPU 无法达到 FP32 精度,而且他们的 CPU SIMD 可能比 GPU 慢得多。

具体算法,大稠密矩阵相乘的搜索关键词是“平铺矩阵乘法”。 这是 Direct3D 11 计算着色器中的示例

因为您将矩阵与其自身相乘,所以不需要计算所有图块。您只需要对角线一侧的瓷砖,包括直接位于对角线上的瓷砖。乘法完成后,调度另一个(更便宜的)计算着色器来跨对角线转置图块。

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