首页 > 其他分享 >针对粗粒度架构的粗粒度调研

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

时间:2024-11-23 15:23:40浏览次数:7  
标签:粗粒度 control 架构 FPGA flow CGRA nested loop 调研

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 ↩︎

标签:粗粒度,control,架构,FPGA,flow,CGRA,nested,loop,调研
From: https://www.cnblogs.com/devil-sx/p/18564476

相关文章

  • Hardware/Software Co-Exploration of Neural Architectures——神经架构的硬件/软件
    在一些研究工作中,探索实践与硬件平台端协同探索的方式来指导神经网络模型的结构设计优化,本文是对《Hardware/SoftwareCo-ExplorationofNeuralArchitectures》论文的阅读学习整体的论文阅读笔记,感兴趣的话可以参考下,如果想要进一步了解工作内容详情,建议移步阅读原英文论文,地......
  • 企业OA管理系统:Spring Boot技术架构与应用
    3系统分析3.1可行性分析通过对本企业OA管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。3.1.1技术可行性本企业OA管理系统采用SSM框架,JAVA作为开发语言,是基于WEB平台的B/S架构......
  • Oracle JDK 和 OpenJDK 的对比 思维导图 代码示例(java 架构)
    OracleJDK和OpenJDK的对比OracleJDK和OpenJDK是两个广泛使用的Java开发工具包,它们有很多相似之处,但也存在一些差异。以下是它们的主要区别:1.许可证OracleJDK:商业许可证。免费用于开发和测试,但在生产环境中使用需要购买商业许可证。OpenJDK:开源许可......
  • QtCreator通过CMake多文件编译.cpp、.qss、.h、.ui文件,达到MVC三层架构的效果
        博主在构建C++项目的时候,一般都喜欢将头文件和源文件分开为不同的文件夹,比如include目录下只存放.h文件和.ui文件,src目录下只存放.cpp和.qss文件,res目录下只存放图片、音频等文件,这时候使用CMake对项目进行分文件管理就特别方便和清晰了。  很多人写qt项目的......
  • 架构设计(17)大数据框架Hadoop与基础架构CDH
    HadoopHadoop是一个开源的大数据处理框架,由Apache软件基金会开发。它主要用于存储和处理大规模数据集,能够在分布式计算环境中有效工作。以下是Hadoop的详细介绍,包括其核心组件、架构、特性和应用场景。1.Hadoop的架构Hadoop的架构分为两个主要部分:Hadoop分布式文件系......
  • 为什么 Spring Boot 的微服务架构被称为“现代应用开发的曙光”?这种设计真的解决了传
    目录1.微服务架构为何被称为“现代应用开发的曙光”1.1单体架构的问题1.2微服务架构的诞生与发展1.3微服务架构的挑战2.SpringBoot在微服务中的角色2.1自动化配置与微服务开发2.2SpringCloud生态中的微服务3.微服务架构是否真的解决了传统单体架构中的所......
  • AI模型架构如(CNN)、(RNN)(LSTM、GRU)、(如BERT、GPT等)在不同领域中的具体应用
    AI模型架构如卷积神经网络(CNN)、循环神经网络(RNN)及其变体(如LSTM、GRU)、以及基于Transformer架构的模型(如BERT、GPT等)在现实生活中有广泛的应用。以下是这些模型在不同领域中的具体应用和形态表现:一、卷积神经网络(CNN)1.图像分类应用案例:手机中的人脸识别、社交媒体中的自......
  • 手把手教你学PCIE(3.1)--PCIe 架构的系统架构图解
    目录PCIe架构的系统架构图解1.PCIe系统架构图2.主要组件及其功能2.1RootComplex(RC)2.2Switch(SW)2.3Endpoint(EP)3.链路(Link)4.配置空间(ConfigurationSpace)5.基地址寄存器(BaseAddressRegister,BAR)6.中断机制7.地址映射8.事务层包(T......
  • 双碳目标下储能产业新趋势与架构
    0.引言储能技术涉及能量的存储和利用,对电力系统平衡至关重要。它允许电力在需求时被储存和释放,对电力生产和消费方式产生重大影响。随着全球应对气候变化,风能和太阳能成为主要能源,但其不稳定性需要储能技术来提高可靠性。储能技术不仅对可再生能源并网至关重要,也是分布式能源......
  • Linux使用nc(netcat)命令检测网络端口是否畅通以及Linux查看CPU架构命令arch及CentOS
    一、Linux使用nc(netcat)命令检测网络端口是否畅通    nc命令netcat的简写,netcat即是网络猫的意思,在linux系统中nc命令实际执行命令是ncat。nc命令是一个功能强大的网络工具。平常主要用于实现TCP/UDP端口的侦听和收发,nc可作为server以TCP或UDP方式侦听指定端口,也可作为cl......