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