CN110717587A - 一种基于并行加速循环体的性能语义加速机制及其应用 - Google Patents
一种基于并行加速循环体的性能语义加速机制及其应用 Download PDFInfo
- Publication number
- CN110717587A CN110717587A CN201910964789.5A CN201910964789A CN110717587A CN 110717587 A CN110717587 A CN 110717587A CN 201910964789 A CN201910964789 A CN 201910964789A CN 110717587 A CN110717587 A CN 110717587A
- Authority
- CN
- China
- Prior art keywords
- performance
- acceleration
- semantic
- acceleration mechanism
- parallel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000001133 acceleration Effects 0.000 title claims abstract description 78
- 230000007246 mechanism Effects 0.000 title claims abstract description 33
- 230000006870 function Effects 0.000 claims abstract description 25
- 238000004364 calculation method Methods 0.000 claims abstract description 15
- 230000006399 behavior Effects 0.000 claims abstract description 10
- 238000013461 design Methods 0.000 claims description 12
- 230000001788 irregular Effects 0.000 claims description 3
- 235000013399 edible fruits Nutrition 0.000 claims description 2
- 238000005266 casting Methods 0.000 claims 1
- 230000006872 improvement Effects 0.000 abstract description 6
- 238000010801 machine learning Methods 0.000 description 38
- 238000010586 diagram Methods 0.000 description 11
- 238000002474 experimental method Methods 0.000 description 7
- 238000013527 convolutional neural network Methods 0.000 description 6
- 238000000034 method Methods 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 239000000872 buffer Substances 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 241000665848 Isca Species 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Neurology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Stored Programmes (AREA)
Abstract
本发明适用于加速机制技术改进领域,提供了一种基于并行加速循环体的性能语义加速机制,所述性能语义加速机制包括:S1、观察计算和数据密集型的ML算法查找出其共同模式;S2、将找出的共同模式抽象成与性能相关的程序行为构成性能语义;S3、对性能语义进行加速形成通用加速机制。该性能语义加速机制通过调用其库函数来编写的算法,并且代码将被编译为硬件API进行库调用。简化了程序员每次都需要队ML算法的架构,节省了时间,提高了效率。
Description
技术领域
本发明属于加速机制技术改进领域,尤其涉及一种基于并行加速循环体的性能语义加速机制及其应用。
背景技术
机器学习(ML)的日益普及及其非凡的计算需求共同引发了对ML应用的硬件加速器设计的广泛研究[1]。与通用架构相比,这些加速器在性能改进方面达到了1-2个数量级。在当前的智能手机中,用于神经网络加速的NPU协处理器已成为应用处理器的组成部分。然而,目前ML加速器仍然基于定制设计,这是昂贵的,费力的,并且最严重的是,具有非常有限的可重新定位性。实质上,只有具有巨大市场容量的ML算法才能通过定制设计为加速器付出努力,并且为每类ML算法设置专用加速器是不切实际的。
[1].V.Sze,Y.Chen,T.Yang and J.S.Emer,"Efficient Processing of DeepNeural Networks:A Tutorial and Survey,"in Proceedings of the IEEE,vol.105,no.12,pp.2295-2329,Dec.2017。
[2].Chen,Tianshi,et al."DianNao:a small-footprint high-throughputaccelerator for ubiquitous machine-learning."Acm Sigplan Notices49.4(2014):269-284。
[3].Luo,Tao,et al."DaDianNao:A Neural Network Supercomputer."IEEETransactions on Computers 66.1(2016):1-1。
[4].Liu,Daofu."PuDianNao:A Polyvalent Machine Learning Accelerator."Twentieth International Conference on Architectural Support for ProgrammingLanguages\&Operating Systems ACM,2015。
[5].Guo,Kaiyuan,et al."Software-Hardware Codesign for EfficientNeural Network Acceleration."IEEE Micro 37.2(2017):18-25。
[6].Yang,Yifan,et al."Synetgy:Algorithm-hardware Co-design forConvNet Accelerators on Embedded FPGAs."(2018)。
[7].Liu,Shaoli,et al."Cambricon:An Instruction Set Architecture forNeural Networks."2016ACM/IEEE 43rd Annual International Symposium on ComputerArchitecture(ISCA)IEEE Computer Society,2016。
[8].Groleat,Tristan,M.Arzel,and S.Vaton."Stretching the Edges of SVMTraffic Classification With FPGA Acceleration."IEEE Transactions on Networkand Service Management 11.3(2014):278-291。
[9].Simonyan,Karen,and A.Zisserman."Very Deep Convolutional Networksfor Large-Scale Image Recognition."Computer Science(2014)。
发明内容
本发明的目的在于提供一种基于并行加速循环体的性能语义加速机制及其应用,旨在解决上述的技术问题。
本发明是这样实现的,一种基于并行加速循环体的性能语义加速机制,所述性能语义加速机制包括:
S1、观察计算和数据密集型的ML算法查找出其共同模式;
S2、将找出的共同模式抽象成与性能相关的程序行为构成性能语义;
S3、对性能语义进行加速形成通用加速机制。
本发明的进一步技术方案是:所述步骤S2中性能语义可映射到许多具体的功能语义上,并通过为抽象提供简单的配置信息,将抽象还原到特定功能。
本发明的进一步技术方案是:所述加速机制在使用中直接调取其中的软件函数逻辑形成一个配置虚化的硬件框架。
本发明的进一步技术方案是:所述加速机制主要来自跨多个循环的带的操作的并行化,通过计算并行度和数据来源给出基本操作Result=Source1op Source2,其中,op是一种操作。
本发明的进一步技术方案是:所述计算并行度中虚幻爹地啊中结果依赖性决定了可用于加速的并行性,并将并行性分为以下三种类型:
A、完全并行,在命名的后缀中用p表示;
B、树并行,在命名的后缀中用t表示;
C、不规则或无法并行,难以加速或根本不可加速。
本发明的进一步技术方案是:所述数据来源中数据源是影响加速器数据路径设计的另一个重要因素,每个源数据分为以下三种类型:
A1、缓存元素,在命名的后缀中用D(direct)表示;
B1、索引变量,在命名的后缀中用I(index)表示;
C1、不规则,元素的访问来源无法确定或者元素的索引计算具有依赖性,这一类计算只能按顺序执行。
本发明的进一步技术方案是:所述步骤S1中ML算法大部分执行时间都花在内部循环中嵌入的执行内核上。
本发明的进一步技术方案是:所述步骤S1中ML算法的内核变现出强大的数据级并行性。
本发明的另一目的在于提供一种基于并行加速循环体的性能语义加速机制的应用,所述基于并行加速循环体的性能语义加速机制的应用,用于任意需架构加速学习的程序使用。
本发明的有益效果是:该性能语义加速机制通过调用其库函数来编写的算法,并且代码将被编译为硬件API进行库调用。简化了程序员每次都需要队ML算法的架构,节省了时间,提高了效率。与定制加速不同,性能语义加速机制具有很好的通用性。性能语义不是为特定的算法内核而设计,而是根据算法步骤的并行特征设计的。在ML算法中,有多个算法中的某些步骤共享相同的并行特征,那么这些步骤抽象出来的性能语义加速器就能同时为这些算法加速而无需改变加速器结构。
附图说明
图1是本发明实施例提供的性能语义代码示例示意图。
图2是本发明实施例提供的通用加速框架的示意图。
图3是本发明实施例提供的不同的代码示例的示意图。
图4是本发明实施例提供的输入和输出结构的示意图。
图5是本发明实施例提供的配置器的示意图。
图6是本发明实施例提供的PS_p_D的示意图。
图7是本发明实施例提供的PS_t_D的示意图。
图8是本发明实施例提供的PS_p_I的示意图。
图9是本发明实施例提供的性能语义加速器架构的示意图。
图10是本发明实施例提供的kNN算法的计算内核以及性能语义的示意图。
图11是本发明实施例提供的加速效果的示意图。
具体实施方式
本发明提供的基于并行加速循环体的性能语义加速机制,所述性能语义加速机制包括:S1、观察计算和数据密集型的ML算法查找出其共同模式;S2、将找出的共同模式抽象成与性能相关的程序行为构成性能语义;S3、对性能语义进行加速形成通用加速机制。
在本文中,我们提出了一个框架,可以加速一组流行的ML算法的执行。虽然这些算法完全不同,但它们共享一组共同的功能。首先,所有这些ML算法都是计算和数据密集型的。其次,他们的大部分执行时间都花在内部循环中嵌入的一些执行内核上。第三,这些内核表现出强大的数据级并行性(DLP),这意味着通过利用其丰富的DLP可以实现极大的加速潜力。最后也是最重要的是,虽然这些DLP内核的功能语义完全不同,但它们在性能相关的行为上有一些共同的模式。这意味着,通过一些可重新配置性,为常见行为模式设计的加速器可以针对共享相同行为模式的功能内核。
通过这些观察,我们提出了一个称为性能语义的关键概念,与功能语义相反,它指定了代码片段的具体功能。性能语义是与性能相关的程序行为的抽象,可以映射到许多具体的功能语义,并且通过为抽象提供简单的配置信息,可以将抽象还原到特定的功能。
基于性能语义的概念,我们为一些常见的性能语义(Performance semantics,PS)设计并实现了一组可重构加速器。配置器接受来自CPU的硬件API,并生成一组控制信号、数据地址以根据需要工作。我们将以库函数的形式表达。ML程序员只需要调用这些库函数来实现或修改他们的ML应用程序,然后这些调用将被编译成硬件电路。库也可用于纯软件平台,其中调用将简单地编译为软件二进制文件。换句话说,在ML应用程序开发人员看来,它既透明又便携。
我们使用ARM CPU和可重配置逻辑在FPGA上实现我们的框架,并使用一组流行的ML算法对其进行测试。实验结果表明,我们的框架可以成功地覆盖他们的计算内核,并实现了15x到40x的巨大性能加速。
本文的其余部分安排如下。在第2节中,我们介绍了相关的工作。我们对特定功能单元的观察和代表性机器学习算法的观察在第3节中给出。在第4节中,我们展示了我们的加速器架构。实验结果在第5节中提供。我们在第6节中总结了本文。
二.相关工作
随着机器学习算法在各个领域的使用越来越多,各种定制加速度正在出现,特别是对于CNN,DNN和RNN等神经网络的加速,因为它们结构复杂,计算和存储密度高。专用集成电路(ASIC)具有最高的能效。DianNao[2]是CNN和DNN的加速器,比128位2GHz SIMD处理器快117.87倍。同样适用于CNN和DNN的DaDianNao[3]可以在GPU上实现450.65倍的加速。随着机器学习社区的快速发展,模型趋于复杂,并且不同的算法开始出现在同一模型中。经常设计ASIC显然不是一个可行的选择。现场可编程门阵列(FPGA)因其出色的节能性能和可重配置性而备受关注。在[5]中,提出了两个基于FPGA的加速器来提高CNN和RNN的性能,并且作者还提出了一种硬件-软件协同设计方法,以解决深度学习模型的快速发展问题。DiracDeltaNet[6]是一个基于FPGA的定制CNN,只有1*1卷积内核,可以实现更高效的移位操作。Cambricon[7]通过将神经网络的代表性函数抽象为指令,从指令集的角度给出了更通用的解决方案,使其能够支持10种不同的神经网络。在传统机器学习领域,在[8]中,开发了基于FPGA板的大规模并行性和低级网络接口访问的SVM加速器。PuDianNao[4]旨在加速计算原语,使其能够支持七种典型的机器学习算法。
尽管基于ASIC和FPGA的加速器已经在机器学习算法中实现了显着的性能改进,但是在这个阶段加速器的设计仍然集中在算法或某种类型的算法上。然而,当前的应用场景变得越来越复杂,当要加速的对象发生变化时,我们仍然需要重新设计加速器。CPU和GPU的多功能性已足够,但在某些情况下,它们的能量性能不是很好。
与上述实践相反,我们提出了一种多功能加速框架,可以针对各种ML算法。对于ML应用程序开发人员来说,他们获得加速的唯一工作就是在软件开发过程中调用我们框架提供的一些库函数。
三.性能语义介绍
机器学习算法将大部分时间花在嵌套在循环体中的内核上。虽然这些执行内核的功能和代码不同,但它们可能在数据处理模式上表现出类似的行为。我们使用一些简单示例,如图1所示。
图1展示了4种不同功能的代码,图1(a)的功能是算一个数组的元素总和,图1(b)是算一个数组的平均值,图1(c)是计算一个数组的最大值,图1(d)是将数组的每一个元素加上一个常数d。其中A[]是代码种的数组,里面存放了一系列元素,A[i]表示里面的第i个元素,例如当i=0时,就表示数组中的第一个元素。显然,对于前三种代码,都需要对数组求和,求和的操作时累加操作,一般需要每一个元素都加上总和上去,然而我们可以用并行的方法,对这个数组不停地两两组合相加,这样每次数组的长度都能缩减一半,最后也能得到数组的总和。对于最后一个代码,每一个元素加上d是可以同时进行的。
图1中的示例都通过数组元素进行导航以进行某些处理。它们在行为上似乎非常相似,在数据操作上只有轻微的功能差异。然而,图1(a)-(c)中的内核在循环携带依赖性方面与图1(d)完全不同。对于具有循环携带依赖性的代码(a)到(c),可利用的并行性是树状多阶段处理。例如,(a)中的和运算可以通过首先将k=0到k=N/2的相邻元素A[2k]和A[2k+1]相加,然后通过继续该过程来加速。从前一次迭代得到的元素,直到获得最终总和,如图1(e)所示。
代码(d)与(a)-(c)不同,因为它没有循环进位依赖性,因此使用加速器可以实现更积极的并行性,该加速器并行执行跨多个迭代的逐元素操作,如图1(f)所示。
基于以上分析,我们提出了一个称为性能语义的关键概念,它是对执行内核的性能相关行为的抽象,例如一些数据级并行特性,数据流特性和数据重用模式。根据我们的观察,许多不同应用程序中的内核代码尽管存在功能差异,但它们共享相同的性能语义。我们可以使用专为各自性能语义设计的硬件加速器来加速执行。
四.加速框架
基于性能语义的概念,我们开发了一个硬件/软件协调加速框架,如图2所示。它有三个方面:加速器的设计,硬件架构和软件工作流程。
4.1性能语义加速器
通过研究各种机器学习算法中的执行内核,我们制定了一套通用的性能语义(PS)。由于加速机会主要来自跨多个循环迭代的操作的并行化,我们的分类基于以下几个方面给出基本操作Result=Source1op Source2,op是一种操作,例如当op为加法时,表示的是两个元素的和。
方面1:计算并行度
循环迭代中的结果依赖性决定了可以用于加速的并行性类型。我们将并行性分为三种类型:(1)完全并行,在命名的后缀中用p表示。如图3(a)和(c)中的例子所示,其中A[i]和A[idx]的元素可以并行计算;(2)树并行,在命名的后缀中用t表示。如图3(b)所示,它对应于一种特殊类型的循环携带依赖性,适用于树状加速度,如图1(e)所示;(3)不规则或无法并行,难以加速或根本不可加速,例如,代码A[i+1]=A[i]+B[i]呈现对A[i]元素具有携带依赖性,并且它们的计算只能按顺序执行。
方面2:数据来源
源数据是影响加速器数据路径设计的另一个重要因素。每个源数据可以是以下三种类型之一:(1)缓存元素,在命名的后缀中用D(direct)表示,也即元素来自本地缓存。如图3(a)和(b)所示(2)索引变量,在命名的后缀中用I(index)表示。也即元素的索引需要在计算中得到,但是索引的计算没有依赖性。这样可以先将索引计算出来,再根据访问模式来确定并行模式,如图3(c)所示。(3)不规则,元素的访问来源无法确定或者元素的索引计算具有依赖性,这一类计算只能按顺序执行。
综上所述,我们有图3所示的3种基本的性能语义的一个示例,一种是累次操作形式,图3(b)显示了当op为加法的时候,性能语义代码的形式,这是对一个数组的所有元素求和的代码,这样的累次操作可以用树的形式进行并行化。另外一种是全并行的模式,图3(a)给出了当op为加法的时候性能语义的代码形式,这是对一个数组的所有元素加上一个值的代码,这个值可以是定值也可以是另一个数组的元素。最后一种是地址类型,在前两种模式中,对数组的遍历都是依次且全面的,但往往很多时候我们并不需要顺序且全部遍历所有元素,很可能只遍历其中某一段元素,或是间隔几个元素访问,那么这时需要用到第三种性能语义也即地址型,上述的应用需要先把我们要访问的元素的索引(地址)算出来,这个索引和循环变量i有关,i是一个递增或者递减的变量,那么我们可以先并行一次性将所有的地址算出来,然后对这些地址的元素进行并行操作,图3(c)显示了对一个数组从base开始的连续p个元素每个加5的代码。
4.2加速器硬件架构
我们的输入部分由两个512KB的SRAM缓存组成,而输出部分由一个512KB的SRAM缓存组成,输入部分的控制信号决定地址送往哪一个buffer。如图4所示。
我们的配置器主要由译码器部件组成,输入为硬件API传入的参数,输出一组操作码和输入输出的地址,如图5所示。
根据上文提到的三种性能语义,我们设计了三种不同的性能语义数据通路,如图6~8所示。
我们总的加速器架构如图9所示。
4.3软件工作流程
基于性能语义的加速框架不仅在其加速能力方面具有多种用途,而且对软件开发人员和最终用户而言也几乎是透明的。ML软件开发人员只需对其原始代码进行最少的修改和重新编译,以便重新定位到VAB增强的硬件平台。图2显示了软件组件及其工作流程。基于FPGA的硬件平台和ASIC平台的工作流程存在一些差异。在本文中,我们仅在FPGA上验证了我们的设计,因此随后在工作流程上的介绍将基于FPGA实现。
首先,为内核开发了一组库函数。这些库函数以符合FPGA高级综合要求的样式编写,并使用pragma注释来表示硬件约束。其次,给定机器学习应用程序,用户需要识别代码中的内核,并通过对相应/库函数的函数调用来重写它。这称为内核映射步骤,如图2所示。另一个人为干预发生在编译步骤,其中用户选择在应用程序中调用的库函数作为硬件合成的模块。可以通过FPGA IDE交互完成此选择。编译后,将生成硬件API调用以调用所选函数,其他代码将编译为在CPU上运行的软件二进制文件。
可以看出,整个过程对于软件开发人员来说几乎是透明的,他们只需要用库调用替换内核,并选择这些库调用作为要合成的加速器。实际上,如果应用程序开发人员从一开始就使用库,那么开发人员就不会遇到任何与硬件相关的问题。当开发的应用程序针对没有加速器的平台时,功能调用以软件方式执行。
五.实验
在本节中,我们在Xilinx Ultrascale+zcu104开发板上实现了上文描述的通用框架。该板包含一个四核ARM Cortex-A53处理器,它将运行应用程序的顺序部分,并通过配置器与加速器通信,两者都通过FPGA上的可编程逻辑实现。我们使用一组流行的ML基准来测试加速。
5.1评测算法
表1列出了我们实验中使用的ML基准。这些是当今ML应用中常用的算法。表中列出了每个基准测试的内核。
Benchmark | PS kernels |
kNN | PS_p_d,PS_t_d |
Naive Bayes | PS_t_d |
PCA | PS_p_d,PS_t_d,PS_p_I,PS_t_I |
SVM | PS_p_d,PS_t_d |
CNN(vgg16) | PS_p_d,PS_t_d,PS_p_I,PS_t_I |
以kNN基准为例,它通过测量不同样本之间的距离对样本进行分类。整个过程中最耗时的部分是每个测试样本的距离计算,其伪代码如图10(a)所示。该内核由两个2内核组成,分别是PS_p_d和PS_t_d,如图10(b)所示。
5.2评测基准
我们使用-o3优化编译的纯软件ML算法作为性能比较的基线,并且纯软件版本在FPGA中的ARM处理器上运行。消耗的CPU周期数用作我们的性能指标。我们在实验期间使用32位浮点数进行计算。虽然FPGA不适合浮点计算,但以前的研究表明,将浮点计算转换为定点计算的精度损失在可接受的范围内,我们的目标是强调加速框架的加速能力,而不是特定FPGA的加速能力。
我们使用UCI气体传感器数据集作为该实验的数据集。
5.3实验结果
图11显示了FPGA加速实现的加速。该实验使用Xilinx SDx IDE2018.3完成。所有加速结果均来自1024多个实验的平均值。如图9所示,与ARM CPU相比,我们的加速器在每个算法上都取得了显着的性能提升,速度从15倍到40倍不等。
六.总结
在本文中,我们提出了一种多功能加速框架,可以加速各种ML算法的执行。与传统的自定义设计不同,我们的加速器专为性能语义而不是特定的算法内核而设计。ML程序员只需要通过调用性能语义的库函数来编写他们的算法,并且代码将被编译为硬件API以进行这些库调用。通过这种方式,加速不仅通用,而且对软件程序员也是透明的。
我们在FPGA上实现了框架,其中嵌入式ARM处理器运行软件二进制文件,加速器硬件用于加速性能语义内核。通过使用一套流行的ML算法,我们验证了我们的框架在广泛覆盖范围和显着加速比方面的有效性。
对于未来的工作,我们将专注于扩大加速器的加速范围,以覆盖更多应用,而不仅仅是机器学习应用。此外,我们可以从程序的分析开始,以便硬件可以自动识别和加速更多性能语义内核。
本发明的另一目的在于提供一种基于并行加速循环体的性能语义加速机制的应用,所述基于并行加速循环体的性能语义加速机制的应用,用于任意需架构加速学习的程序使用。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种基于并行加速循环体的性能语义加速机制,其特征在于,所述性能语义加速机制包括:
S1、观察计算和数据密集型的ML算法查找出其共同模式;
S2、将找出的共同模式抽象成与性能相关的程序行为构成性能语义;
S3、对性能语义进行加速形成通用加速机制。
2.根据权利要求1所述的性能语义加速机制,其特征在于,所述步骤S2中性能语义可映射到许多具体的功能语义上,并通过为抽象提供简单的配置信息,将抽象还原到特定功能。
3.根据权利要求2所述的性能语义加速机制,其特征在于,所述加速机制在使用中直接调取其中的软件函数逻辑形成一个配置虚化的硬件框架。
4.根据权利要求3所述的性能语义加速机制,其特征在于,所述加速机制主要来自跨多个循环的带的操作的并行化,通过计算并行度和数据来源给出基本操作Result = Source1op Source2,其中,op是一种操作。
5.根据权利要求4所述的性能语义加速机制,其特征在于,所述计算并行度中虚幻爹地啊中结果依赖性决定了可用于加速的并行性,并将并行性分为以下三种类型:
A、完全并行,在命名的后缀中用p表示;
B、树并行,在命名的后缀中用t表示;
C、不规则或无法并行,难以加速或根本不可加速。
6.根据权利要求4或5所述的性能语义加速机制,其特征在于,所述数据来源中数据源是影响加速器数据路径设计的另一个重要因素,每个源数据分为以下三种类型:
A1、缓存元素,在命名的后缀中用D(direct)表示;
B1、索引变量,在命名的后缀中用I(index)表示;
C1、不规则,元素的访问来源无法确定或者元素的索引计算具有依赖性,这一类计算只能按顺序执行。
7.根据权利要求6所述的性能语义加速机制,其特征在于,所述步骤S1中ML算法大部分执行时间都花在内部循环中嵌入的执行内核上。
8.根据权利要求6所述的性能语义加速机制,其特征在于,所述步骤S1中ML算法的内核变现出强大的数据级并行性。
9.一种根据权利要求1-8任一项所述基于并行加速循环体的性能语义加速机制的应用,其特征在于,所述基于并行加速循环体的性能语义加速机制的应用,用于任意需架构加速学习的程序使用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910964789.5A CN110717587B (zh) | 2019-10-11 | 2019-10-11 | 一种基于并行加速循环体的性能语义加速方法及其应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910964789.5A CN110717587B (zh) | 2019-10-11 | 2019-10-11 | 一种基于并行加速循环体的性能语义加速方法及其应用 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110717587A true CN110717587A (zh) | 2020-01-21 |
CN110717587B CN110717587B (zh) | 2024-06-18 |
Family
ID=69211467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910964789.5A Active CN110717587B (zh) | 2019-10-11 | 2019-10-11 | 一种基于并行加速循环体的性能语义加速方法及其应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110717587B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070169059A1 (en) * | 2005-12-13 | 2007-07-19 | Poseidon Design Systems Inc. | Compiler method for extracting and accelerator template program |
US20100199257A1 (en) * | 2009-01-31 | 2010-08-05 | Ted James Biggerstaff | Automated Partitioning of a Computation for Parallel or Other High Capability Architecture |
US20110119467A1 (en) * | 2009-11-13 | 2011-05-19 | Nec Laboratories America, Inc. | Massively parallel, smart memory based accelerator |
CN106383695A (zh) * | 2016-09-14 | 2017-02-08 | 中国科学技术大学苏州研究院 | 基于fpga的聚类算法的加速系统及其设计方法 |
US20170235824A1 (en) * | 2016-02-11 | 2017-08-17 | Ebay Inc. | Semantic category classification |
US20180189638A1 (en) * | 2016-12-31 | 2018-07-05 | Intel Corporation | Hardware accelerator template and design framework for implementing recurrent neural networks |
CN108932135A (zh) * | 2018-06-29 | 2018-12-04 | 中国科学技术大学苏州研究院 | 基于fpga的分类算法的加速平台设计方法 |
-
2019
- 2019-10-11 CN CN201910964789.5A patent/CN110717587B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070169059A1 (en) * | 2005-12-13 | 2007-07-19 | Poseidon Design Systems Inc. | Compiler method for extracting and accelerator template program |
US20100199257A1 (en) * | 2009-01-31 | 2010-08-05 | Ted James Biggerstaff | Automated Partitioning of a Computation for Parallel or Other High Capability Architecture |
US20110119467A1 (en) * | 2009-11-13 | 2011-05-19 | Nec Laboratories America, Inc. | Massively parallel, smart memory based accelerator |
US20170235824A1 (en) * | 2016-02-11 | 2017-08-17 | Ebay Inc. | Semantic category classification |
CN106383695A (zh) * | 2016-09-14 | 2017-02-08 | 中国科学技术大学苏州研究院 | 基于fpga的聚类算法的加速系统及其设计方法 |
US20180189638A1 (en) * | 2016-12-31 | 2018-07-05 | Intel Corporation | Hardware accelerator template and design framework for implementing recurrent neural networks |
CN108932135A (zh) * | 2018-06-29 | 2018-12-04 | 中国科学技术大学苏州研究院 | 基于fpga的分类算法的加速平台设计方法 |
Non-Patent Citations (4)
Title |
---|
CHEN TIANSHI,ET AL.: "DianNao:a small-footprint high-throughputaccelerator for ubiquitous machine-learning", pages 269 - 284 * |
V.SZE ET AL.: "Efficient Processing of DeepNeural Networks:A Tutorial and Survey", vol. 105, no. 105, pages 2295 - 2329 * |
张奕玮: "基于FPGA的高能效比LSTM预测算法加速器的设计与实现", pages 1 - 82 * |
王思阳: "基于FPGA的卷积神经网络加速器设计", pages 1 - 71 * |
Also Published As
Publication number | Publication date |
---|---|
CN110717587B (zh) | 2024-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Almomany et al. | Optimized implementation of an improved KNN classification algorithm using Intel FPGA platform: Covid-19 case study | |
Zierke et al. | FPGA acceleration of the phylogenetic likelihood function for Bayesian MCMC inference methods | |
Orchard et al. | Ypnos: declarative, parallel structured grid programming | |
Henry et al. | Compilation of sparse array programming models | |
US20100250564A1 (en) | Translating a comprehension into code for execution on a single instruction, multiple data (simd) execution | |
Chowdhury et al. | Autogen: Automatic discovery of efficient recursive divide-8-conquer algorithms for solving dynamic programming problems | |
Falk et al. | Source code optimization techniques for data flow dominated embedded software | |
Tithi et al. | Exploiting spatial architectures for edit distance algorithms | |
Buluç et al. | High-productivity and high-performance analysis of filtered semantic graphs | |
Gosmann et al. | Automatic optimization of the computation graph in the Nengo neural network simulator | |
Agarwal et al. | Auto-vectorizing tensorflow graphs: Jacobians, auto-batching and beyond | |
CN110717587B (zh) | 一种基于并行加速循环体的性能语义加速方法及其应用 | |
Isaac–Chassande et al. | Dedicated hardware accelerators for processing of sparse matrices and vectors: a survey | |
Zhang et al. | Generating unified platforms using multigranularity domain DSE (MG-DmDSE) exploiting application similarities | |
Anderson | A framework for composing high-performance opencl from python descriptions | |
Winterstein | Separation Logic for High-level Synthesis | |
Li et al. | A Versatile Acceleration Framework for Machine Learning Algorithms | |
Xiao et al. | GAHLS: an optimized graph analytics based high level synthesis framework | |
Remmelg | Automatic performance optimisation of parallel programs for GPUs via rewrite rules | |
Tithi | Engineering high-performance parallel algorithms with applications to bioinformatics | |
Cho et al. | OpenCL and parallel primitives for digital TV applications | |
Nakasato et al. | A compiler for high performance computing with many-core accelerators | |
Root | Optimizing Vector Instruction Selection for Digital Signal Processing | |
Chang et al. | Adaptive computing in NASA multi-spectral image processing | |
Oancea | Lecture Notes for the Software Track of the PMPH Course |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |