向量计算机

向量计算机的特点

特定任务上计算速度快

计算密集 -> IO 密集

昂贵

Seymour Gray设计的机器

是超算的前身

 

向量计算机作用

军事研究。

科学研究。

天气预测。

石油探测。

工业设计。

生物信息。

在七十年代到八十年代还没有超级计算机这一概念,这时候是叫向量计算机

纵轴:时间线

横轴:功能部件

ld:load store

add:

fadd:float add

1976年Gray-1向量计算机的扩展

标量单元

Load/Store结构

向量扩展

向量寄存器。

向量指令。

执行

      硬件控制

高度并行流水

不再使用虚存和数据缓存

交叉存取

Cray-1(1976)结构

存储器-存储器结构 优化为 寄存器-寄存器结构,运算部件所需要的操作数从向量寄存器中读取,运算的中间结果也写到向量寄存器中。(操作数,数值都存储在寄存器中读写)

优点

降低主存储器的流量。寄存器-寄存器结构的Cray

向量计算模型

模型结构

加法计算

对应位置相加。一条指令就可以完成多个数据相加。

存取计算

可以从Memory中各个地方采集数据。可以按照一定的跨步取数据。相当于并行加载数据。

Load相当于收集操作。

Store相当于散列操作。

向量ISA特点

指令紧凑简洁:单指令流多操作(包含程序加工和控制操作)

可表达性好:

        1. N个操作相互独立
        2. 使用相同的功能单元
        3. 以前一个指令相同的方式访问寄存器。(相当于操作复制多份)
        4. 可以访存连续的块。
        5. 以已知方式访存(指定步长load/store)

 

向量ISA硬件特点

      1. 每个指令要求更多工作。
      2. 隐式的程序加工操作
      3. 向量内没有数据依赖。
      4. 不连续的向量元素访存。
      5. 内存访问模式已知。

 

向量运算执行的特点

      1. 使用深度流水执行元素操作
      2. 简化深度流水的控制(因为一个向量内元素是独立的)

多个向量指令可以重叠执行

中间,1个cycle执行24个动作。竖向是时间线。横向是操作

 

链化执行

 

如果没有链,在开始下一个以来的指令是,必须等待结果中的最后一个元素被写入。

有了链化执行,只要写过中第一个元素被写入就可以开始下一个依赖操作。

向量拆解

由于向量寄存器长度限制,通常将一个长度为N的循环并行化,若N远大于向量寄存器长度,不能将每个操作都分配到一个向量寄存器中。

将N个操作拆成多组满足向量寄存器长度的片段

要分别计算每一个片段数据的起始位置。

 

向量条件计算

通常向量化循环中包含条件计算

解决方法

增加一个掩码位。

向量掩码需要初始化

根据条件设置掩码位。

最后写会的时候判断一下掩码位。

向量Scatter和Gather

若想向量化带有间接地址的循环

解决方法

加载rD中数据作为索引存储在vD中。(暂存rD中数据)

根据vD中索引,从rC中间接数据到vC。(直接根据存储的rD数据作为索引,加载rC数据到vC)

加载rB到vB

做加法

存储结果

 

若B中所有元素都是0,vA中收集到的数据全是A0,最终收集的时候会出错。

 

 

 

 

posted @   Laplace蒜子  阅读(164)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2022-05-09 Redis主从服务器
点击右上角即可分享
微信分享提示