有人可以解释一下向量和数组处理器之间的区别,这是在学习并行编程所涉及的计算机体系结构时遇到的吗?
我提到的一个来源 告诉矢量处理器也称为数组处理器。这有点令人困惑。先感谢您!
有人可以解释一下向量和数组处理器之间的区别,这是在学习并行编程所涉及的计算机体系结构时遇到的吗?
我提到的一个来源 告诉矢量处理器也称为数组处理器。这有点令人困惑。先感谢您!
参见 RH Perrott 和 A Zarea-Aliabadi 的“超级计算机语言”,ACM Computing Surveys,第 18 卷,第 1 期,1986 年 3 月,第 7-8 页。
有些人将矢量处理器视为 SIMD 计算机,有些则不认为。如果向量处理器是 SIMD 计算机,它们是流水线 SIMD,而阵列处理器是同步 SIMD。
问:有人可以……解释一下向量和数组处理器之间的区别……吗?
是的。没有。_
数组只是人类的抽象。普通计算机“看到”向量(其物理地址空间的弱组织部分,被认为是一个连续的“块”空间,向量的逐个单元数据驻留并存储到其中并从中获取)(这是昂贵的,截至2020/Q1 一些 CPU 可能会享受一些 SIMD 指令的技巧,以便在其硬件 SIMD 特定块(一些数据单元的向量,当前不超过 AVX-512 512 位块)中立即将数据移入/移出内存,所以最多有 8 个float64
-s 或 16 个float32
-s 等等 ) ) )。
所以数据“表示”是基于代码的,而不是基于硬件的。数组,更广义的张量,按照惯例被存储在线性寻址的内存中——要么是:
-ortranF
约定(行在前,第一个索引变化最快),或
一种C
语言约定(列在前,最后一个索引变化最快)
所以所有这些一个接一个对齐的向量拼接,作为一个弱的,代码控制的向量序列(每个向量只是一个弱代码控制的直接可寻址存储器中的数据单元的连续线性序列)
(这里不是故意谈论稀疏- {vector|array|tensor} - 表示格式,其中非零元素的寻址约定(为了节省内存(以损失访问速度和缓存线为代价)效率低下)由于稀疏的性质,经常使用间接寻址技巧)可能会非常疯狂地在这里简单地触摸它们)
如果需要,可以设计 SoC 和 FPGA 设备,以便为硬件支持的 {matrix|tensor} 处理加倍努力,但所有这些都需要额外的成本- 人类发明 + 聪明和节能的硅级此类处理器的矩阵微控制器的设计还具有极大增加的数据 I/O 片上 + 片外带宽,这是相当大的 ( O(N 2 )尺寸)和快速矩阵处理相当昂贵,因此即使是这些最终利基用例方法也不要指望任何神奇的魔力,其中相当有限,几乎类似于 ASIC 的产品市场规模限制了这种增加的成本调整(消费电子市场不寻求这些,而 MIL/R&D/FinTech/其他特殊领域可以为这种极端的非 COTS 解决方案买单)。