现代高性能计算使用向量指令,例如 NVIDIA GPU 上的 SIMT 指令(是的,我知道 SIMT 并不完全是 SIMD,但我认为差异不会影响这个问题)。我想知道为什么对向量进行操作比拥有更多内核更好。
具体来说,为什么 GPU 在 32 字向量上运行比拥有 32 倍的内核更好?我自己做了一些猜测,但我想听听那些真正知道他们在说什么的人。
以下是我的猜测:
如果每个核都有一些控制硬件和一些 ALU 硬件,那么一个向量核将在 32 个 ALU 之间共享一个控制硬件块,这增加了用于计算的晶体管总预算的比例。
如果您无论如何都在进行自然矢量化操作,那么多核只会引入矢量指令不会出现的同步问题。
向量中的不同单词彼此相邻,这与不同的内核不同,因此您最终会以 32 字块的形式在内存上加载和操作,这对缓存非常有利。
真正的答案是什么?