论文精读-CHARM Composing Heterogeneous AcceleRators for MatrixMultiply on Versal ACAP Architecture

【文献阅读】A Survey on Hardware Accelerators for Large Language Models ReTransformer是一种基于RRAM的内存内架构,用于加速Transformer,它不仅利用基于RRAM的内存内架构加速Transformer的缩放点积注意力,还通过使用所提出的矩阵分解技术避免写入中间结果,从而消除了一些数据依赖。所提出的方法构建了一个推理成本模型,该模型考虑了闪存的特性,用于在两个关键领域进行优化:减少从闪存传输的数据量,并以更大、更连续的块读取数据。与基于卷积神经网络(CNN)的模型相比,所提出的混合模型在不降低精度的情况下,将参数数量减少了94.6%。 阅读详情

论文精读-CHARM: Composing Heterogeneous AcceleRators for Matrix Multiply on Versal ACAP Architecture

优点:

1、使用较小尺寸的acc来减少小型mm(矩阵乘法)机的浪费,使用较大尺寸的acc来最大限度地提高大型mm机的数据重用。(填充是在大型加速器上实现小型MM操作的一种常见而简单的方法,但填充既会浪费计算量,也会浪费带宽。)小acc意味着更少的数据重用。

2、通过协同优化工作负载和资源分区,仔细重叠这些acc的执行时间

3、设计空间探索(DSE),自动CHARM DSE(CDSE),基于排序的两步搜索算法CDAC,以多项式时间复杂度而不是指数时间复杂度找到优化的CHARM设计。(为了在多个访问上映射不同大小的MM内核时实现整体最优吞吐量。)

4、使用自动代码(PL,AIE,CPU)生成

5、在主机CPU中启动CHARM运行时系统(CRTS),该系统将不同的内核调度到访问(因为多acc计算,需要内核调度),以优化任务延迟和总体系统吞吐量。

概述

密集矩阵乘法(Dense matrix multiply, MM)是深度学习应用中使用最多的核函数之一。为了应对这些应用的高计算需求,具有FPGA和专用ASIC加速器的异构架构已经成为有前途的平台。例如,AMD/赛灵思通用ACAP架构结合了通用CPU内核和可编程逻辑,以及针对AI/ML优化的AI Engine处理器。由400个AI Engine处理器组成的阵列以1ghz的频率运行,可为32位浮点(fp32)数据提供高达6.4 TFLOPs的性能。然而,机器学习模型通常同时包含大型和小型MM操作。 大型MM操作可以跨多个核心高效并行化,但小型MM操作通常不能。 我们观察到,在通用ACAP中的大型单片MM加速器上执行来自BERT自然语言处理模型的一些小MM层,获得的性能不到理论峰值的5%。因此,一个关键问题出现了:我们如何设计加速器,以充分利用有限通信带宽下的丰富计算资源,用于具有多个不同大小MM层的端到端应用?

我们确定了由于单个单片加速器的大量计算资源与应用中各种小尺寸MM层的不匹配而导致的最大系统吞吐量瓶颈。为了解决这个问题,我们提出了CHARM框架来组合多个不同的MM加速器体系结构,在一个应用程序中并发地针对不同的层工作。CHARM包括指导设计空间探索的分析模型,以确定加速器分区和层调度。为了方便系统设计,CHARM自动生成代码,从而实现彻底的板载设计验证。我们在四种不同的深度学习上部署了CHARM框架应用程序,包括BERT, ViT, NCF, MLP,在AMD/赛灵思通用ACAPVCK190评估板。实验表明,我们在BERT、ViT、NCF、MLP上分别实现了1.46 TFLOPs、1.61 TFLOPs、1.74 TFLOPs和2.94 TFLOPs的推理吞吐量,与单片加速器相比,分别获得了5.29倍、32.51倍、1.00倍和1.00倍的吞吐量增益。

背景介绍

密集矩阵乘法(MM)是许多深度学习工作负载中最常用的内核之一,包括用于自然语言处理的BERT[1],用于推荐的NCF[2],用于视觉分类的ViT[3],以及用于多层感知器分类或回归的MLP[4]。根据谷歌[5]的分析结果,2017年谷歌数据中心密集矩阵乘任务占据了90%的神经网络(NN)推理工作量。这些应用的日益复杂导致了对计算和数据移动的极端需求。

image-20240503234957820

片外带宽一直是系统性能和能效的瓶颈,当前平台上的一个共同趋势是片外带宽的扩展速度不如计算资源的扩展速度
快。因此,第一个研究问题出现了:如何在扩展较慢的片外带宽下维持更快的扩展计算?

常见的解决方案是通过在加速器(acc)内分配更多的片上存储来增加数据重用。如[9]中的渐近分析所示,MM中的总片外通信体积尺度为O(√1),其中M为片上瓦片大小。如果我们增加M贴片大小,我们可以减少总通信量,从而减少片外带宽的压力。

在这项工作中,我们的目标是AMD/赛灵思通用ACAP架构[10],它将通用CPU内核和可编程逻辑(PL)与针对AI/ML计算优化的AI引擎处理器(AIE)相结合。例如,我们在AMD/赛灵思VCK190板上使用384个ae和超过80%的片上URAM和BRAM资源实现了MM加速器。图1中的红线说明了该加速器的性能。该设计在原生平铺大小为1536×128×1024的情况下运行,在携带大型方形MM(点a)的平铺执行时实现2.8TFLOPs吞吐量。然而,当简单地将不同大小的MM映射到这样的设计时,随着方形MM大小降至512以下,性能显著下降,因为每个贴片都被填充到加速器的原生贴片大小。例如,在B点,这样的单片设计的性能达到0.41 GFLOPs,比a点低6880倍。虽然填充是在大型加速器上实现小型MM操作的一种常见而简单的方法,但填充既会浪费计算量,也会浪费带宽。

填充的另一种替代方法是实现具有较小原生贴图大小的多个加速器,可以在每个加速器上并行执行不同的任务[11]。我们使用8个独立的加速器来应用这种方法,它们的原生贴图大小为256×128×256,如图1中的蓝色虚线所示。对于大小为64的小正方形MM操作,该方法在C点实现7.2 GFLOPS,与B点相比大约加快了17倍。然而,较小的加速器尺寸也意味着更少的数据重用用于大型MM,当可以参考表5时,操作规模大于256。当MM尺寸为3072 (D点)时,在一个单片设计中,8个重复accs的总吞吐量比A点小4.08倍。

这些实验暴露了两个相互冲突的设计目标。
1、我们希望实现具有足够数据重用的大型MM操作,以在设备上实现尽可能高的性能。
2、我们希望实现小型MM操作,同时最小化计算和通信开销。
这两种简单的设计似乎都无法同时实现这些设计目标。

因此,第二个研究问题就出现了:对于大小尺寸的MM层共存的现实世界端到端应用,如何在这两个设计目标之间进行权衡?

为了说明这些相互冲突的设计目标如何影响实际机器学习模型的性能,我们将BERT[1]视为包含大小MM层的代表性工作负载。在BERT的一个变压器层中,共有8种MM核,其中核0-5为大mm机,核6和7为批点,即小mm机。详细的形状如图2所示。

总吞吐量几乎饱和。以内核5和内核6为例,内核5是一个形状为3072×1024×4096的MM,内核6是一个形状为96×512×512×64的批处理点,这意味着有96个大小为512×512×64的小型独立mm机。

如图2所示,当使用一个单片MM加速器时,内核0-5消耗了总BERT MM计算操作的92%和总MM计算时间的12%。相比之下,内核6-7只消耗了总操作的8%,却占用了总调度时间的88%。对于内核0-5,它们位于区域A(一个执行类似于图1中的点A的区域),其中acc的吞吐量大于2082 GFLOPS。对于内核6-7,它们位于区域B,其中acc的吞吐量仅为23.6 GFLOPS。考虑到在时间轴中有很大一部分acc执行未被充分利用,总体MMacc吞吐量仅为276 GFLOPS。我们能否实现位于a区域的BERT设计,即适合大型mm机,并且也优于C点的区域,即适合小型mm机,具有较少或没有浪费的计算/带宽?

我们的答案是“可以”。关键思想是将更多的资源分配给专用于计算较大mm的访问,并将较小的资源分配给同时计算较小mm的其他访问,如图2所示,其中展示了一个两种不同的访问系统。为了实现我们的设计目标,我们需要解决这些新的挑战。
1、首先,我们需要实现每个单个acc的高计算利用率,即使用较小的acc来减少小型mm机的浪费,使用较大的acc来最大限度地提高大型mm机的数据重用。(使用小acc,1.减少额外的计算量2.减少带宽消耗)
2、其次,为了在保持高吞吐量和低延迟的同时最大限度地提高整体利用率,我们需要通过协同优化工作负载和资源分区来仔细重叠这些acc的执行时间。
3、第三,为了便于设计空间探索(DSE),我们需要分析模型来优化资源和带宽约束下的整体吞吐量。
4、第四,为了减少系统实现的编程工作量,我们需要自动代码生成。
5、第五,当运行多个acc时,为了解决应用程序图中内核的依赖性,我们需要一个加速器运行时来将来自不同任务的内核调度到acc上。
image-20240503235847100

前人工作

image-20240504000059852

总结了我们的工作与之前工作的差异。我们的工作能够从一个单片、多个副本和多个不同的加速器中选择设计,并且每个加速器都是考虑到我们的DSE所涵盖的不同工作负载分配、数据流和数据并行策略的专门设计。

乘法加速器设计

ACAP架构

image-20240503235943322
包括传统的通用处理器系统PS(processor system)和可编程逻辑PL(programmable logic)和计算单元AIE(类似GPU),所以说ACAP是一个异构系统

AIE内存模型

每个AIE处理器包含32kb的数据,并且能够在四个方向上(AIE↔邻居AIE)与相邻的AIE共享数据。除了与相邻块共享本地内存外,每个AIE块还连接到一个轴流(AXIS)交换网络,这使得AIE处理器之间的非本地通信(AIE↔非本地)和通过39个接口块中的plio与PL通信(PL↔AIEs)成为可能。VCK190单板在PL和AIEs之间提供1.2 TB/s(PL↔AIEs) / 0.9 TB/s (AIEs)↔PL的带宽,是DDR4和PL之间带宽的46倍。AXIS交换机支持端口之间的电路交换和包交换连接。电路交换连接提供专用的、确定的通信,并支持广播,其中来自单个输入通道的数据同时传输到多个输出通道。分组交换连接允许来自输入通道的数据根据每个数据包开始时的目的地报头动态路由到不同的目的地。这使得数据流可以在单个路由路径上进行时间复用。当AIE的计算-通信(CTC,计算到通信)比率大于1时,我们可以使用分组交换连接。在计算AIE 0的过程中,分配给这个AIE的端口是空闲的,因此可以通过分配一个与AIE 1的目的ID匹配的不同的报头来将数据传输到另一个AIE,比如AIE1。
(分组交换可以看为是另一种的pingpong)

加速器设计

矩阵分块

image-20240504000254091

清单1描述了基本密集矩阵-矩阵乘法的整体四层平铺和映射策略。最内层的循环平铺(第16-20行)在单个AIE核心上实现MM,并通过发出完全流水线的2D-SIMD(向量矩阵乘法)指令来利用指令级并行性和数据级并行性。每个AIE存储一个(TI×TK)LHS和一个(TK×TJ) RHS矩阵,并在其本地内存中计算一个(TI×TJ)输出矩阵。最内层的第二个循环块(行12-14)表示AIE数组中不同AIE内核之间执行的空间分布。这些循环完全展开,并以并行方式在(A×B×C) AIE内核上进行计算。空间分布也对应于所需的IOs数量,这将在4.2节中讨论。第三个最内层时间循环图(行7-9)表示存储在PL片上存储器中的数据的顺序处理。片上PL缓冲区中的数据被多次输入AIE数组

AI芯片:高性能卷积计算中的数据复用 随着深度学习的飞速发展,对处理器的性能要求也变得越来越高,随之涌现出了很多针对神经网络加速设计的AI芯片。卷积计算是神经网络中最重要的一类计算,本文分析了高性能卷积计算中的数据复用,这是AI芯片设计中需要优化的重点之一,具体思路如下:1.数据复用的动机2.存储-计算分离框架下,针对卷积计算的优化思路3.针对卷积计算的硬件架构设计分析4.已经面临的挑战和解决方向5.神经网络中数据复用的未来。 阅读详情

相关推荐

13、稀疏CNN加速器的最新进展与原位解压卷积加速器设计

本文详细介绍了稀疏CNN加速器的最新进展,重点分析了内积法、外积法和按行乘积法三种矩阵乘法架构的特点及代表性加速器设计。同时,深入阐述了一种用于稀疏输入特征图原位解压和卷积的CNN加速器设计方案,涵盖硬件架构、优化技术以及基于Xilinx ZCU106 FPGA的实现与评估。该设计通过高效的稀疏性利用、多精度支持和多种性能优化技术,实现了在资源受限平台上的高性能与高能效。文章最后对比了不同架构的优劣,并展望了未来可能的发展方向。

emacs5lisp的博客 110

基于 Sodor 的矩阵乘法加速器设计之C++

基于 Sodor 的矩阵乘法加速器设计之C++

机器学习深度学习业余选手 429

NxN矩阵乘法加速器的Chisel3设计与实现

回顾整个设计流程,我们经历了从算法分析到架构选择,再到具体实现的完整闭环。Chisel3作为新一代硬件构建语言,确实为我们提供了前所未有的生产力提升。它不仅仅是一门工具,更代表着一种全新的设计哲学——用软件工程的方法做硬件开发。未来的发展方向也很明确:- 更智能的自动化工具链,能够自动探索帕累托前沿- 动态可重构架构,适应多样化的AI workload- 存算一体技术,从根本上打破冯·诺依曼瓶颈这条路还很长,但每一步都充满惊喜。

weixin_33068055的博客 961

il2cpp分析-gobal-metadata.dat解密

打开ida,把libil2cpp拖到ida中按快捷键Shift+F12等待字符串分析完后,搜索global-metadata.dat。ida中双击sub_57EE7C进入,VS code中也跳转到LoadMetadataFile函数。VSCode打开il2cpp源代码,全局搜索global-metadata.dat。工具:010Editor,IDA 7.5,Jadx,VS Code。判断加密逻辑为根据文件的长度循环读取字节码做亦或加密。双击搜索出来的结果,切记要选il2cpp目录下的。

Android_machong的博客 8013

Infineon MOSFET开关损耗计算实战指南

本文是英飞凌MOSFET开关损耗计算的实战指南。针对MOSFET发热问题,文章深入剖析了开关损耗的产生机理,并基于Infineon数据手册的关键参数,手把手推导了开通与关断损耗的工程计算公式。同时,指南强调了栅极电阻、寄生参数等实际因素对损耗的影响,并提供了从理论计算到实测优化的完整路径,帮助工程师精准评估与优化电源设计。

weixin_29212867的博客 435

汉字跨越三千年的生命力与数字时代适应性

文字作为文明载体,其演变规律始终遵循实用性与适应性的平衡。汉字作为现存最古老的文字系统,凭借形义结合的六书构造原理,实现了超方言的文化统一功能。在计算机处理方面,五笔输入法与Unicode支持证明了其技术兼容性,而视觉识别效率的先天优势使其在信息时代更具传播效力。从甲骨文识别AI到现代书法设计,汉字系统持续展现强大的文化承载力与技术适应性,这种活态传承为数字人文研究提供了独特样本。

weixin_29058331的博客 346

如何将 Fiori Elements Object Page Header 工具栏里按钮用 JavaScript 代码设置成禁用状态

本文介绍了如何在SAP Fiori Elements应用中动态控制Object Page工具栏按钮的可用状态。通过UI5 Inspector工具分析发现,这些按钮的enabled属性都双向绑定到/ui/enabled模型字段。在StatusExt.controller.js中,通过获取按钮ID前缀拼接完整控件ID,使用setEnabled(false)方法即可禁用按钮。关键点包括:1)使用extensionAPI获取视图ID前缀;2)注意事件回调中的this上下文绑定;3)通过修改模型字段可同步更新所有绑定

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 356

『Apisix进阶(九)』基于Upstream实现服务转发的最佳实践

本篇文章将以服务转发为核心,带你从原理到实战,深入了解 Upstream 的配置方法与常用场景。

老陈聊架构 1501

大数据领域数据产品的团队激励与绩效管理

在大数据领域,数据产品的成功离不开高效协作的团队。团队激励与绩效管理的目的在于激发团队成员的工作热情和创造力,提高工作效率和质量,确保数据产品能够按时、高质量地交付。本文章的范围涵盖了大数据领域数据产品团队激励与绩效管理的各个方面,包括激励机制的设计、绩效评估的方法、团队沟通与协作等。本文将按照以下结构进行阐述:首先介绍核心概念与联系,明确相关概念的定义和相互关系;接着讲解核心算法原理和具体操作步骤,为团队激励与绩效管理提供理论支持和实践指导;然后分析数学模型和公式,帮助读者深入理解绩效评估的原理;

Java大师兄的博客 1014

解答网友疑问:聊聊 SAP MRP 中追溯需求的技术实现

笔者到 SE37 里一查,果然有这个 Function Module,并且在里面设置断点之后,执行事务码 MD09 之后,设置在该 Function Module 内的断点也触发了,看来 ChatGPT 比较靠谱。因为红色区域的显示,是通过用户在 MD09 的 ALV 界面上双击触发的,因此我们直奔用户输入模块,PROCESS AFTER INPUT,在 check_fcode 的实现体内设置断点。通过这种追溯,企业可以了解需求和供应之间的关系,从而优化生产和采购计划,减少库存积压,提升供应链效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1020

【DaVinci Developer专题】-8-创建一个枚举Enum ADT(Application Data Type)

目录 1 创建一个枚举Value ADT(Application Data Type) 1.1 命名application data type 1.2 创建一个computation method计算方法属性 1.3 创建一个Contraint约束条件属性 2 创建了一个新的Type Mapping Sets 3 创建了一个S/R Port Interface 4 SWC引用Type Mapping set 5 导入CFG生成代码的总结 6 结尾 <--返回「实战篇」博文-总目录-

「汽车电子助手」的博客 2287

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: 论文精读-ViA A Novel Vision-Transformer AcceleratorBased on FPGA
下一篇: 论文精读-ReTransformer ReRAM-based Processing-in-MemoryArchitecture for Transformer Acceleration
看不见的罗辑
看不见的罗辑 新星创作者: 大数据技术领域 新星创作者: 大数据技术领域
博客等级 码龄7年 5318粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

看不见的罗辑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值