针对粗粒度架构的粗粒度调研

news/2025/2/27 2:05:40/文章来源:https://www.cnblogs.com/devil-sx/p/18564476

Big Picture

Reconfigurable: CGRA vs FPGA

RipTide

从架构来看 CGRA(Coarse-Grained Reconfigurable Architecture) 和 FPGA 非常类似,Memory、PE 以及 NoC 片上网络。调研反馈实际二者边界也是逐渐模糊:

硬件 CGRA FPGA
PE 粒度 Arithemtic Logic(LE), Arithemtic(Logic Element), Core(PS)
重构程序 软件语言 硬件语言(RTL), 软件语言(HLS)

从粒度和重构程序上,FPGA 对 CGRA 是全覆盖,或者说 FPGA = CGRA + PL,CGRA 是缩小了应用领域的 FPGA,放弃了 RTL level 专注于软件语言。从这个层面来说 CGRA 的比较对象应是 CPU 或是 GPU,而方法论和 FPGA 重叠。

缩小到底能够带来多大的提升?这个问题不太好回答,CGRA 的 application domain 还是太大了,日后可选取一个具体领域切入。

Tool Flow

CGRA-ME

选取 CGRA-ME 的 flow [1]

输入文件

  • Application: 描述软件,一般是 C / 汇编
  • CGRA Arch Description:描述硬件,包含架构组成和参数,只有 CGRA 和 Morpher [2] 支持更改组成
  • Constraints: 描述 Mapping 过程的限制,但是我在 CGRA-ME 2.0 的代码中没找到这部分的对应实现

输出文件

  • RTL
  • Application Bitstream:描述 Mapping 后的结果

流程图上可见,mapper 的结果不影响 RTL 生成,RTL 只受 Arch Description 影响。类似 FPGA tool chain 将整个 flow 泛化了,如果是固定某种型号的 CGRA 可以将这一条路砍掉剩下的只作为 compiler 使用。

Application 一般会按照一个公认的 benchmark 评估结果,常见的 benchmark 包含 FFT、conv 、ADPCM coder/decoder 等。

Graph-based Accelerator

Application 会经过编译转为 DFG,可以说 CGRA 是 spatial-computing 的 DFG-processor。近期 AI 领域 graph processor 以及 dataflow accelerator 重新进入视线 [3],dataflow 和 graph processor 之间没有必然联系,CGRA 既有 dynamic scheduling 也有 static scheduling 方法。

Reconfigurable Mapping 经典问题

由于 mapping 的搜索空间非常大,调研感觉 CGRA 领域研究核心在于 mapping 方法,这么说方法论和编译器领域更接近了。这里挑循环和 control flow这俩个经典问题展开太编译器了

Loop in CGRA

Loop 由 loop bound 和 loop body 组成,如果包含多个 loop 循环叫做嵌套循环(nested loop)。根据循环各个部分的性质可以进一步细分:

  • Loop bounds
    • Irregular inner loop : 边界是动态的
    • Affine inner loop : 可以用放射变换表示边界,如之前 blog 多面体模型表示介绍[4]
  • Loop Body 和循环的位置
    • Imperfectly nested loop : 在 nested loop 之间还有 loop body
    • Perfectly nested loop:在 nested loop 之间没有 loop body
  • Loop Body 多个语句之间的关系
    • Doall loop: loop body 内部数据和其余循环无关,比如循环体内 a[i] 的值不依赖 a[i-1]
    • Doacross loop: 有关

依次分类,timeloop 针对 MAC 的循环建模属于 affine inner + prefectly nested + doall loop,非常简单的特例。怪不得编译器领域的对于 loop 的工作这么多,而 DNN 只需要一篇 timeloop 就基本理清了。反过来也说明如果要进一步发挥 CGRA 的性能,就得增大通过涵盖更多算子增加软件复杂度。

CGRA 里处理 loop 的常用方法是 module scheduling[5],核心在于根据硬件规格和算法依赖调整循环之间的间隔时间(II, initiation interval),具体来说,先求解间隔的边界值,再通过某种方法在剩余空间里搜索。边界值是求解 MII(minimum initiation interval),通过取硬件资源的 ResMII 和软件依赖的 RecMII 的最大值得到,ResMII 好求,而 RecMII 要解析图就更加麻烦了,常见包括 Enumeration、Shortest Path、Path Algebra 等算法[6]

Control Flow

分支预测一种逻辑便是和 CPU 一样基于 prediction 方法,而 CGRA 执行这种方法的性能优势劣势还需要进一步分析。

因为 CGRA 属于 sptial computing,可以采用与 VLIW brach splitting 类似方法将不同分支映射到空间上。这么做分支逻辑就进一步映射到路由单元上,路由逻辑常常涉及到 \(\phi\) function,在编译器里常用的 permitive。RipTide[7] 提及这种方式会损失能耗,而采用 \(\phi^{-1}\) 的 steering control 更加节能,这二者似乎又和 control flow、dataflow 有一定的耦合关系,待后续调研。

前几年 DNN 模型的大都都是 determinstic model,没有什么 control flow,不过近期新模型确实可能有研究 control flow 的空间,比如复杂残差连接的数据依赖、MoE 的专家选择、LLM decodeing phase 的 speculation ,但 AI 面临问题在于数据量太大了,基本不可能完整映射到硬件上,限制了 spatial computing control flow 的空间,更多还是在 memory 上面,找到一个合适的切入点得好好思考。


  1. CGRA-ME 2.0: A Research Framework for Next-Generation CGRA Architectures and CAD ↩︎

  2. Morpher: An Open-Source Integrated Compilation and Simulation Framework for CGRA ↩︎

  3. 可见从前 blog 《从 GPU 到 SambaNova,spatial computing 的数据流解决方案》,但当时没有分清 graph accelerator 和 data flow 之间的关系 https://www.cnblogs.com/devil-sx/p/18476553 ↩︎

  4. Polyhedral Model: DNN Nested Loop 的实现模型 https://www.cnblogs.com/devil-sx/p/18209577 ↩︎

  5. DRESC: a retargetable compiler for coarse-grained reconfigurable architectures ↩︎

  6. 可重构计算,魏少军,刘雷波,尹首一 ↩︎

  7. A programmable, energy-minimal dataflow compiler and architecture ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/839882.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为复合函数和反函数做好准备

1. 移动的功能 https://www.desmos.com/calculator?lang=zh-CN

『玩转Streamlit』--布局与容器组件

在Streamlit中,布局类组件扮演着至关重要的角色。 它们不仅决定了应用程序的视觉呈现和用户体验,也极大地增强了页面内容的组织性和可读性。 通过这些组件,开发者可以灵活地划分页面空间,创建出清晰、有条理的布局结构。 本篇主要介绍3种构建Streamlit App时常用的3种布局类…

vue3 el-table控制列显示隐藏

TableControl.vue<!-- 表格列显示隐藏控制*** 根节点为el-table,会穿透接收组件所有属性1、通过slots接收表格列,生成勾选项2、从缓存中读取数据,匹配勾选项;3、双向绑定,勾选项。表格列使用v-if判断显示隐藏; --> <template><el-table><template v-f…

台电固态硬盘维修数据恢复

针对台电固态硬盘的维修与数据恢复问题,以下是一些建议和方法: 数据恢复 回收站恢复:如果是在电脑操作时不慎将固态硬盘里面的文件误删,且文件被删除后未进行大量写入操作(以免数据被覆盖),可以尝试通过电脑的“回收站”进行文件还原。打开桌面上的“回收站”,在里面找…

VMware 安装ubuntu 挂载共享目录

开机界面点击虚拟机“重新安装vmtools” 修改root密码sudo passwd root关闭防火墙ufw disable安装ssh sudo apt-get install openssh-server创建目录sudo mkdir /mnt/hgfs输入以下命令,如果输出了我们一开始创建的共享文件夹,那就代表你上面的设置正确了vmware-hgfsclient挂载…

js逆向实战之某二手平台请求参数加密逻辑

声明:本篇文章仅用于知识分享,不得用于其他用途 网址:https://www.goofish.com/ 加密逻辑随便点击一个模块,看触发的数据包。再选择一个模块,看哪些参数会变化。比较一下得知t和sign的值会变化。请求数据中的machId是根据所选模块变化的。 主要关注sign的加密逻辑,搜索请…

六步取消win11开机密码

0.前言 新买的电脑打开后首先要进行一系列的操作激活操作系统。在这些操作中最令人讨厌的是设置开机密码(pin)。 也许有很多人的电脑需要保密,限制别人登录,这时使用登录pin是很有必要的。而还有很多人跟我的情况差不多,台式电脑在家里使用,没有什么保密的内容。设置了开…

服务器搭建latex(overleaf)

1.领取免费服务器,推荐免费服务器(SanFengYun)见下图。2.安装宝塔面板,配置内网为127.0.0.1,访问外网地址。 3.可以在宝塔面板一键部署网站,输入自己的域名即可。 4.关键:安装docker,安装yum,设置github可以访问。 5.更换docker镜像,自带镜像无法访问 6.按照overleaf…

基于Java+SpringBoot+Mysql在线简单拍卖竞价拍卖竞拍系统功能设计与实现三

超级管理员:系统管理、用户管理、拍卖者管理、拍卖商品管理等。 普通用户:注册登录、个人信息管理(个人资料、密码修改等)、竞价管理、评价等。 企业用户:注册登录、发布竞拍、竞拍管理等。 运行环境:windows/Linux均可、jdk1.8、mysql5.7、redis3.0、idea/eclipse均可。…

hhdb数据库介绍(8-3)

部署 自动部署 实现免密登录说明 免密登录需要在两台服务器之间建立免密通道,具体操作如下: 以192.168.190.186与192.168.190.187实现免密连接为例 1.在192.168.190.186的服务器上执行ssh-keygen,连续按3次回车,完成生成公钥和私钥,其中id_rsa为私钥,id_rsa_pub为公钥,到/…

AO3401A-ASEMI中低压P沟道MOS管AO3401A

AO3401A-ASEMI中低压P沟道MOS管AO3401A编辑:ll AO3401A-ASEMI中低压P沟道MOS管AO3401A 型号:AO3401A 品牌:ASEMI 封装:SOT-23 最大漏源电流:-4.2A 漏源击穿电压:-30V 批号:最新 RDS(ON)Max:0.06Ω 引脚数量:3 沟道类型:P沟道MOS管 芯片尺寸:MIL 漏电流: 恢复时间…

前端技术中对JavaScript的学习

JavaScript简历目录JavaScript简历JavaScript 是脚本语言ECMAScript 版本作用:JavaScript:直接写入 HTML 输出流JavaScript:对事件的反应JavaScript:改变 HTML 内容JavaScript:改变 HTML 图像 JavaScript 是脚本语言 JavaScript 是一种轻量级的编程语言。 JavaScript 是可…