CN111176962A - Fpga平台及其性能评估与设计优化的方法、存储介质 - Google Patents
Fpga平台及其性能评估与设计优化的方法、存储介质 Download PDFInfo
- Publication number
- CN111176962A CN111176962A CN201911252826.6A CN201911252826A CN111176962A CN 111176962 A CN111176962 A CN 111176962A CN 201911252826 A CN201911252826 A CN 201911252826A CN 111176962 A CN111176962 A CN 111176962A
- Authority
- CN
- China
- Prior art keywords
- data
- amount
- fpga platform
- total
- performance
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3452—Performance evaluation by statistical analysis
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Hardware Design (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请主要是涉及FPGA平台及其性能评估与设计优化的方法、存储介质,该方法包括:将FPGA平台的待运行算法的待处理数据按照变量进行分类;其中,每一个变量所对应的数据被划分到同一个数据类别,数据类别的数目等于变量的数目,且不小于2;计算各个数据类别所需的计算量及读取量;对各个数据类别的计算量及读取量进行求和,以计算待运行算法的总计算量及总读取量;基于总计算量及总读取量对FPGA平台进行性能评估和/或设计优化。本申请基于待运行算法对待处理数据按照变量进行分类,以便于直观地反映出各个数据类别中待处理数据对待运行算法的计算量、读取量的贡献,从而基于总计算量及总读取量对FPGA平台进行分析,以便于找到FPGA平台的性能瓶颈。
Description
技术领域
本申请涉及高性能计算的技术领域,具体是涉及FPGA平台及其性能评估与设计优化的方法、存储介质。
背景技术
随着大数据、人工智能的快速发展,越来越多的数据密集、计算密集的算法被提出,更多的计算量、更快的处理速度对计算设备性能提出了更高的要求。相较于常用的诸如GPU(图形处理器)、CPU(中央处理器)和ASIC(专用集成电路)的计算设备,FPGA(FieldProgrammable Gate Array,现场可编程门阵列)平台具有良好的灵活性、出色的性能及较低的功耗等优点,使得FPGA平台在高性能、低功耗、算法多样的应用场景中被大量使用。
发明内容
本申请实施例提供了一种FPGA平台的性能评估及设计优化的方法,其中,该方法包括:将FPGA平台的待运行算法的待处理数据按照变量进行分类;其中,每一个变量所对应的数据被划分到同一个数据类别,数据类别的数目等于变量的数目,且不小于2;计算各个数据类别所需的计算量及读取量;对各个数据类别的计算量及读取量进行求和,以计算待运行算法的总计算量及总读取量;基于总计算量及总读取量对FPGA平台进行性能评估和/或设计优化。
本申请实施例还提供了一种FPGA平台,其中,该FPGA平台包括存储器及处理器,存储器与处理器耦接,存储器用于存储程序数据,处理器用于执行程序数据,以实现上述方法。
本申请实施例进一步提供了一种计算机存储介质,用于存储计算机程序,其中,计算机程序在被处理器执行时,实现上述方法。
本申请的有益效果是:本申请提供的方法基于待运行算法对待处理数据按照变量进行分类,使得每一个变量所对应的数据被划分到同一个数据类别,以便于直观地反映出各个数据类别中待处理数据对待运行算法的计算量、读取量的贡献,从而基于待运行算法的总计算量及总读取量对FPGA平台进行分析,以便于找到FPGA平台的性能瓶颈,从而指导FPGA平台的设计优化。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本申请提供的FPGA平台的性能评估及设计优化的方法一实施例的流程示意图;
图2是图1中步骤S104一实施方式的流程示意图;
图3是本申请提供的FPGA平台一实施例的结构示意图;
图4是本申请提供的计算机存储介质一实施例的结构示意图。
具体实施方式
下面结合附图和实施例,对本申请作进一步的详细描述。特别指出的是,以下实施例仅用于说明本申请,但不对本申请的范围进行限定。同样的,以下实施例仅为本申请的部分实施例而非全部实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本申请所描述的实施例可以与其它实施例相结合。
本申请的发明人经过长期的研究发现:使用FPGA平台的一个重要问题是FPGA电路设计实现的性能评估,也即是同一个算法在FPGA平台上可以有多种设计方案,每种设计方案实现的性能都可能不一样。因此,评估设计方案所能实现的性能是预估性能瓶颈、指导设计优化的关键。另外,目前大都是针对CNN(Convolutional Neural Networks,卷积神经网络)算法建立数学模型,对算法整体进行分析;并没有考虑算法内部不同变量对应数据的不同特点,也没有为不同变量优内存读取化指明方向。为此,本申请提出了如下实施例。
参阅图1,图1是本申请提供的FPGA平台的性能评估及设计优化的方法一实施例的流程示意图。该方法包括:
S101:将FPGA平台的待运行算法的待处理数据按照变量进行分类;其中,每一个变量所对应的数据被划分到同一个数据类别,数据类别的数目等于变量的数目,且不小于2。
本申请实施例中,待运行算法至少包括矩阵或向量的乘法和/或加法运算等预设算法。其中,加法算法可以具体包括数据之间的加法和减法。对于其它类型的运算而言,乘法算法也可以具体包括数据之间的乘法和除法。进一步地,基于上述预设算法,FPGA平台会对待处理数据进行处理,以计算得到运算结果。
对于某一算法中的大量数据而言,其中每一个数据参与运算的总次数并不一定是完全一样的。例如对于k*Amn(k可以为常数,Amn可以表示为包含(m×n)个数据的矩阵,并具体包含(m×n+1)个数据)这一运算而言,其中变量的数目为2;并且常数k参与运算的总次数为(m×n)次,矩阵Amn中每一个数据参与运算的总次数为1次。换句话说,在FPGA平台进行上述运算的过程中,常数k会被读取(m×n)次;而矩阵Amn中每一个数据仅会被读取1次。为此,可以将常数k作为一类数据,而将矩阵Amn中的数据作为另一类数据,也即是数据类别的数目为2。
综上,本申请实施例另辟蹊径地基于待运行算法对待处理数据按照变量进行分类,使得每一个变量所对应的数据被划分到同一个数据类别,以便于直观地反映出各个数据类别中待处理数据对待运行算法的计算量、读取量的贡献,可以为数据读取的优化指明方向,后文中将进行详细的说明。
S102:计算各个数据类别所需的计算量及读取量。
基于上述的详细描述,对于某一算法而言,各个数据类别所需的计算量及读取量也并不一定是完全一样的。因此,为了更好地分析各个数据类别在算法运行过程中对计算量及读取量的贡献,本申请另辟蹊径地提出单个数据单次参与计算的贡献度C和单个数据的总参与次数N两个基础分析指标。
一方面,将各个数据类别中的各个待处理数据参与单次运算时,单次运算所涉及的运算次数及参与单次运算的待处理数据的数目的比值作为各个待处理数据的单次计算贡献度。因此,各个待处理数据的单次计算贡献度C可以用公式(1)进行描述:
C=Ops/Data (1)
上述公式(1)中,Ops表示单次运算所涉及的运算次数,Data表示参与单次运算的待处理数据的数目。例如对于上述k*Amn这一运算而言,单次运算可以看作是两数相乘,因此单次运算所涉及的运算次数为1,参与单次运算的待处理数据的数目为2,使得各个待处理数据的单次计算贡献度为1/2。
另一方面,可以将各个待处理数据重复参与单次运算的重复次数作为该数据的总参与次数N。例如对于上述k*Amn这一运算而言,常数k的总参与次数为(m×n)次,矩阵Amn中每一个数据的总参与次数为1次。
针对每一个数据类别,将各个待处理数据的单次计算贡献度与各个待处理数据重复参与单次运算的重复次数的乘积结果进行均值处理,以得到各个数据类别的平均贡献度。因此,各个数据类别的平均贡献度CA可以用公式(2)进行描述:
上述公式(2)中,n表示某一数据类别中待处理数据的数目,Ci表示第i个待处理数据的单次计算贡献度,Ni表示第i个待处理数据重复参与单次运算的重复次数。
进一步地,将各个数据类别中的待处理数据的数目及平均贡献度的乘积结果作为各个数据类别所需的计算量。此时,各个数据类别所需的计算量可以用式子(DA×CA)进行描述。其中DA表示各个数据类别中的待处理数据的数目。
针对每一个数据类别,将各个待处理数据的重复次数进行均值处理,以得到各个数据类别的平均重复次数。因此,各个数据类别的平均重复次数RA可以用公式(3)进行描述:
上述公式(3)中,n表示某一数据类别中待处理数据的数目,Ni表示第i个待处理数据重复参与单次运算的重复次数。
进一步地,将各个数据类别中的待处理数据的数目、平均重复次数及数据位宽的乘积结果作为各个数据类别所需的读取量。此时,各个数据类别所需的读取量可以用式子(DA×RA×DS)进行描述。其中DS表示各个数据类别的数据位宽。
需要说明的是,对于单精度的32位浮点数而言,每一个数据的位宽为4字节;对于双精度的64位浮点数而言,每一个数据的位宽为8字节。
S103:对各个数据类别的计算量及读取量进行求和,以计算待运行算法的总计算量及总读取量。
基于上述的详细描述,对式子(DA×CA)求和即可得到待运行算法的总计算量,对式子(DA×RA×DS)求和即可得到待运行算法的总读取量。因此,待运行算法的总计算量OA可以用公式(4)进行描述:
上述公式(4)中,m表示待运行算法中数据类别的数目,DAj表示第j个数据类别中的待处理数据的数目,CAj表示第j个数据类别的平均贡献度。
进一步地,待运行算法的总读取量TA可以用公式(5)进行描述:
上述公式(5)中,m表示待运行算法中数据类别的数目,DAj表示第j个数据类别中的待处理数据的数目,RAj表示第j个数据类别的平均重复次数,RAj表示第j个数据类别的数据位宽。
需要说明的是,由于待运行算法可能会涉及非常庞大的计算量及读取量,因此可以借助本领域常用等式(1G=1000M≈1024M=210M)对上述公式(4)及(5)的计算结果进行数量级层面的换算,使得总计算量可以以GOps(十亿次运算)为单位进行表示,总读取量可以以GB(十亿字节)为单位进行表示。
下面以2048×1024的矩阵A与1024×1024的矩阵B相乘为例,对上述各个公式及其主要参数进行简单的说明:
对于上述两个矩阵相乘的算法而言,(2048×1024+1024×1024)个待处理数据按照变量可以分为两类,一类可以为矩阵A所包含的(2048×1024)个待处理数据,另一类则可以为矩阵B所包含的(1024×1024)个待处理数据。其中,基于矩阵乘法运算的定义,每一次运算可以看作矩阵A中某一行的元素与矩阵B中某一列对应元素相乘之后再求和。进一步地,矩阵A及矩阵B的数据类型可以为单精度的32位浮点数,因此矩阵A及矩阵B的数据位宽DS可以为4字节。如此,主要的分析结果如下表所示:
由此可知,对于上述两个矩阵相乘的算法而言,矩阵B中各个数据对该算法的计算量、读取量的贡献均要高于矩阵A的。为此,既可以将矩阵B设计为片内存储,也可以为矩阵B分配带宽更大的内存,以增加矩阵B中各个数据的读取效率,后文中将进行详细的说明。
S104:基于总计算量及总读取量对FPGA平台进行性能评估和/或设计优化。
对于FPGA平台而言,待运行算法的总计算量可以反映其处理器所要承担的负荷,待运行算法的总读取量则可以反映其内存所要承担的负荷。一般地,总计算量越大,处理器所要承担的负荷越大,也即是对处理器的运算性能也就要求越高;总读取量越大,内存所要承担的负荷越大,也即是对内存的读取性能也就要求越高。因此,既可以基于待运行算法的总计算量及总读取量对FPGA平台的性能进行评估,以便于找到FPGA平台的性能瓶颈,又可以基于上述性能瓶颈对FPGA平台的设计进行优化。
参阅图2,图2是图1中步骤S104一实施方式的流程示意图。其中,该实施方式主要用于说明如何基于待运行算法的总计算量及总读取量找到FPGA平台的性能瓶颈,以及如何基于性能瓶颈对FPGA平台的设计进行优化。
一般地,FPGA平台读取数据可以使用DDR DRAM(Double Data Rate,DynamicRandom Access Memory,双倍数据数率动态随机存取内存)和BRAM(Block Random AccessMemory,块随机存取内存)两种内存。其中,DRAM属于片外存储,BRAM属于片内存储;片内存储的读取性能要优于片外存储。进一步地,FPGA平台处理数据的乘法和加法运算时可以使用其内部DSP(Digital Signal Processor,数字信号处理器),使得理论最大运行速度与处理器的使用数量直接相关。
因此,对于一个确定的FPGA平台而言,其理论最高内存带宽及理论最大运行速度都是确定的。其中,理论最高内存带宽Bmax可以用公式(6)进行描述:
上述公式(6)中,n表示该FPGA平台所用内存的种类数目,Width表示第i种内存的内存位宽,fram表示内存运行频率。进一步地,Bmax的单位可以用GB/s(十亿字节每秒)进行表示。
进一步地,理论最大运行速度Pmax可以用公式(7)进行描述:
Pmax=NDSP×fDSP×2 (7)
上述公式(7)中,NDSP表示该FPGA平台所用处理器的数量,fDSP表示处理器的时钟频率,常数2则表示所用处理器在同一时钟脉冲下能够同步执行加法和乘法两种运算。进一步地,Pmax的单位可以用GOps/s(十亿次运算每秒)进行表示。
基于上述的详细描述,根据上述公式(4)-(5)可以分别计算得到待运行算法的总计算量及总读取量。进一步地,由于待运行算法的总计算量与总读取量相互关联,本实施方式将总计算量OA与总读取量TA相除得到常数其单位可以用GOps/GB表示。该常数可以表示待运行算法在FPGA平台上运行时,单位读取量能够支持的计算量。显然,该常数直接揭示了数据读取速度与算法运行速度之间的关系。进一步地,如果FPGA平台以内存带宽B在单位时间内读取数据T1;考虑到数据不一定会被完全使用,则FPGA平台在单位时间内也最多只能以速度P运行算法次。基于此,可以得到如下关系式(8):
上述公式(8)中,P表示待运行算法在FPGA平台上的实际运行速度,B表示FPGA平台在运行算法时读取待处理数据的内存带宽。其中,该内存带宽既包括片内存储在运算时提供的内存带宽,也包括片外存储在运算时提供的内存带宽。
进一步地,由于数据不一定被完全使用,所以≤一个常数。产生这种情况的原因有两个:一是内存带宽不匹配,例如一类数据的内存带宽设计过大,而另一类数据的内存带宽设计过小,使得大带宽的数据等待,无法充分发挥作用,从而导致FPGA平台的实际运行速度小于最优值;二是处理器运算速度过低,数据处理速度低于数据读取速度,导致平台实际运行速度小于最优值。如果是由于内存带宽不匹配导致的,为使公式(8)取得等号,本申请提出等式以指导如何为不同数据匹配相应的内存带宽。其中,TAj表示第j个数据类别的读取量,Bj表示第j个数据类别所分配内存的带宽。显然,该等式成立意味着各个数据类别的内存带宽与其读取量成正比,以使得待运行算法在运行时读取的各类数据都能够被完全利用,从而改善内存带宽过大或过小的问题。也即是本申请在各个数据类别之间对内存的带宽进行分配,以使得各个数据类别的读取量与其所分配的带宽的比值趋于相等,从而优化FPGA平台的性能。进一步地,本申请根据各个数据类别中的待处理数据重复参与单次运算的重复次数,设置各个数据类别从FPGA平台的片外存储到片内存储的读取优先级别。其中,重复次数越大,读取优先级别越高,以优化不同数据类别的读取效率,从而优化FPGA平台的性能。并且,对于重复次数为1的数据类别,也即是其待处理数据仅参与一次单次运算,可以将该数据类别的待处理数据仅存储于片内DDR DRAM。如果是处理器运算速度导致的,使得公式(8)无法取得等号,那么FPGA平台性能瓶颈在于平台,运算速度等于实际使用处理器的运算速度。
基于上述的详细分析,步骤S104具体可以包括:
S1041:根据FPGA平台的内存的读取性能、总计算量及总读取量计算得到FPGA平台的第一运行速度。
本实施方式中,第一运行速度可以等于总计算量与总读取量的比值与内存的带宽的乘积结果。此时,第一运行速度P1可以用公式(9)进行描述:
上述公式(9)中,总计算量OA可以用运算次数为单位进行表示,总读取量TA可以用字节为单位进行表示,内存的带宽B可以用字节/秒为单位进行表示,以使得第一运行速度P1可以用运算次数/秒为单位进行表示。
S1042:根据FPGA平台的处理器的运算性能计算得到FPGA平台的第二运行速度。
本实施方式中,第二运行速度可以等于处理器的数量、时钟频率及能够在同一时钟脉冲下同步执行的运算次数的乘积结果,并以运算次数/秒为单位进行表示。此时,第二运行速度P2可以用公式(10)进行描述:
P2=Nused×fDSP×N (10)
上述公式(10)中,Nused表示该FPGA平台中处理器的数量,fDSP表示处理器的时钟频率,N则表示所用处理器能够在同一时钟脉冲下同步执行的运算次数。例如,N=2则表示所用处理器在同一时钟脉冲下能够同步执行加法和乘法两种运算。
S1043:比较第一运行速度与第二运行速度的大小。
在步骤S1043的比较结果为第一运行速度小于第二运行速度时,执行步骤S1044;而在步骤S1043的比较结果为第二运行速度小于第一运行速度时,执行步骤S1045。
本实施方式中,通过比较第一运行速度与第二运行速度的大小即可找到FPGA平台的性能瓶颈,并可以基于比较结果进一步对FPGA平台的设计进行优化。具体如下:
S1044:判定FPGA平台的性能受制于内存的读取性能。
本实施方式中,在处理器的运算性能已确定的情况下,通过调整内存的读取性能,可以使得第一运行速度大于或等于第二运行速度,从而优化FPGA的设计。
S1045:判定FPGA平台的性能受制于处理器的运算性能。
本实施方式中,在内存的读取性能已确定的情况下,通过调整处理器的运算性能,可以使得第二运行速度大于或等于第一运行速度,从而优化FPGA的设计。
下面基于上述2048×1024的矩阵A与1024×1024的矩阵B相乘的例子,对本实施方式的可行性进行验证,并对其中的主要参数进行简单的说明:
本实施方式基于OpenCL 17.1开发环境,FPGA平台为友晶C5P开发板,开发板进一步通过PCIe接口与电脑主板相连并与主机进行通信。
进一步地,本实施方式总共验证三次。其中,第一次验证不使用片内存储,所有待处理数据均从片外存储读取,也即是预先将待处理数据存入片外DDR DRAM;第二次使用片内存储,也即是预先将待处理数据存入片内BRAM(其中,片内BRAM的总位宽为64位,频率为400MHz);第三次使用片内存储(其中,片内BRAM的总位宽为2048位,频率为400MHz)。如此,主要的分析结果如下表所示:
B | P<sub>1</sub> | N<sub>used</sub> | f<sub>DSP</sub> | P<sub>2</sub> | P | |
验证一 | 0.2 | <u>0.05</u> | 1 | 0.13 | 0.26 | 0.05 |
验证二 | 3.2 | 0.8 | 1 | 0.13 | <u>0.26</u> | 0.24 |
验证三 | 100 | 25 | 32 | 0.13 | <u>8.32</u> | 8.24 |
需要说明的是,P1是基于公式(9)计算得到的FPGA平台的第一运行速度,P2基于公式(10)计算得到的FPGA平台的第二运行速度,P则表示FPGA平台的实际运行速度。
由此可知,验证一满足步骤S1043的比较结果,FPGA平台的性能瓶颈在于内存的读取性能,也即是待处理数据存放于片外DDR DRAM,导致内存带宽过低。此时,如果想要改善FPGA平台的性能,可以将待处理数据预先存入片内BRAM,例如可以将矩阵B的数据设计为片内存储,以增加矩阵B中数据的读取效率。验证二也满足步骤S1043的比较结果,并且FPGA平台的实际运行速度约等于一个处理器的理论运行速度,说明FPGA平台的性能瓶颈在于处理器的运算性能,导致处理数据的速度低于数据读取的速度。此时,如果想要改善FPGA平台的性能,可以增加处理器的数量,以使得更多的处理器能够参数运算。进一步地,验证三与验证二类似,虽然FPGA平台的读取性能及运算性能均得到一定程度的优化,但是FPGA平台的性能瓶颈依旧在于处理器的运算性能。这主要是因为读取性能的优化(内存优化)与运算性能的优化(处理器优化)不匹配,导致处理器的运算速度依旧跟不上内存的读取速度。
基于上述的详细分析,在对FPGA平台的设计进行优化时,可以尽可能减小第一运行速度与第二运行速度之间的差值,也即是尽可能地使得处理器的运算速度与内存的读取速度相匹配。
图3是本申请提供的FPGA平台一实施例的结构示意图。
本实施例的FPGA平台300包括存储器301及处理器302,存储器301与处理器302可以借助一条数据总线耦接。其中,存储器301可以为片外存储和/或片内存储,并用于存储程序数据。进一步地,处理器302可以为数字信号处理器,并用于执行该程序数据,以实现如下方法步骤:
将FPGA平台的待运行算法的待处理数据按照变量进行分类;其中,每一个变量所对应的数据被划分到同一个数据类别,数据类别的数目等于变量的数目,且不小于2;计算各个数据类别所需的计算量及读取量;对各个数据类别的计算量及读取量进行求和,以计算待运行算法的总计算量及总读取量;基于总计算量及总读取量对FPGA平台进行性能评估和/或设计优化。
需要说明的是,本实施例的FPGA平台300是基于上述任一方法实施例的一实体终端,其实施原理和步骤类似,在此不再赘述。因此,该程序数据在被处理器302执行时,还可以实现上述任一实施例中的其它方法步骤,在此不再赘述。
图4是本申请提供的计算机存储介质一实施例的结构示意图。
本实施例的计算机存储介质400用于存储计算机程序401,计算机程序401被处理器执行以实现如下方法步骤:
将FPGA平台的待运行算法的待处理数据按照变量进行分类;其中,每一个变量所对应的数据被划分到同一个数据类别,数据类别的数目等于变量的数目,且不小于2;计算各个数据类别所需的计算量及读取量;对各个数据类别的计算量及读取量进行求和,以计算待运行算法的总计算量及总读取量;基于总计算量及总读取量对FPGA平台进行性能评估和/或设计优化。
需要说明的是,本实施例的计算机程序401所实现的方法是基于上述任一方法实施例的,其实施原理和步骤类似。因此,计算机程序401在被处理器执行时,还可以实现上述任一实施例中的其它方法步骤,在此不再赘述。
本申请的实施例以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的部分实施例,并非因此限制本申请的保护范围,凡是利用本申请说明书及附图内容所作的等效装置或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (11)
1.一种FPGA平台的性能评估及设计优化的方法,其特征在于,所述方法包括:
将所述FPGA平台的待运行算法的待处理数据按照变量进行分类;其中,每一个所述变量所对应的数据被划分到同一个数据类别,所述数据类别的数目等于所述变量的数目,且不小于2;
计算各个所述数据类别所需的计算量及读取量;
对各个所述数据类别所述的计算量及读取量进行求和,以计算所述待运行算法的总计算量及总读取量;
基于所述总计算量及所述总读取量对所述FPGA平台进行性能评估和/或设计优化。
2.根据权利要求1所述的方法,其特征在于,所述计算各个所述数据类别所需的计算量及读取量的步骤,包括:
将各个所述数据类别中的所述待处理数据的数目及平均贡献度的乘积结果作为各个所述数据类别所需的计算量;
将各个所述数据类别中的所述待处理数据的数目、平均重复次数及数据位宽的乘积结果作为各个所述数据类别所需的读取量。
3.根据权利要求2所述的方法,其特征在于,所述计算各个所述数据类别所需的计算量及读取量的步骤,还包括:
将各个所述数据类别中的各个所述待处理数据参与单次运算时,所述单次运算所涉及的运算次数及参与所述单次运算的所述待处理数据的数目的比值作为各个所述待处理数据的单次计算贡献度;
针对每一个所述数据类别,将各个所述待处理数据的单次计算贡献度与各个所述待处理数据重复参与所述单次运算的重复次数的乘积结果进行均值处理,以得到各个所述数据类别的平均贡献度;
针对每一个所述数据类别,将各个所述待处理数据的所述重复次数进行均值处理,以得到各个所述数据类别的平均重复次数。
4.根据权利要求1所述的方法,其特征在于,所述基于所述总计算量及所述总读取量对所述FPGA平台进行性能评估和/或设计优化的步骤,包括:
根据所述FPGA平台的内存的读取性能、所述总计算量及所述总读取量计算得到所述FPGA平台的第一运行速度;
根据所述FPGA平台的处理器的运算性能计算得到所述FPGA平台的第二运行速度;
比较所述第一运行速度与所述第二运行速度的大小;
若所述第一运行速度小于所述第二运行速度,则判定所述FPGA平台的性能受制于所述内存的读取性能;
若所述第二运行速度小于所述第一运行速度,则判定所述FPGA平台的性能受制于所述处理器的运算性能。
5.根据权利要求4所述的方法,其特征在于,所述第一运行速度等于所述总计算量与所述总读取量的比值与所述内存的带宽的乘积结果;其中,所述总计算量以运算次数为单位进行表示,所述总读取量以字节为单位进行表示,所述内存的带宽以字节/秒为单位进行表示;
所述第二运行速度等于所述处理器的数量、时钟频率及能够在同一时钟脉冲下同步执行的运算次数的乘积结果,并以运算次数/秒为单位进行表示。
6.根据权利要求4所述的方法,其特征在于,所述基于所述总计算量及所述总读取量对所述FPGA平台进行性能评估和/或设计优化的步骤,还包括:
在所述处理器的运算性能已确定的情况下,通过调整所述内存的读取性能,使得所述第一运行速度大于或等于所述第二运行速度;
在所述内存的读取性能已确定的情况下,通过调整所述处理器的运算性能,使得所述第二运行速度大于或等于所述第一运行速度。
7.根据权利要求4所述的方法,其特征在于,所述基于所述总计算量及所述总读取量对所述FPGA平台进行性能评估和/或设计优化的步骤,还包括:
在各个所述数据类别之间对所述内存的带宽进行分配,以使得各个所述数据类别的读取量与其所分配的带宽的比值趋于相等。
8.根据权利要求4所述的方法,其特征在于,所述基于所述总计算量及所述总读取量对所述FPGA平台进行性能评估和/或设计优化的步骤,还包括:
根据各个所述数据类别中的所述待处理数据重复参与单次运算的重复次数,设置各个所述数据类别从所述FPGA平台的片外存储到片内存储的读取优先级别;其中,所述重复次数越大,所述读取优先级别越高。
9.根据权利要求1所述的方法,其特征在于,所述待运行算法至少包括矩阵或向量的乘法和/或加法运算。
10.一种FPGA平台,其特征在于,所述FPGA平台包括存储器及处理器,所述存储器与所述处理器耦接,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据,以实现如权利要求1-9任一项所述的方法。
11.一种计算机存储介质,用于存储计算机程序,其特征在于,所述计算机程序在被处理器执行时,实现权利要求1-9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/129156 WO2021115039A1 (zh) | 2019-12-02 | 2020-11-16 | Fpga平台及其性能评估与设计优化的方法、存储介质 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911215268 | 2019-12-02 | ||
CN2019112152686 | 2019-12-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111176962A true CN111176962A (zh) | 2020-05-19 |
CN111176962B CN111176962B (zh) | 2021-09-10 |
Family
ID=70650168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911252826.6A Active CN111176962B (zh) | 2019-12-02 | 2019-12-09 | Fpga平台及其性能评估与设计优化的方法、存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111176962B (zh) |
WO (1) | WO2021115039A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021115039A1 (zh) * | 2019-12-02 | 2021-06-17 | 深圳先进技术研究院 | Fpga平台及其性能评估与设计优化的方法、存储介质 |
CN116755639A (zh) * | 2023-08-18 | 2023-09-15 | 深圳大普微电子科技有限公司 | 闪存接口的性能评估方法及相关装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104142874A (zh) * | 2013-12-25 | 2014-11-12 | 中软信息系统工程有限公司 | 一种测试评估国产cpu事务处理能力的方法 |
CN104899385A (zh) * | 2015-06-16 | 2015-09-09 | 中国科学院自动化研究所 | 异构多核的SoC设计评估系统 |
CN106228238A (zh) * | 2016-07-27 | 2016-12-14 | 中国科学技术大学苏州研究院 | 现场可编程门阵列平台上加速深度学习算法的方法和系统 |
CN108140016A (zh) * | 2015-10-12 | 2018-06-08 | 华为技术有限公司 | 确定矩阵-向量相乘的运算最优序列的优化器 |
CN109583006A (zh) * | 2018-10-16 | 2019-04-05 | 浙江工业大学 | 一种基于循环切割和重排的现场可编程门阵列卷积层的动态优化方法 |
US20190250941A1 (en) * | 2016-10-18 | 2019-08-15 | Src Labs, Llc | Fpga platform as a service (paas) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7624209B1 (en) * | 2004-09-15 | 2009-11-24 | Xilinx, Inc. | Method of and circuit for enabling variable latency data transfers |
CN107341101A (zh) * | 2017-06-01 | 2017-11-10 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 度量fpga软件静态质量的方法 |
CN109002601B (zh) * | 2018-07-06 | 2020-09-08 | 西安电子科技大学 | 一种基于Petri网的FPGA系统的验证模型建模方法 |
CN111176962B (zh) * | 2019-12-02 | 2021-09-10 | 深圳先进技术研究院 | Fpga平台及其性能评估与设计优化的方法、存储介质 |
-
2019
- 2019-12-09 CN CN201911252826.6A patent/CN111176962B/zh active Active
-
2020
- 2020-11-16 WO PCT/CN2020/129156 patent/WO2021115039A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104142874A (zh) * | 2013-12-25 | 2014-11-12 | 中软信息系统工程有限公司 | 一种测试评估国产cpu事务处理能力的方法 |
CN104899385A (zh) * | 2015-06-16 | 2015-09-09 | 中国科学院自动化研究所 | 异构多核的SoC设计评估系统 |
CN108140016A (zh) * | 2015-10-12 | 2018-06-08 | 华为技术有限公司 | 确定矩阵-向量相乘的运算最优序列的优化器 |
CN106228238A (zh) * | 2016-07-27 | 2016-12-14 | 中国科学技术大学苏州研究院 | 现场可编程门阵列平台上加速深度学习算法的方法和系统 |
US20190250941A1 (en) * | 2016-10-18 | 2019-08-15 | Src Labs, Llc | Fpga platform as a service (paas) |
CN109583006A (zh) * | 2018-10-16 | 2019-04-05 | 浙江工业大学 | 一种基于循环切割和重排的现场可编程门阵列卷积层的动态优化方法 |
Non-Patent Citations (2)
Title |
---|
孙凡: "卷积神经网络加速器的实现与优化", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
邵翠萍: "面向数字SoC芯片的单粒子效应探测技术研究", 《中国博士学位论文全文数据库》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021115039A1 (zh) * | 2019-12-02 | 2021-06-17 | 深圳先进技术研究院 | Fpga平台及其性能评估与设计优化的方法、存储介质 |
CN116755639A (zh) * | 2023-08-18 | 2023-09-15 | 深圳大普微电子科技有限公司 | 闪存接口的性能评估方法及相关装置 |
CN116755639B (zh) * | 2023-08-18 | 2024-03-08 | 深圳大普微电子科技有限公司 | 闪存接口的性能评估方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111176962B (zh) | 2021-09-10 |
WO2021115039A1 (zh) | 2021-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107844828B (zh) | 神经网络中的卷积计算方法和电子设备 | |
CN110413255B (zh) | 人工神经网络调整方法和装置 | |
US20210133278A1 (en) | Piecewise quantization for neural networks | |
US20190243609A1 (en) | Method and processing apparatus for performing arithmetic operation | |
CN111176962B (zh) | Fpga平台及其性能评估与设计优化的方法、存储介质 | |
US20220236909A1 (en) | Neural Network Computing Chip and Computing Method | |
CN110738315A (zh) | 一种神经网络精度调整方法及装置 | |
CN112668708B (zh) | 一种提高数据利用率的卷积运算装置 | |
CN110555516A (zh) | 基于FPGA的YOLOv2-tiny神经网络低延时硬件加速器实现方法 | |
CN111026544A (zh) | 图网络模型的节点分类方法、装置及终端设备 | |
US20190311266A1 (en) | Device and method for artificial neural network operation | |
CN112598123A (zh) | 神经网络的权值的量化方法、量化装置及存储介质 | |
CN113283587A (zh) | 一种Winograd卷积运算加速方法及加速模块 | |
TW202001701A (zh) | 影像的量化方法及神經網路的訓練方法 | |
US20210097397A1 (en) | Information processing apparatus and information processing method | |
CN112988229B (zh) | 基于异构计算的卷积神经网络资源优化配置方法 | |
JP7188237B2 (ja) | 情報処理装置、情報処理方法、情報処理プログラム | |
CN114118381B (zh) | 基于自适应聚合稀疏通信的学习方法、装置、设备及介质 | |
CN113870090B (zh) | 实现函数的方法、图形处理装置、系统和介质 | |
US20230072535A1 (en) | Error mitigation for sampling on quantum devices | |
CN115328440A (zh) | 一种基于2d脉动阵列的通用稀疏矩阵乘法实现方法及装置 | |
CN113986816A (zh) | 可重构计算芯片 | |
CN113705784A (zh) | 一种基于矩阵共享的神经网络权重编码方法及硬件系统 | |
JP7137067B2 (ja) | 演算処理装置、学習プログラム及び学習方法 | |
CN117520607B (zh) | 一种流表压缩方法、计算机设备及介质 |
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 | ||
GR01 | Patent grant |