CN113255270B - 一种雅克比模版计算加速方法、***、介质及存储设备 - Google Patents
一种雅克比模版计算加速方法、***、介质及存储设备 Download PDFInfo
- Publication number
- CN113255270B CN113255270B CN202110528889.0A CN202110528889A CN113255270B CN 113255270 B CN113255270 B CN 113255270B CN 202110528889 A CN202110528889 A CN 202110528889A CN 113255270 B CN113255270 B CN 113255270B
- Authority
- CN
- China
- Prior art keywords
- chip
- calculation
- fpga
- iteration
- template
- 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.)
- Active
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 131
- 238000000034 method Methods 0.000 title claims abstract description 41
- 230000001133 acceleration Effects 0.000 title claims abstract description 28
- 230000002688 persistence Effects 0.000 claims abstract description 10
- 238000005192 partition Methods 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 15
- 238000000638 solvent extraction Methods 0.000 claims description 9
- 239000000872 buffer Substances 0.000 claims description 6
- 238000004422 calculation algorithm Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 14
- 238000004590 computer program Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 239000005441 aurora Substances 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/02—System on chip [SoC] design
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种雅克比模版计算加速方法、***、介质及存储设备,在雅克比模版计算的初始迭代状态,FPGA芯片分别运行第一类六边形分块计算内容;将各FPGA芯片的片上BU保存成Cell数据用于下一类迭代;进行第二类六边形分块运算,保存运算结果,将下次迭代所需的数据存入片上BU;重复以上步骤,分别迭代完成第一类六边形分块计算和第二类六边形分块计算,直到整个模版计算的时间轴内的迭代实例运算完毕,得到最终步数据OC;将最终步数据OC从各FPGA芯片的片上BU输出至片外BRAM,数据持久化后得到雅克比模版计算结果。本发明通过设计FPGA芯片板件数据共享策略,实现了模版计算的加速算法,有效提高了多FPGA芯片加速模版计算效率,有效减少了模版计算的耗时。
Description
技术领域
本发明属于电子技术领域,具体涉及一种雅克比模版计算加速方法、***、介质及存储设备。
背景技术
模版计算(Stencil Computation)是一种根据固定的“模版”形式迭代更新数组元素值的计算方式。常用于流体动力学计算和电磁学等科学计算的数值模拟。在众多的模版计算类别中,雅克比(Jacobi)计算在线性方程组的求解领域具有广泛的研究和广泛的应用。
图1为1D Jacobi计算示意图,其中横轴为空间维度i,纵轴为时间维t,图中每一个实心黑点表示一个迭代实例(cell),所有迭代实例组成了迭代空间。1DJacobi由于空间维度为一维,所以其迭代空间为二维空间。箭头方向表示迭代实例之间的依赖关系,其中,箭头指向方向的迭代实例称为目标实例(target),箭头发出方向的迭代实例称为源实例(source)。图2为对应的1D Jacobi计算的示例代码。
模版计算更新数据时采用的计算模版有很多种,模版类型取决于对应的应用领域,以图1为例,每一个迭代实例由其上一时间步(t-1)的三个迭代实例i、i+1和i-1计算得到。由于迭代空间内的数据遵循固定的模式进行更新,上一时间步的结果作为当前时间步的计算输入数据,因此,在时间维的迭代执行过程存在大量数据重用(data reuse)。在冯·诺依曼架构的计算机体系中,如果能将所有时间步迭代所需的数据全部存入Cache中,可以大大减少因缓存不足需要从内存中读取数据而产生的耗时,但是,常见计算机***的Cache容量较小,很难完整存储所有时间步迭代所需的数据,频繁的内存读取操作大大拖慢了模版计算的执行。循环分块技术采用划分巨大循环迭代空间的方法,确保划分后的每个子迭代空间实例更新所需的数据能够存入Cache中,由于这些数据在得到最大程度重用后才进行替换,因此减少了访存操作,从而提高了程序运行效率。根据分块形状的不同,分块方法可以分为:平行四边形分块、交叉分块、***分块、钻石分块以及六边形分块方式等。图3为六边形分块示意图,该种分块的好处在于,水平方向上的分块没有数据依赖,可以并行执行,图中颜色相同的六边形可以同时执行。
科学计算规模日益扩大,相应的雅克比计算规模和精度也越来越高,对所依赖的计算平台算力要求也随之提高。随着摩尔定律发展速度的减缓,由通用计算芯片(CPU)组成的高性能计算机算力过低、能耗过高,难以应对爆发式增长的模版计算需求。FPGA以高效能的特点,成为了新型模版计算加速器。
目前以FPGA为加速平台的模版计算缺少循环分块技术的相关研究,以六边形分块为例,将基于CPU的划分方式直接用于FPGA平台的运算,很难完全发挥FPGA算力。并且,根据逻辑电路天生并行性运算特点、以及多FPGA协同加速等运算模式,需要设计合适的分块与高效数据替换策略,实现雅克比模版计算的高效能运行。
发明内容
本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种雅克比模版计算加速方法、***、介质及存储设备,提高雅克比模版计算的运行效率。
本发明采用以下技术方案:
一种雅克比模版计算加速方法,包括以下步骤:
S1、在雅克比模版计算的初始迭代状态,FPGA芯片fi分别运行第一类六边形分块计算内容,i=1,2,...,n;
S2、将步骤S1运算完成后各FPGA芯片的片上BU保存成Cell数据用于下一类迭代;
S3、进行第二类六边形分块运算,保存运算结果,将下次迭代所需的数据存入片上BU;
S4、重复步骤S2~S3,分别迭代完成第一类六边形分块计算和第二类六边形分块计算,直到整个模版计算的时间轴内的迭代实例运算完毕,得到最终步数据OC;
S5、将步骤S4的最终步数据OC从各FPGA芯片的片上BU输出至片外BRAM,数据持久化后得到雅克比模版计算结果。
具体的,步骤S1的雅克比模版计算中,对于FPGA集群F中的每块芯片,FPGA芯片fi=(ws,wl,h),ws代表运行在FPGA芯片上的六边形分块短宽度,wl代表运行在FPGA芯片上的六边形分块长宽度,h代表运行在FPGA芯片上的六边形分块的高度。
具体的,步骤S1中,第一类六边形分块为(fi,fi+1)所在同一水平面的所有分块,运行第一类六边形分块计算内容得到第二类六边形分块运行所需的所有数据,在后续第二类六边形分块运行时,直接用第一类六边形分块计算得到的内容开始运算。
具体的,步骤S2和S3中,每一个六边形分块对应一个FPGA芯片fi,分块运行时,控制器将输入迭代实例从片外内存DRAM中读入FPGA片上缓存,读取完毕后片上处理引擎进行块内运算,运算结束后将结果输出至片上BU,写入片外DRAM进行存储,用于下一个六边形分块迭代运行调用。
具体的,步骤S2和S3的下一类迭代中,各FPGA芯片fi所需的Cell数据全部存放于各自的片上BU中。
进一步的,Cell数据包括BU_i_p1,BU_i_p2,BU_i_p3。
具体的,步骤S2和S3中,输入缓存分别从自身FPGA(fi),相邻FPGA(fi+1)的片上BU中取得对应分块运行所需数据。
本发明的另一技术方案是,一种雅克比模版计算加速***,其特征在于,包括:
第一计算模块,在雅克比模版计算的初始迭代状态,FPGA芯片fi分别运行第一类六边形分块计算内容,i=1,2,...,n;
存储模块,将第一计算模块运算完成后各FPGA芯片的片上BU保存成Cell数据用于下一类迭代;
第二计算模块,进行第二类六边形分块运算,保存运算结果,将下次迭代所需的数据存入片上BU;
迭代模块,分别迭代完成第一类六边形分块计算和第二类六边形分块计算,直到整个模版计算的时间轴内的迭代实例运算完毕,得到最终步数据OC;
加速模块,将迭代模块的最终步数据OC从各FPGA芯片的片上BU输出至片外BRAM,数据持久化后得到雅克比模版计算结果。
本发明的另一技术方案是,一种存储一个或多个程序的计算机可读存储介质,其特征在于,所述一个或多个程序包括指令,所述指令当由计算设备执行时,使得所述计算设备执行雅克比模版计算加速方法中的任一方法。
本发明的另一技术方案是,一种计算设备,包括:
一个或多个处理器、存储器及一个或多个程序,其中一个或多个程序存储在所述存储器中并被配置为所述一个或多个处理器执行,所述一个或多个程序包括用于执行雅克比模版计算加速方法中的任一方法的指令。
与现有技术相比,本发明至少具有以下有益效果:
本发明一种雅克比模版计算加速方法,雅克比模版计算的结果通常用于流体动力学计算和电磁学等科学计算的数值模拟,通过步骤S2~S4中的操作,相比传统方法,无需做数据缓存替换,节省了运行时间,体现了计算的加速,减少六边形分块之间的数据依赖,将两类分块所需的数据可以存于FPGA芯片内部,减少了片外缓存的数据读写次数,提高了雅克比模版计算的运行效率。
进一步的,通过设置FPGA芯片的属性,可以将分配在每块FPGA上执行的模版计算规模进行精确表示,便于后续分块间通信量的计算。
进一步的,第一类六边形分块为(fi,fi+1)所在同一水平面的所有分块根据分块之间的传输数据方向的不同,将整个雅克比模版计算分为两类六边形分块形式,这是划分不同类型分块的目的。
进一步的,每一个六边形分块对应一个FPGA芯片fi,分块运行时,控制器将输入迭代实例从片外内存DRAM中读入FPGA片上缓存,读取完毕后片上处理引擎进行块内运算,运算结束后将结果输出至片上BU,写入片外DRAM进行存储,用于下一个六边形分块迭代运行调用,这个过程指的是如图5所示的片间数据共享的过程,两类六边形分块所需的数据可以通过片上BU进行传输,无需片外DRAM的数据读写操作,目的和好处是提高了运行效率,减少了数据读写次数。
进一步的,各FPGA芯片fi所需的Cell数据全部存放于各自的片上BU中,提高运行效率,减少了数据读写次数。
进一步的,片上BU是用于存放两类六边形分块传输数据的,这里的三类BU的设计,是实际应用时,两类分块间需要传输的有三块不同的数据,因此需要设计三类BU分别存放。
进一步的,输入缓存分别从自身FPGA(fi),相邻FPGA(fi+1)的片上BU中取得对应分块运行所需数据,规定不同分块所需数据的来源,从上一步骤的三类BU中对应的缓存区域读取。
综上所述,本发明通过设计FPGA芯片板件数据共享策略,实现了模版计算的加速算法,有效提高了多FPGA芯片加速模版计算效率,有效减少了模版计算的耗时。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为1D Jacobi计算示意图;
图2为1D Jacobi计算示例代码示意图;
图3为1D Jacobi计算的六边形分块;
图4为1D Jacobi模版六边形分块形式化描述;
图5为多FPGA协同的模版计算架构;
图6为第一类模版运算示意图;
图7为第二类模版运算示意图;
图8为Buffer缓存分类方法。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
在附图中示出了根据本发明公开实施例的各种结构示意图。这些图并非是按比例绘制的,其中为了清楚表达的目的,放大了某些细节,并且可能省略了某些细节。图中所示出的各种区域、层的形状及它们之间的相对大小、位置关系仅是示例性的,实际中可能由于制造公差或技术限制而有所偏差,并且本领域技术人员根据实际所需可以另外设计具有不同形状、大小、相对位置的区域/层。
请参阅图3和图4,定义雅克比六边形分块的形式化方法,对于FPGA集群F中的每块芯片,有fi=(ws,wl,h),i=1,2,...,n,其中,对于每块FPGA芯片fi,ws代表运行在该块芯片上的六边形分块短宽度,wl代表长宽度,h代表该六边形分块的高,以Cell数量计量,图4中这三项数据分别为:5,9和6。通过上述形式化方法,将分配在每块FPGA上执行的模版计算规模进行精确表示,便于后续的高效运行。
请参阅图5,定义多FPGA协同的模版计算架构,每一个六边形分块对应一个FPGA芯片fi,该分块开始运行时,控制器将所需的输入迭代实例(Input Cells,IC)从片外内存DRAM中读入FPGA片上缓存(Buffer Unit,BU),读取完毕后片上处理引擎(ProcessingEngine,PE)进行块内运算,运算结束后将结果(Output Cells,OC)输出至片上BU,写入片外DRAM进行存储,准备下一个六边形分块迭代运行调用。
其中,每个分块运算结束后并不需要将所有结果写入片外DRAM,因为频繁的内存访问将造成不可忽略的延迟,影响计算性能,本发明采用Xilinx Aurora协议,将下一个六边形分块所需的IC,通过板间传输的方式写入目的FPGA芯片BU,减少了片外内存的读写过程,降低了计算耗时。
本发明一种雅克比模版计算加速方法,包括以下步骤:
S1、在雅克比模版计算的初始迭代状态,FPGA芯片fi,i=1,2,...,n分别运行第一类六边形分块计算内容;
步骤S1得到下一次计算所需的数据,并且通过分类计算六边形分块的方法,减少六边形分块之间的数据依赖,将两类分块所需的数据可以存于FPGA芯片内部,减少了片外缓存的数据读写次数,提高了雅克比模版计算的运行效率。
请参阅图6,第一类六边形分块是指图6中所标注的(fi,fi+1)所在同一水平面的所有分块的计算。
S2、步骤S1第一类六边形分块运行完毕后,将各芯片的片上BU保存成图8中三个矩形框所示的形式,在下一类迭代中需要的Cell数据包括:BU_i_p1,BU_i_p2,BU_i_p3(以黑色圆点标注),不写入片外DRAM;
请参阅图6,在雅克比模版计算中,每一个分块的迭代启动所需的数据,用图8中的三个矩形框中的数据表示,此时,下一迭代各fi所需的Cell数据全部存放于各自片上BU中,无需进行片外BRAM访存,开始运算;
S3、在S2步骤完成之后,开始如图7所示的第二类六边形分块运算,完成后保存图7中所示黑色Cell数据,与S2步骤相同,通过本步骤,将开始下次迭代所需的数据存入片上BU,无需进行片外BRAM访存;如图7所示,将fi黑框中的Cell通过板间数据传输技术写入fi+1的BU,此时,下一迭代各fi所需的IC全部存放于各自片上BU中,无需进行片外BRAM访存,即可开始运算;
S4、重复步骤S2~S3,迭代完成第一类六边形分块计算和第二类六边形分块计算,直到整个时间轴的迭代实例运算完毕;
S5、将步骤S4的最终步数据OC从各fi芯片BU输出至片外BRAM,数据持久化后得到雅克比模版计算结果。
本发明再一个实施例中,提供一种雅克比模版计算加速***,该***能够用于实现上述雅克比模版计算加速方法,具体的,该雅克比模版计算加速***包括第一计算模块、存储模块、第二计算模块、迭代模块以及加速模块。
其中,第一计算模块,在雅克比模版计算的初始迭代状态,FPGA芯片fi分别运行第一类六边形分块计算内容,i=1,2,...,n;
存储模块,将第一计算模块运算完成后各FPGA芯片的片上BU保存成Cell数据用于下一类迭代;
第二计算模块,进行第二类六边形分块运算,保存运算结果,将下次迭代所需的数据存入片上BU;
迭代模块,分别迭代完成第一类六边形分块计算和第二类六边形分块计算,直到整个模版计算的时间轴内的迭代实例运算完毕,得到最终步数据OC;
加速模块,将迭代模块的最终步数据OC从各FPGA芯片的片上BU输出至片外BRAM,数据持久化后得到雅克比模版计算结果。
本发明再一个实施例中,提供了一种终端设备,该终端设备包括处理器以及存储器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于执行所述计算机存储介质存储的程序指令。处理器可能是中央处理单元(Central ProcessingUnit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor、DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其是终端的计算核心以及控制核心,其适于实现一条或一条以上指令,具体适于加载并执行一条或一条以上指令从而实现相应方法流程或相应功能;本发明实施例所述的处理器可以用于雅克比模版计算加速方法的操作,包括:
在雅克比模版计算的初始迭代状态,FPGA芯片fi分别运行第一类六边形分块计算内容,i=1,2,...,n;将运算完成后各FPGA芯片的片上BU保存成Cell数据用于下一类迭代;进行第二类六边形分块运算,保存运算结果,将下次迭代所需的数据存入片上BU;重复以上步骤,分别迭代完成第一类六边形分块计算和第二类六边形分块计算,直到整个模版计算的时间轴内的迭代实例运算完毕,得到最终步数据OC;将最终步数据OC从各FPGA芯片的片上BU输出至片外BRAM,数据持久化后得到雅克比模版计算结果。
本发明再一个实施例中,本发明还提供了一种存储介质,具体为计算机可读存储介质(Memory),所述计算机可读存储介质是终端设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储介质既可以包括终端设备中的内置存储介质,当然也可以包括终端设备所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了终端的操作***。并且,在该存储空间中还存放了适于被处理器加载并执行的一条或一条以上的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机可读存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。
可由处理器加载并执行计算机可读存储介质中存放的一条或一条以上指令,以实现上述实施例中有关雅克比模版计算加速方法的相应步骤;计算机可读存储介质中的一条或一条以上指令由处理器加载并执行如下步骤:
在雅克比模版计算的初始迭代状态,FPGA芯片fi分别运行第一类六边形分块计算内容,i=1,2,...,n;将运算完成后各FPGA芯片的片上BU保存成Cell数据用于下一类迭代;进行第二类六边形分块运算,保存运算结果,将下次迭代所需的数据存入片上BU;重复以上步骤,分别迭代完成第一类六边形分块计算和第二类六边形分块计算,直到整个模版计算的时间轴内的迭代实例运算完毕,得到最终步数据OC;将最终步数据OC从各FPGA芯片的片上BU输出至片外BRAM,数据持久化后得到雅克比模版计算结果。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中的描述和所示的本发明实施例的组件可以通过各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明一种雅克比模版计算加速方法的实现伪代码如下:
步骤2~7中,第一类分块运行过程,由于FPGA并行性,可将循环展开后并行执行,提高了运行效率。
步骤3中的输入缓存分为三个部分,分别从自身FPGA(fi),相邻FPGA(fi-1)的BU中取得该分块运行所需数据。
步骤4、5和6为雅克比模版计算运行结束后,将相应位置的Cell数据存入片上缓存BU中,具体BU分类见图8,该次分块运行结束后,步骤8对时间步进行更新。
步骤9~14为第二类分块运行过程,步骤10中的输入缓存分为三个部分,分别从自身FPGA(fi),相邻FPGA(fi+1)的BU中取得该分块运行所需数据。
步骤11、12与13将Cell数据存入相应片上缓存,供下次循环时的分块进行调用。
步骤15更新时间步,当所有时间步更新完成,步骤17、18遍历所有FPGA芯片,将缓存数据存入片外DRAM,持久化后得到最终雅克比模版计算结果。
相比片外缓存,板间通讯能够稳定得到1.6倍的性能提升,假设片外缓存操作需1000ms,以图6所示的运算规模计算,CPU为算力的读写总延迟为6000ms,以本发明设计的方法,读写总延迟为2*1000ms+2*1000ms/1.6=3250ms,效率提高了45.9%。在真实的应用场景,百万级Cell、上百时间步规模的模版计算较常见。随着计算规模的扩大,本发明的效果将进一步展现。
综上所述,本发明一种雅克比模版计算加速方法及***,针对雅克比模版计算在多FPGA加速平台上运行耗时过长问题,本发明提出了采用FPGA板间高速数据共享的加速方法,首先将模版计算的六边形分块进行形式化描述,其次针对该种循环分块提出两类迭代运算方法,然后制定了板间数据共享策略,实现了分块迭代无需与片外DRAM进行数据交换的雅克比加速算法,解决了多FPGA加速模版计算耗时过长问题,进而节省了模版计算的工程开支。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。
Claims (6)
1.一种雅克比模版计算加速方法,其特征在于,包括以下步骤:
S1、在雅克比模版计算的初始迭代状态,FPGA芯片fi分别运行第一类六边形分块计算内容,i=1,2,...,n;
雅克比模版计算中,对于FPGA集群F中的每块芯片,FPGA芯片fi=(ws,wl,h),ws代表运行在FPGA芯片上的六边形分块短宽度,wl代表运行在FPGA芯片上的六边形分块长宽度,h代表运行在FPGA芯片上的六边形分块的高度;第一类六边形分块为(fi,fi+1)所在同一水平面的所有分块,运行第一类六边形分块计算内容得到第二类六边形分块运行所需的所有数据,在后续第二类六边形分块运行时,直接用第一类六边形分块计算得到的内容开始运算;
S2、将步骤S1运算完成后各FPGA芯片的片上BU保存成Cell数据用于下一类迭代,每一个六边形分块对应一个FPGA芯片fi,分块运行时,控制器将输入迭代实例从片外内存DRAM中读入FPGA片上缓存,读取完毕后片上处理引擎进行块内运算,运算结束后将结果输出至片上BU,写入片外DRAM进行存储,用于下一个六边形分块迭代运行调用,下一类迭代中,各FPGA芯片fi所需的Cell数据全部存放于各自的片上BU中;
S3、进行第二类六边形分块运算,保存运算结果,将下次迭代所需的数据存入片上BU,每一个六边形分块对应一个FPGA芯片fi,分块运行时,控制器将输入迭代实例从片外内存DRAM中读入FPGA片上缓存,读取完毕后片上处理引擎进行块内运算,运算结束后将结果输出至片上BU,写入片外DRAM进行存储,用于下一个六边形分块迭代运行调用,下一类迭代中,各FPGA芯片fi所需的Cell数据全部存放于各自的片上BU中;
S4、重复步骤S2~S3,分别迭代完成第一类六边形分块计算和第二类六边形分块计算,直到整个模版计算的时间轴内的迭代实例运算完毕,得到最终步数据OC;
S5、将步骤S4的最终步数据OC从各FPGA芯片的片上BU输出至片外BRAM,数据持久化后得到雅克比模版计算结果。
2.根据权利要求1所述的方法,其特征在于,步骤S2和步骤S3中,Cell数据包括BU_i_p1,BU_i_p2,BU_i_p3。
3.根据权利要求1所述的方法,其特征在于,步骤S2和S3中,输入缓存分别从自身FPGA(fi),相邻FPGA(fi+1)的片上BU中取得对应分块运行所需数据。
4.一种雅克比模版计算加速***,其特征在于,包括:
第一计算模块,在雅克比模版计算的初始迭代状态,FPGA芯片fi分别运行第一类六边形分块计算内容,i=1,2,...,n;
雅克比模版计算中,对于FPGA集群F中的每块芯片,FPGA芯片fi=(ws,wl,h),ws代表运行在FPGA芯片上的六边形分块短宽度,wl代表运行在FPGA芯片上的六边形分块长宽度,h代表运行在FPGA芯片上的六边形分块的高度;第一类六边形分块为(fi,fi+1)所在同一水平面的所有分块,运行第一类六边形分块计算内容得到第二类六边形分块运行所需的所有数据,在后续第二类六边形分块运行时,直接用第一类六边形分块计算得到的内容开始运算;
存储模块,将第一计算模块运算完成后各FPGA芯片的片上BU保存成Cell数据用于下一类迭代,每一个六边形分块对应一个FPGA芯片fi,分块运行时,控制器将输入迭代实例从片外内存DRAM中读入FPGA片上缓存,读取完毕后片上处理引擎进行块内运算,运算结束后将结果输出至片上BU,写入片外DRAM进行存储,用于下一个六边形分块迭代运行调用,下一类迭代中,各FPGA芯片fi所需的Cell数据全部存放于各自的片上BU中;
第二计算模块,进行第二类六边形分块运算,保存运算结果,将下次迭代所需的数据存入片上BU,每一个六边形分块对应一个FPGA芯片fi,分块运行时,控制器将输入迭代实例从片外内存DRAM中读入FPGA片上缓存,读取完毕后片上处理引擎进行块内运算,运算结束后将结果输出至片上BU,写入片外DRAM进行存储,用于下一个六边形分块迭代运行调用,下一类迭代中,各FPGA芯片fi所需的Cell数据全部存放于各自的片上BU中;
迭代模块,分别迭代完成第一类六边形分块计算和第二类六边形分块计算,直到整个模版计算的时间轴内的迭代实例运算完毕,得到最终步数据OC;
加速模块,将迭代模块的最终步数据OC从各FPGA芯片的片上BU输出至片外BRAM,数据持久化后得到雅克比模版计算结果。
5.一种存储一个或多个程序的计算机可读存储介质,其特征在于,所述一个或多个程序包括指令,所述指令当由计算设备执行时,使得所述计算设备执行根据权利要求1或2或3所述的方法中的任一方法。
6.一种计算设备,其特征在于,包括:
一个或多个处理器、存储器及一个或多个程序,其中一个或多个程序存储在所述存储器中并被配置为所述一个或多个处理器执行,所述一个或多个程序包括用于执行根据权利要求1或2或3所述的方法中的任一方法的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110528889.0A CN113255270B (zh) | 2021-05-14 | 2021-05-14 | 一种雅克比模版计算加速方法、***、介质及存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110528889.0A CN113255270B (zh) | 2021-05-14 | 2021-05-14 | 一种雅克比模版计算加速方法、***、介质及存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113255270A CN113255270A (zh) | 2021-08-13 |
CN113255270B true CN113255270B (zh) | 2024-04-02 |
Family
ID=77181985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110528889.0A Active CN113255270B (zh) | 2021-05-14 | 2021-05-14 | 一种雅克比模版计算加速方法、***、介质及存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113255270B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017185256A1 (zh) * | 2016-04-27 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行RMSprop梯度下降算法的装置及方法 |
CN108596331A (zh) * | 2018-04-16 | 2018-09-28 | 浙江大学 | 一种细胞神经网络硬件架构的优化方法 |
CN112596701A (zh) * | 2021-03-05 | 2021-04-02 | 之江实验室 | 基于单边雅克比奇异值分解的fpga加速实现方法 |
-
2021
- 2021-05-14 CN CN202110528889.0A patent/CN113255270B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017185256A1 (zh) * | 2016-04-27 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行RMSprop梯度下降算法的装置及方法 |
CN108596331A (zh) * | 2018-04-16 | 2018-09-28 | 浙江大学 | 一种细胞神经网络硬件架构的优化方法 |
CN112596701A (zh) * | 2021-03-05 | 2021-04-02 | 之江实验室 | 基于单边雅克比奇异值分解的fpga加速实现方法 |
Non-Patent Citations (2)
Title |
---|
刘松 ; 伍卫国 ; 赵博 ; 蒋庆 ; .面向局部性和并行优化的循环分块技术.计算机研究与发展.2015,(05),全文. * |
狄鹏 ; 胡长军 ; 李建江 ; .GPU上高效Jacobi迭代算法的研究与实现.小型微型计算机***.2012,(09),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN113255270A (zh) | 2021-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111459877B (zh) | 基于FPGA加速的Winograd YOLOv2目标检测模型方法 | |
Lian et al. | High-performance FPGA-based CNN accelerator with block-floating-point arithmetic | |
US11544191B2 (en) | Efficient hardware architecture for accelerating grouped convolutions | |
CN111967468A (zh) | 一种基于fpga的轻量级目标检测神经网络的实现方法 | |
Pestana et al. | A full featured configurable accelerator for object detection with YOLO | |
WO2019201656A1 (en) | Method for accelerating operations and accelerator apparatus | |
CN111414994B (zh) | 一种基于FPGA的Yolov3网络计算加速***及其加速方法 | |
CN111539526B (zh) | 一种神经网络卷积的方法和设备 | |
JP2022508028A (ja) | 3次元画像処理におけるデータの読み書き方法とシステム、記憶媒体及び端末 | |
CN102438149B (zh) | 一种基于可重构技术的avs反变换的实现方法 | |
CN110738317A (zh) | 基于fpga的可变形卷积网络运算方法、装置和*** | |
Wu | Review on FPGA-based accelerators in deep learning | |
CN113255270B (zh) | 一种雅克比模版计算加速方法、***、介质及存储设备 | |
CN114117872A (zh) | 一种多gpu并行的时域有限差分电磁仿真方法、设备及介质 | |
CN104794102B (zh) | 一种加速实现Cholesky分解的嵌入式片上*** | |
Shahbahrami et al. | FPGA implementation of parallel histogram computation | |
CN112988621A (zh) | 一种张量数据的数据载入装置及方法 | |
US20210264081A1 (en) | Methods of designing semiconductor devices, design systems performing the same and methods of manufacturing semiconductor devices using the same | |
CN113255269B (zh) | 一种性能驱动的多fpga雅克比模版计算最优部署方法及*** | |
Li et al. | Fpga-based object detection acceleration architecture design | |
CN109086537B (zh) | 基于fpga的粒子群算法加速方法 | |
Zhang et al. | Yolov3-tiny Object Detection SoC Based on FPGA Platform | |
Zhao et al. | A method for accelerating convolutional neural networks based on fpga | |
CN107256281B (zh) | 一种基于裁剪法的fpga可重构资源非矩形布局方法 | |
Agharass et al. | Hardware software co-design based CPU-FPGA architecture: Overview and evaluation |
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 |