没有合适的资源?快使用搜索试试~ 我知道了~
图神经网络辅助的自动加速器优化
550通过图神经网络辅助的自动加速器优化0Atefeh Sohrabizadeh,Yunsheng Bai,Yizhou Sun和Jason Cong加利福尼亚大学洛杉矶分校计算机科学系,美国洛杉矶,加利福尼亚州,美国{atefehsz,yba,yzsun,cong}@cs.ucla.edu0摘要使用高级综合(HLS),硬件设计人员只需描述设计的高级行为流程。然而,由于在更高级别上有许多设计选择需要探索,因此开发高性能架构可能仍需数周的时间。此外,使用HLS工具评估设计需要几分钟到几小时的时间。为了解决这个问题,我们使用图神经网络对HLS工具进行建模,以便用于广泛的应用范围。实验结果表明,我们的模型可以在毫秒级别估计设计的质量,具有高准确性,相对于依赖于HLS工具的先前最先进的工作,可实现高达79倍的加速(平均为48倍)。0ACM参考格式:Atefeh Sohrabizadeh,Yunsheng Bai,YizhouSun和JasonCong。2022年。通过图神经网络辅助的自动加速器优化。在第59届ACM/IEEE设计自动化大会(DAC'22)会议记录(DAC'22),2022年7月10日至14日,美国加利福尼亚州旧金山,美国。ACM,美国纽约,6页。https://doi.org/10.1145/3489517.353040901 引言 高级综合 (HLS)的出现简化了FPGA编程,通过提高设计的抽象级别,很快就被学术界和工业界接受[4,16]。这是因为HLS工具允许设计者通过插入一些合成指令快速优化他们的微架构。这个特性可以帮助缩短设计开发周期。然而,并不是每个HLS设计都有良好的结果质量[17]。因此,对于每个新应用,人们通常不得不探索许多设计选择,因为解决方案空间随候选指令数量呈指数增长。这可能会对设计的反应时间产生负面影响。为了加速设计优化,已经创建了一个新的研究领域,重点是自动化微架构的设计空间探索(DSE)。如[14]所总结的,以前的研究要么直接使用HLS工具[17,24],要么开发一个模型来模仿HLS工具[11,26]来评估设计点。依赖HLS工具评估解决方案会显著增加DSE时间,因为每个设计候选都需要很长的评估时间(几分钟到几小时),这迫使我们探索一个减小的解决方案空间。虽然使用模型可以潜在地加速这个过程,但是一个简单的分析模型无法捕捉工具使用的不同启发式方法。采用学习算法可以提高准确性。然而,相关工作为每个应用程序构建单独的学习模型,一个应用程序的结果不能转移到另一个应用程序中。Kwon等人在[7]中进行了良好的尝试,使用了多层感知器(MLP)网络进行转移学习。然而,他们只使用指示配置作为模型的输入,这可能会导致较大的信息损失,因为程序语义丢失了(见第5.2节)。最近一些研究提出使用图神经网络(GNN)来预测设计的质量[18,21]。0Ustun等人[18]提出了一种基于GNN的模型,用于学习FPGA资源上的操作映射,以预测HLS中的延迟。IronMan[21]使用GNN来预测程序在不同资源分配(DSP或LUT)下的性能,以及计算节点的性能。尽管他们的研究清楚地证明了使用GNN的价值和能力,但是这些工作中没有包含指示的输入表示,因此它们的模型不能用于查找最佳的设计配置。在本文中,我们旨在使用带有GNN支持的自动化设计优化。通过开发一个名为GNN-DSE的框架,我们首先构建一个模型,在没有调用HLS工具的情况下快速评估设计,仅需几毫秒。由于HLS工具采用许多启发式方法来优化设计,并且设计参数相互影响,我们让深度学习模型学习它们的影响。此外,由于当前的HLS工具是基于特定代码模式优化设计的,因此识别不同的代码模式并学习其效果非常重要,以便能够将我们从一个应用程序中获得的知识转移到另一个应用程序中。因此,我们将程序表示为一个图,其中包括控制流、数据流、调用流和指示流的程序信息,并利用GNN提取图的所需特征以预测目标。我们提出了几种提高模型准确性的技术,包括跳跃知识网络(JKN)[23]、节点注意力[9]和多头目标预测。为了证明我们模型的有效性,我们在其基础上构建了一个DSE来找到帕累托最优设计点。我们展示了GNN-DSE不仅可以找到数据库中包含的内核的帕累托最优设计点,还可以推广到其数据库之外的内核,并检测到它们的帕累托最优设计点。本文是首次采用了捕捉程序语义和指示的图形表示,并为多个应用程序构建了单一预测模型,并具有迁移学习能力。在本文中,我们以XilinxFPGA为例,但我们的方法是独立于工具的,也可扩展到IntelFPGA。简而言之,本文的贡献如下:•我们提出了一种基于图的程序表示,用于优化FPGA设计,包括程序上下文和指示流。•我们开发了一个基于图神经网络(GNN)的学习模型,作为HLS工具的替代品,用于在毫秒级评估设计点的质量,并提出了几种提高准确性的技术。•我们构建了一个自动化框架GNN-DSE1,用于收集FPGA设计的数据库,训练一个学习模型来预测设计的目标,并基于该模型运行设计空间探索,以找到高性能的设计点。•实验结果表明,GNN-DSE不仅可以找到数据库中内核的帕累托最优设计点,而且可以通过推广从训练集中学到的知识来优化未知内核。01 代码开源在https://github.com/UCLA-VAST/GNN-DSE0本作品采用知识共享署名国际4.0许可协议进行许可。0DAC'22年7月10日至14日,美国加利福尼亚州旧金山,版权所有者/作者。ACM ISBN978-1-4503-9142-9/22/07。https://doi.org/10.1145/3489517.3530409560DAC'22,2022年7月10日至14日,美国加利福尼亚州旧金山,Atefeh Sohrabizadeh,Yunsheng Bai,Yizhou Sun和Jason Cong02 背景 2.1 程序的图形表示以图形的方式表示程序的一种流行方法是从其LLVM中间表示(IR)中提取其控制流图和数据流图(CDFG)[8]。因此,不再关注代码的语法,而是捕捉程序流程的语义。在CDFG中,节点表示程序的LLVM指令,这些指令基于程序的控制流连接在一起。对于程序的数据流,根据指令的操作数,在节点之间添加第二类型的边。请注意,CDFG包含许多低级操作(例如,内存管理),这使其成为FPGA内核的理想选择。2.2 图神经网络 图神经网络(GNN)[22]通过学习图中每个节点的特征(嵌入)来提取图的信息,通过一系列的层次在聚合(AGG)邻居节点(N(A))的信息并对聚合结果应用变换函数(TF)。图卷积网络(GCN)[6]是GNN的一种流行形式,它采用一个简单的AGG函数,通过使用节点的度(AA)对N(A)的嵌入进行加权求和。0� ′ � = � ( � ∑�010� � � � � � ) (1)0其中 � � ∈ R � ( � ′ � ∈ R � ′ ) 表示节点 � ( � ′ )的输入(输出)嵌入,它是一个 � ( � ′ ) 特征的向量。�是用于在TF步骤中充当过滤器的可训练权重矩阵,�是引入非线性的激活函数。在这里,由于AGG步骤使用了一组固定的权重(由节点的度数确定),模型无法优先考虑任何邻居以学习更好的嵌入。图注意力网络(GAT)[20]的引入是为了学习节点邻居的 重要性(注意力),以便它们可以相应地更新其嵌入。GAT层的计算可以看作是: � ′ � = � ( W ∑�0� ∈N( � )∪{ � } � �,� � � ) (2)0� �,� s 是由多头点积注意力计算的注意力系数。每个头的计算如下:0� �,� = exp � LeakyReLU � � � [ �� � ∥ �� � ] ��0� � ∈N( � )∪{ � } exp ( LeakyReLU ( � � [ �� � ∥ �� � 0其中 ∥ 表示连接操作, � 是一个可学习的向量,控制节点 � 从节点�接收的注意力。请注意,与GCN相比,只有AGG步骤发生了变化。2.3Merlin编译器Merlin编译器[1,2]是由赛灵思最近开源的,旨在通过引入一组减少的高级编译指示来简化FPGA编程。基于这些编译指示,它执行源代码转换,并自动生成相应的HLS代码以及所需的HLS编译指示。它还自动应用代码转换来实现内存合并、内存突发和基于架构优化的数据缓存。虽然它只使用了三个编译指示(流水线、并行和瓦片),但它基于这些编译指示生成了几个HLS编译指示,包括流水线、展开、数组划分、内联、依赖关系、循环展平。我们在Merlin编译器的基础上构建了我们的工具,不仅大大减少了解决空间大小,而且还应用了其自动化的代码转换以实现更好的设计。然而,GNN模型必须更加努力地学习Merlin编译器何时(以及在哪里)应用其自动优化。03问题表述在这项工作中,我们旨在加速HLS的DSE问题。为此,我们针对以下问题提出解决方案:问题1:构建预测模型。假设 P是一个作为FPGA加速器内核的C程序,具有设计配置 ( � )。假设 H是一个供应商提供的HLS工具,它输出真实的执行周期 ����� ( H , P( � ))和真实的资源利用率 ���� ( H , P( � )) : Q H (P( � )) = � ����� ( H , P( � )) ,���� ( H , P( � )) � (4)找到一个预测函数 ( F ),它能够近似地预测出任何给定程序 P 和任何设计配置 ( � ) 的 H的结果:min F � ������� �0� ���� ( Q F (P( � )) , Q H (P( � ))) �� (5)0问题2:确定最佳配置。对于上述定义的程序P,找到一个在给定的搜索时间限制内的配置 � ∈ R P,使生成的设计 P( � )能够适配FPGA并且执行周期最小化。形式化地,我们的目标是:min ������ ( F , P( � )) (6)0� ∈ R P , � � ∈ ���� ( F , P( � )) ,� < � � (7)这里�是FPGA片上资源的一种利用率,��是FPGA上该类型资源的用户定义阈值。我们提出的方法学图4.1(a)描述了 GNN-DSE的高级概述,它分为三种模式:训练、推理和DSE。我们首先收集各种应用程序的数据库(第4.1节),并将数据库中的每个设计表示为一个图(第4.2节)。然后,我们训练一个用于估计设计目标的预测模型(第4.3节)。最后,预测模型可以用作HLS工具的替代,用于运行推理和DSE阶段(第4.4节)。4.1数据库生成我们采用了一个相关的先前工作AutoDSE[17],该工作报告了优于以前研究的结果(例如[24]),以为每个应用程序生成初始数据库。图2演示了我们的方法。每个for循环最多可以使用三个编译指示:pipeline、parallel和tile(第2.3节)。我们还利用AutoDSE的规则来修剪设计配置(例如,当在循环上应用细粒度流水线时,内部循环将不会使用任何编译指示)。由于模型需要看到从“坏”到“好”的各种设计点,以学会区分它们,GNN-DSE将AutoDSE扩展到利用三种类型的浏览器来构建训练集: •AutoDSE的现有浏览器,基于瓶颈的优化器,可以找到高质量的设计。 •将基于瓶颈的优化器与局部搜索相结合的混合浏览器,在质量改进 � %后评估最佳设计点的 �个邻居。因此,模型可以看到仅修改一个编译指示的效果。 •随机浏览器,可以考虑前两个浏览器跳过的那些配置。一旦浏览器选择了一个设计点,它就会传递给Merlin编译器进行评估。结果将与程序的图表示一起提交到一个共同的数据库中(第4.2节)。GNN-DSE逐渐从不同的应用程序中收集结果,以用于训练模型。4.2程序表示如第2.1节所述,CDFG是表示FPGA内核的一种常用选择。不过,CDFG忽略了操作数的精度和值,这对于确定设计目标至关重要。最近,提出了一种更方便的程序表示方法,ProGraML[3],它通过显式地为操作数分配单独的节点来检索缺失的信息。它还通过包括…+ 570由图神经网络辅助的自动加速器优化0训练数据库0预测模型0训练器0推理0C/C++ 代码0生成器图0生成器0预测0模型0设计配置0设计空间探索0C/C++ 代码0推理0前 M个设计0数据库生成器 评估器 (HLS工具)0(b) 图1: (a) GNN-DSE框架的高级概述; (b) Code 1的图表示。0应用程序 10(C/C++)0应用程序 N0(C/C++)0设计空间0生成器0评估器 (HLS工具) 浏览器0图0生成器数据库生成器0数据库生成器0训练数据库0图2:GNN-DSE的数据库生成器。设计的调用流程。因此,我们改编并扩展了ProGraML,通过包括编译指示流来表示程序。每个候选编译指示可以采用以下任一形式定义:0#pragma ACCEL pipeline auto {pragma_name} #pragmaACCEL parallel factor= auto {pragma_name} #pragmaACCEL tile factor= auto {pragma_name}0pragma_name是其选项的占位符,可以是(off|cg|fg)用于pipeline,也可以是数字值用于其他两个。cg(fg)表示粗粒度(细粒度)流水线[17]。代码1:GNN-DSE输入玩具示例的代码片段。01 void foo(int input[N]) { 2 #pragma ACCEL pipeline auto{_PIPE_L1} 3 #pragma ACCEL parallel factor= auto {_PARA_L1} 4for (int i = 0; i < N; i++) { input[i] += 1; } }0我们为每个候选编译指示存储一个节点。由于编译指示应用于循环,我们将此节点连接到对应于循环的指令节点之一:icmp。代码1显示了一个具有两个候选编译指示的简单for循环的玩具示例。图1(b)描述了其图表示。为了说明目的,我们这里只显示相关节点。正如图1(b)所示,在每个图中有三种类型的节点。第一种(蓝色)是LLVM指令,它们共同展示程序的控制流。第二种(红色)展示捕获程序数据流的常量值和变量。编译指示节点(第三种)以紫色框的形式呈现,并连接到相应的icmp节点。边缘还具有不同的类型,显示了图的不同流动:控制(蓝色),数据(红色),调用(绿色)和编译指示(紫色)。当有两个或更多类型相同的边缘连接到一个节点时,它们被编号以进一步区分它们(参见从编译指示节点到icmp节点的边缘)。为了区分嵌套循环的不同候选编译指示,必须了解每个编译指示的循环级别。作为一个经验法则,当编译指示应用于内部循环时,HLS工具的性能更好,因为它们可以更容易地实现精细粒度的优化[17]。除了捕获控制流之外,我们还通过循环的LLVM块ID明确编码了此信息。具体而言,每个节点/边缘都具有以下属性:0Node = {'block': LLVM块ID,'key_text':节点关键任务,'function':函数ID,'type':节点类型} Edge=(源节点ID,目标节点ID,{'flow':流类型,'position':位置ID})0type,flow和position属性编码了此信息(对于非编译指示边,position表示它们的排序):type 0:指令1:变量2:常量值3:编译指示0flow 0:控制1:数据2:调用3:编译指示0位置0:瓷砖1:管道2:并行-0key_text属性显示与该节点对应的关键字。例如,对于编译指示、控制和数据节点类型,PIPELINE,load,i32*分别为关键字。对于每个设计点,编译指示占位符中的auto变量将被其各自的值替换。因此,在相同应用的不同设计配置的图中,只有其编译指示节点的属性不同。图3演示了图生成过程。0C/C++代码0候选0编译指示0生成器0图生成器0编译指示0LLVM IR0编译指示0占位符0设计配置0图3:GNN-DSE的图生成器。4.3预测模型图4展示了我们用于预测设计目标的模型架构。它以程序的图表示作为输入,并通过连接其属性(4.2节)和预处理选项的独热编码来创建初始节点/边嵌入。该编码帮助模型将更多地权重分配给对最终预测的贡献更大的属性。为此,模型利用GNN编码器(4.3.1节)更新嵌入。然后,GNN编码器将图嵌入传递给一组MLP来估计输出(4.3.2节)。4.3.1GNN编码器:它通过三个阶段将�G分配给图G:(1)叠加TransformerConv层以生成节点嵌入,(2)跳跃知识网络以组合不同层的输出以制作具有动态邻域范围的最终节点嵌入,(3)注意机制将节点级嵌入合并成图级嵌入。TransformerConv:我们在2.2节中回顾了GCN [6]和GAT[20]。这些层的一个缺点是它们都忽略了边的嵌入。TransformerConv [15]受Transformer模型[19]的启发,是一种最先进的GNN架构,它构建用于以与GAT不同的方式聚合邻居的注意系数(� �,�)。0√0� (8)0其中�1,�2和�3是可学习的权重矩阵,���表示节点�和�之间的边的嵌入。包括边属性是我们任务的一个理想特性,因为我们图表示中的边包含有用的信息(4.2节)。…580DAC '22,2022年7月10日至14日,美国加利福尼亚州旧金山,Atefeh Sohrabizadeh,Yunsheng Bai,Yizhou Sun和Jason Cong0编码器0GNN编码器MLP预测层0TransformerConv激活跳跃知识网络节点注意力0图4:GNN-DSE预测模型的架构。此外,TransformerConv在更新节点嵌入时使用门控残差连接,可以防止模型过度平滑。因此,我们将TransformerConv作为我们模型的基本构建块。跳跃知识网络(JKN):GNN的每一层都会收集一阶邻居的嵌入。通过添加每一层,节点将从更远的一跳处接收嵌入,因为它们的一阶邻居现在已经使用它们自己的嵌入进行了更新。图中的不同节点可能需要来自不同邻域范围的信息。例如,在图1(b)中的图中,load和add节点分别受到3和4层之后的编译指示节点的影响。为了充分利用GNN模型不同层生成的嵌入,我们利用JKN[23],正如图4所示,它接收所有层的输出,以灵活地选择每个节点的不同邻域范围:0� � = max � � ( 1 ) � , . . . , � ( � ) � � (9)0其中�(�)�表示第�层后节点�的嵌入。基于节点注意力的图级嵌入生成:为了为整个图生成一个向量表示,可以简单地将所有节点嵌入相加。然而,鉴于我们的图表示既包含编译指示节点又包含程序上下文节点,引入注意力[9]以学习哪个节点对于预测任务更重要是更可取的:� G =∑�0� = 1: � softmax ( MLP 1 ( h � )) ∙ MLP 2 ( h � )0其中MLP1将节点嵌入从R�映射到R,然后通过全局softmax获得每个节点的注意力分数。然后,将注意力分数应用于转换的节点嵌入,MLP2(h�),以获得最终的图级嵌入。图5描述了MachSuite基准中stencil内核设计的图。每个节点的圆圈大小与其在构建图级嵌入时接收的注意力成比例。正如我们所预期的,编译指示节点是最重要的节点之一。然而,模型可以学习到并非所有编译指示节点都是同样重要的。正如图所示,循环迭代次数(icmp节点和与之连接的i32节点)以及循环的其他上下文信息决定了它们的重要性。0图6:stencil设计配置的t-SNE[10]可视化。每个点表示一个设计,颜色表示其延迟值。模型相似(不相似)的数据。图6(a)描述了基于其初始嵌入的stencil内核的t-SNE图。将节点嵌入相加以创建一个图级嵌入。每个点表示一个设计配置,其颜色由其延迟(周期计数)编码。图6(b)展示了如果我们使用我们的GNN编码器生成的图级嵌入,则t-SNE图。尽管初始特征显示出设计点之间的相似性很高,但延迟却有很大差异,但GNN编码器能够成功地为图分配嵌入,使得只有具有相似延迟的设计被聚类在一起。0123590由图神经网络辅助的自动加速器优化DAC '22,2022年7月10日至14日,美国加利福尼亚州旧金山0展开子循环,因此我们不再需要并行编译指示。在评估此编译指示之后,我们对下一个循环段进行相同的过程,并继续直到访问所有编译指示。由于获取设计目标的真实值耗时,构建数据集是我们方法的主要瓶颈。在构建初始数据库(第4.1节)之后,我们利用我们的DSE来增加数据库。请注意,DSE希望在许多未见过的数据点上运行模型,因此我们必须在数据库中具有所有设计选择的良好代表。另一方面,如果我们的DSE错误地认为一个未见过的设计点很好,这意味着模型没有足够的数据来为整个空间进行泛化。由于这些数据点是使模型错误预测结果的数据点,它们更有可能在下一轮中构建一个更好的数据集。5 评估 5.1实验设置我们从常用的Mach-Suite基准[13]和Polyhedral基准套件(Polybench)[25]中选择我们的目标内核。初始数据库是使用XilinxVirtex Ultrascale+VCU1525作为目标FPGA生成的,其中包含具有不同计算强度的内核,包括矩阵和向量操作、模板操作、加密和动态规划应用(nw)。我们的模型以周期计数的形式预测延迟和DSP、BRAM、LUT和FF的资源利用率。我们使用PyTorch[12]部署和训练我们的框架。我们将数据集的80%(20%)用于训练(测试),在训练过程中使用Adam优化器[5]进行3倍交叉验证,学习率为0.001。报告的模型性能基于测试集。初始嵌入具有124个特征。我们为分类和回归构建完全独立的模型,每个模型有6个GNN层和64个特征,后面跟着4个MLP层。表1总结了每个内核的编译指示数量、总解空间大小、数据库中的总配置数以及其中的有效配置数,以及根据第4.4节中所述的方式增加数据库后的设计数量。在我们的数据库中,延迟在660到12,531,777个周期之间。DSP/BRAM/LUT/FF计数在0/0/913/0到28,672/7,464/2,639,487/3,831,357之间,显示了所有目标的较大范围。5.2模型评估5.2.1数据预处理:我们对数据进行预处理,限制其范围,以便它们能够对损失产生相同的贡献。为此,我们通过将其除以FPGA上可用资源的数量对资源利用率进行归一化,并对延迟应用以下公式:0� ������� = log2 �0�������(11)0因此,模型在减小��������的损失上花费更多时间,该值对应于低延迟高性能设计。使用log2因子使数据分布更均匀,因为由于该问题的固有特性,高性能值的数量有限,数据在原始上偏向于低性能值。在进行此归一化后,所有目标的下限范围为0.0,上限范围为12.7414 /4.1900 / 1.7200 / 2.2300 / 1.6600,分别对应于延迟 / DSP /BRAM / LUT /FF。我们的数据库显示BRAM利用率与其他目标之间存在较弱的相关性。因此,我们为回归训练了两个模型,一个仅负责预测BRAM利用率,另一个负责预测其他目标。05.2.2比较研究:我们首先测试仅使用MLP网络而没有考虑图结构的两个模型的性能。第一个模型(M1)遵循[7]中的相同方法,只使用编译指示设置作为输入。第二个模型(M2)将图的所有节点及其初始嵌入作为输入,但不利用GNN技术来更新嵌入,而只使用MLP。结果表明,将程序上下文包含在输入中对于提高模型的准确性至关重要,因为它希望预测具有不同语义的应用程序的目标。此外,我们评估了模型的优化效果。首先,当模型使用GCN、GAT或TransformerConv作为GNN层以及正常求和来创建图级嵌入(M3至M5)时,我们测试了模型的性能。然后,我们添加了JKN(M6)并用我们的节点注意力层替换了正常求和(M7)。如表2所示,这些模型包含程序的不同流程(控制、数据、调用和编译指示)的事实,使用图结构可以降低它们的损失。结果进一步证明了我们在4.3.1节中解释的优化的有效性。0图7:GNN-DSE相对于初始数据库中最佳设计的加速比。每轮DSE后,将顶级设计添加到数据库中以优化预测。 5.3 设计空间探索的结果使用我们的模型,我们能够每秒运行22次推理。因此,我们能够在几分钟内穷尽搜索目标内核的所有设计选择,除了mvt外。我们采用第4.4节中提出的启发式方法,在mvt上搜索一个小时。我们对所有内核运行DSE,并使用HLS工具评估它们的前10个设计。根据性能如何,我们根据第4.4节中的说明添加不同数量的设计点和其真实目标到数据库中。图7显示了每个内核相对于初始数据库中最佳设计在不同DSE轮次下实现的加速比。正如图表所示,在扩展数据库的3个轮次后,DSE可以找到具有更好或相等性能的设计配置。图例总结了每个轮次后所有内核的平均加速比。 5.4 对未知内核的结果为了测试我们的工具是否可扩展到未知内核,我们选择了Polybench中的四个新内核,它们没有包含在我们的数据库中:bicg,doitgen,gesummv和2mm。bicg执行两个矩阵-向量乘法,doitgen将一个3D张量与矩阵相乘,gesummv具有两个矩阵-向量乘法和一个加权向量相加,而2mm由两个矩阵乘法组成。请注意,我们的数据库中有四个内核与矩阵-向量操作一起工作,虽然一般来说,它们具有不同的问题规模和编码结构。表3总结了这些新内核的指令数和设计配置。与第5.3节一样,我们为每个内核设置了一个小时的时间限制。0由于代码不可用,我们尽可能重新实现了他们的模型。600DAC '22,2022年7月10日至14日,美国加利福尼亚州旧金山Atefeh Sohrabizadeh,Yunsheng Bai,Yizhou Sun和Jason Cong0表1:用于训练我们的模型的设计空间和内核数据库。0内核名称 aes atax gemm-blocked gemm-ncubed mvt spmv-crs spmv-ellpack stencil nw 总数0# pragmas 3 5 9 7 8 3 3 7 6 -0# 设计配置 45 3,354 2,314 7,792 3,059,001 114 114 7,591 15,288 3,095,6130初始数据库(总数/有效数)15 / 15 605 / 101 616 / 149 432 / 149 571 / 180 98 / 35 114 / 60 1,066 / 281 911 / 66 4,428 / 1,0360最终数据库(总数/有效数)44 / 44 636 / 129 667 / 183 476 / 193 621 / 224 114 / 51 114 / 60 1,098 / 291 982 / 103 4,752 / 1,2780表2:我们数据库测试集上的模型评估。回归任务使用RMSE损失作为评估指标。对于分类任务,报告准确度和F1分数。0模型 方法 延迟 DSP LUT FF BRAM 全部 准确度 F1分数0M1 MLP-pragma(如[7]中的)3.2756 0.5857 0.3115 0.2483 0.3356 4.7567 0.52 0.420M2 MLP-pragma-program context 2.9444 0.4650 0.2401 0.1349 0.1597 3.9442 0.78 0.400M3 GNN-DSE-GCN 1.6825 0.4265 0.1642 0.1277 0.1593 2.5602 0.79 0.510M4 GNN-DSE-GAT 1.1819 0.2557 0.1266 0.1009 0.1178 1.7829 0.85 0.680M5 GNN-DSE-TransformerConv 1.1323 0.2540 0.1245 0.0938 0.1231 1.7277 0.85 0.760M6 GNN-DSE-TransformerConv + JKN 1.0846 0.2521 0.1112 0.0933 0.0912 1.6324 0.92 0.860M7 GNN-DSE(TransformerConv + JKN + node att.)0.5359 0.1253 0.0762 0.0632 0.0515 0.8521 0.93 0.8702mm,它有超过492个设计选择。对于其余的内核,我们会穷尽地搜索它们的所有配置,这需要不到2分钟的时间。对于所有这些内核,我们将前10个设计传递给Merlin编译器,并并行运行它们进行评估。表3的第4列列出了该过程对每个内核的总运行时间。为了衡量所生成的顶级设计的质量,我们为AutoDSE运行时间长达21小时(其对doitgen的搜索在3小时后完成)。在此期间,它为每个案例探索了多达163个设计配置,实现了与无优化设计相比的最大加速比350×。GNN-DSE可以实现大致相同的性能(与平均值为+1%的-2%和+5%的差异),但所需时间更少。表3总结了与AutoDSE相比,GNN-DSE相对于每个内核在DSE和使用HLS综合设计方面实现的加速比。结果表明,GNN-DSE可以将此过程加速多达79×,平均为48×。表3:GNN-DSE在未知内核上的性能。速度提升数字相对于先前的AutoDSE [17]工作,在运行时间长达21小时后获得。0Kernel #pragma #Design configs0DSE + HLS运行时间(分钟) #已探索的0bicg 5 3,536 18 3,536 69 ×0doitgen 6 179 16 179 11 ×0gesummv 4 1,581 16 1,581 79 ×02mm 14 492,787,501 74 78,676 17 ×06 结论 在这项工作中,我们开发了一个一键式框架GNN-DSE,用于构建一个学习模型,以在毫秒级预测设计目标。我们提出了一种基于图的程序表示,包括程序语义和候选的pragma,并实现了一个基于 GNN的模型,帮助我们提取所需的信息以估计我们的目标。我们利用我们的模型通过搜索不同的设计配置来优化目标应用程序。实验结果表明,GNN-DSE可以构建一个高准确性的单一模型,用于在不同领域中使用。他们还证明,GNN-DSE不仅能够快速找到其数据库中应用程序的帕累托最优设计,还能从中获得的知识来优化其现有领域中的新应用程序。在未来,我们将扩大我们的工具覆盖更多的领域。致谢本研究得到了由NSF(CCF-1723773)和Intel(36888881)共同资助的CAPA奖励,由NSF(CCF-1937599)资助的RTML奖励,NSF III-1705169奖励,Okawa基金会的支持0感谢Grant、Amazon研究奖、CISCO研究奖、Picsart礼物、Snapchat礼物和CDSC工业合作伙伴(https://cdsc.ucla.edu/partners/)。我们还要感谢Marci Baun编辑本文。0参考文献 [1] J.Cong等。2016年。HLS的源到源优化。在《软件程序员的FPGAs》中。137-163页。 [2]J.Cong等。2016年。数据中心中基于FPGA加速的软件基础设施。在《ISLPED》中。154-155页。 [3] C.Cummins等。2021年。ProGraML:基于图的程序表示用于数据流分析和编译器优化。(2021)。 [4] J.Duarte等。2018年。用于粒子物理学中FPGA的深度神经网络快速推理。《仪器学杂志》,13, 07 (2018), P07027。 [5] D. P.Kingma等。2014年。Adam:一种随机优化方法。《arXiv预印本arXiv:1412.6980》,(2014)。 [6] T. N. Kipf等。2017年。具有图卷积网络的半监督分类。《ICLR》,(2017)。 [7]J. Kwon等。2020年。用于高级综合的迁移学习设计空间探索。在《2020年ACM/IEEEMLCAD》中。 [8] C.Lattner等。2004年。LLVM:一种用于终身程序分析和转换的编译框架。在《国际CGO研讨会》中。 [9] Y. Li等。2016年。门控图序列神经网络。《ICLR》,(2016)。 [10] L. v. d.Maaten等。2008年。使用t-SNE可视化数据。《机器学习研究杂志》,9,11月(2008),2579-2605页。 [11] A.Mahapatra等。2014年。基于机器学习的模拟退火器方法用于高级综合设计空间探索。在《ESLsyn》中。 [12] A.Paszke等。2019年。PyTorch:一种命令式风格的高性能深度学习库。在《神经信息处理系统32的进展》中。 [13] B.Reagen等。2014年。Machsuite:用于加速器设计和定制架构的基准。在《IISWC》中。[14] B. C. Schafer等。2019年。高级综合设计空间探索:过去、现在和未来。《IEEETCAD》,(2019)。 [15] Y.Shi等。2021年。掩码标签预测:用于半监督分类的统一消息传递模型。《IJCAI》,(2021)。 [16] A.Sohrabizadeh等。2020年。端到端优化深度学习应用程序。在《FPGA》中。133-139页。 [17] A.Sohrabizadeh等。2022年。AutoDSE:使软件程序员能够设计高效的FPGA加速器。《ACM Transactions on Design Automation of Electronic Systems (TODAES)》,27, 4(2022),1-27页。 [18] E. Ustun等。2020年。使用图神经网络准确预测FPGAHLS的操作延迟。在《ICCAD》中。 [19] A.Vaswani等。2017年。注意力就是一切。在《NeurIPS》中。5998-6008页。 [20] P.Veličković等。2018年。图注意力网络。《ICLR》,(2018)。 [21] N.Wu等。2021年。IronMan:基于GNN的高级综合设计空间探索通过强化学习。《arXiv:2102.08138》,(2021)。 [22] Z.Wu等。2020年。图神经网络综述。《IEEE神经网络和学习系统交易》,32, 1(2020),4-24页。 [23] K.Xu等。2018年。具有跳跃知识网络的图上表示学习。在《国际机器学习会议》中。PMLR,5453-5462页。 [24] C. H.Yu等。2018年。S2FA:数据中心异构计算的加速器自动化框架。在《DAC》中。1-6页。[25] T. Yuki等。PolyBench/C。([n. d.]). https://web.cse.ohio-state.edu/~pouchet.2/software/polybench/ [26] J.Zhao等。2017年。COMBA:一种用于高级综合实际应用的全面模型分析框架。在《ICCAD》中。430-437页。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功