硬件加速方法及系统、硬件加速器执行方法及系统与流程

文档序号:12463700阅读:218来源:国知局
硬件加速方法及系统、硬件加速器执行方法及系统与流程

本发明涉及硬件加速领域,特别是涉及硬件加速方法及系统、硬件加速器执行方法及系统。



背景技术:

逻辑可编程阵列(FPGA)是一种在生产后可编程的集成电路芯片。芯片中电路提供可编程节点,可根据用户设定重新定义电路逻辑。相比于传统处理芯片CPU,FPGA可提供针对特定问题的高度优化电路,提升百倍级别计算性能;相比于传统集成电路芯片ASIC,FPGA可提供更灵活的计算方案。

近年来,云计算等大型服务器架构发展迅速,用以支持更高性能的应用。与此同时,受限于芯片功耗,计算应用对于性能的需求增速大大超过大型计算的性能提升速率。高性能应用生产专用ASIC芯片可以提供更高的计算性能,然而专业ASIC芯片的长研发生产周期及高研发费用无法支持服务器应用的迅速迭代。

FPGA结合了软件的迅速开发迭代及硬件的高性能特性。可重构应用基于FPGA芯片内部可重构逻辑开发定制硬件,并可通过FPGA芯片重构流程编写芯片硬件逻辑。定制硬件更新可通过改写FPGA内部配置文件,无需重新流片,可同时满足大型服务器对于快速应用迭代及高性能需求。采用FPGA的大型服务器包含多个计算节点。不同于通用CPU服务器,硬件资源共享可通过软件实现,每个硬件计算节点同一时间智能支持一种定制化硬件。大型服务器中的计算应用随时占用和释放计算资源,为基于定制硬件的服务器资源共享带来了挑战。

图1展示了一个典型的计算案例:ABCD为4个硬件计算节点,其中A节点在0秒开始为空闲,B、C、D分别在2、3、4秒被应用释放,变为空闲资源。图1支持的三种应用分别是:单节点应用(OneNode)、四节点应用(FourNode)以及动态应用(Dynamic),在本计算案例中假设应用的性能随采用的计算节点线性降低。ABD每个计算节点每秒处理应用中一个计算任务,C节点含有更多的计算资源,每秒处理两个计算任务,而应用中包含8个计算任务。在该案例中,单节点应用只使用一个节点支持计算,在应用开始时(0秒),只有A节点空闲,执行8个计算任务需要8秒时间;四节点应用需要4个空闲计算节点,在0到4秒间,由于没有4个空闲节点,应用无法执行,直至第4秒开始,4个节点都空闲后,应用占用4个计算节点开始执行,并使用1.6秒时间执行完所有的计算任务,总共耗时5.6秒;动态应用使用所有的空闲资源,并随着空闲应用的增加而逐步延展,如图1所示,在0到2秒,A节点被占用,执行了两个计算任务,在2秒,应用延展到B节点,AB节点在一秒内计算了两个计算任务,在3秒,应用延展到C节点,ABC节点在1秒内完成剩余的4个计算任务(C节点每秒可以执行2个计算任务),应用执行时间为4秒,达到最小值,所有计算资源没有空闲时间。

可见,动态应用可以最大限度地利用基于FPGA的硬件计算节点,从而提供最高的计算性能。由此,本申请提出一种动态可延展硬件加速技术,有利于动态应用的开发、优化、及执行。



技术实现要素:

鉴于以上所述现有技术的缺点,本发明的目的在于提供硬件加速方法及系统、硬件加速器执行方法及系统,用于解决现有技术中ASIC芯片因研发生产周期长、研发费高用无法很好地支持服务器应用的迅速迭代的问题。

为实现上述目的及其他相关目的,本发明提供一种硬件加速方法,所述硬件包括多个通信连接的硬件计算节点,每个所述硬件计算节点的计算任务由至少一个计算模块完成,所述方法包括:获取每个所述硬件计算节点的计算任务量,及其含有的计算模块的并行计算信息,据以计算每个所述硬件计算节点完成各自的计算任务量的计算时间;按照每个所述硬件计算节点在各自的约束条件下计算时间最短的原则,将每个所述硬件计算节点优化成各定制硬件模块,其中,各自的所述约束条件由硬件计算节点的资源配置确定;当检测到存在资源空闲的硬件计算节点时,将一所述定制硬件模块的相关配置信息载入其中,从而形成重构的硬件计算节点,所述重构的硬件计算节点通过其接口将计算结果传递至其他硬件计算节点来完成计算拓展。

为实现上述目的及其他相关目的,本发明提供一种硬件加速器的执行方法,所述硬件加速器采用了如上任一所述的硬件加速方法,所述执行方法包括:实时监控所述硬件加速器中各个硬件计算节点的使用情况;当监测到出现资源空闲的硬件计算节点时,利用性能模型估测拓展重构成本,若所述拓展重构成本大于零,则启动计算拓展,从而将目标计算节点拓展到资源空闲的硬件计算节点。

为实现上述目的及其他相关目的,本发明提供一种硬件加速系统,所述硬件包括多个通信连接的硬件计算节点,每个所述硬件计算节点的计算任务由至少一个计算模块完成,所述系统包括:计算单元,用于获取每个所述硬件计算节点的计算任务量,及其含有的计算模块的并行计算信息,据以计算每个所述硬件计算节点完成各自的计算任务量的计算时间;优化单元,用于按照每个所述硬件计算节点在各自的约束条件下计算时间最短的原则,将每个所述硬件计算节点优化成各定制硬件模块,其中,各自的所述约束条件由硬件计算节点的资源配置确定;拓展单元,用于当检测到存在资源空闲的硬件计算节点时,将一所述定制硬件模块的相关配置信息载入其中,从而形成重构的硬件计算节点,所述重构的硬件计算节点通过其接口将计算结果传递至其他硬件计算节点来完成计算拓展。

为实现上述目的及其他相关目的,本发明提供一种硬件加速器的执行系统,所述硬件加速器包括如上所述的硬件加速系统,所述执行系统包括:状态监控模块,用于实时监控所述硬件加速器中各个硬件计算节点的使用情况;性能评估模块,用于当监测到出现资源空闲的硬件计算节点时,利用性能模型估测拓展重构成本;延展优化模块,用于在所述拓展重构成本大于零时,将目标计算节点拓展到资源空闲的硬件计算节点。

如上所述,本发明的硬件加速方法及系统、硬件加速器执行方法及系统,在提供高计算性能的基础上,可同时满足大型服务器对于快速应用迭代及高性能的需求,并具有更高的能耗比。

附图说明

图1显示为现有技术中执行计算任务的三种应用设计方式示意图。

图2显示为本发明一实施例的硬件加速方法示意图。

图3a~3c显示为本发明一实施例的硬件计算节点中的计算模块示意图。

图4a~4d显示为本发明一实施例的重构节点之间异步通信举例示意图。

图5显示为本发明一实施例的硬件加速系统模块图。

图6显示为本发明一实施例的硬件加速器的执行系统模块图。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

请参阅图2,为了在多用户环境下为硬件加速集群提供最优计算性能,本发明提供一种动态可延展硬件加速方法,包括:

步骤S201:硬件计算节点优化。单个计算节点的计算架构如图3a所示,将计算核心内容转换为以流水方式连接的计算模块(所有循环都复用同一计算模块)等。单个计算节点的优化目标为最大化计算节点的计算能力。对于给定计算量S*dsi,其中,dsi为节点i需处理的数据点个数,S为每个数据点所包含的数据量,最大化计算能力可表达为最小化整体计算时间T,如公式(1)所示:

其中,pi为节点i中可支持的并行计算模块,dpi为每个计算模块的内部并行度(单个计算模块的每个时钟处理的数据量),freqi为计算模块的时钟频率。

另外,单节点优化受限于:硬件节点i中的硬件资源以及并行计算模块的资源消耗,其资源限制条件可表达为公式(2)~(4):

li*pi*dpi+Ilogic≤Alogic (2)

m*dm+Imem≤Amem (3)

bwi≤BWi(4)

其中,l表示计算模块中支持单个数据所需的逻辑资源,m表示计算模块中支持单个数据所需的存储资源,dm表示计算单元中所包含数据个数,Alogic、Amem分别表示单个硬件节点中所含有的逻辑资源和存储资源,Ilogic、Imem分别表示数据接口所消耗的逻辑和存储资源,bw表示单节点内所有计算模块所需的内存带宽,BW为节点可支持的内存带宽。

逻辑资源消耗li的模型可用公式(5)表示:

li=∑op∈⊙#(op)*Lop*Bop,wlen,dr op={+,-,*,÷} (5)其中,#(op)表示单个硬件模块中(op)操作的个数,其中,op包含加减乘除四个操作,Lop为每个操作的基础逻辑资源消耗,Bop为每个操作的精度系数(精度系数基于操作类型op、数据宽度wlen,以及数据表达方式dr决定最终逻辑资源消耗)。如图3a所示,硬件模块中的操作单元彼此独立运行,总体的逻辑资源消耗可通过累加每个操作的资源消耗获得。

与之类似,存储资源通过累加所需存储片上数据获得。

带宽资源消耗bwi的模型可用公式(6)表示:

bwi=∑((mema,d,c+1-(mema,d,c+1∩mema,d,c)))*wlen*freqi (6)

如图3b~3c(i分别为1、2),每个时钟读取数据流取决于片上内存mem每个时钟所需的新数据,其中a表示数据整列序号,d表示计算模块序列,c表示时钟序列。mema,d,c+1∩mema,d,c表示下一时钟周期c+1与本时钟周期c重复的片上数据,mema,d,c+1-(mema,d,c+1∩mema,d,c)表示下一时钟周期片上内存需要更新的数据量,带宽资源可计算为每个时钟周期所需更新的数据量,乘以每个数据的宽度wlen,以及时钟频率freqi。

通过资源模型,即公式(5)和(6),以及单节点优化模型,即公式(1)~(4),对于每个节点,可建立目标应用的定制化硬件模块,并充分利用片上资源保证最大并行度。

步骤S202:单节点拓展。针对目标应用,单节点优化保证服务器中的硬件资源得到最大程度利用。为支持动态可延展应用,每个节点的优化硬件模块嵌入支持节点间通信的硬件模块及接口。每个单独硬件节点支持两个通信接口,可以与邻近硬件节点实时通信。当服务器中出现空闲资源后,动态可延展应用重构空闲资源,将优化后硬件配置下载入空闲资源,通过通信接口将重构后新节点的计算结果连接至附近节点,完成应用延展。

步骤S203:多节点通信优化。延展后的节点间通信采用异步通信模式进行数据交互。如图4a计算示例所示,目标应用包括2个循环,每个循环包含200个数据计算,其中a[99]的计算需要邻近三个数据点的数据。在同一节点X内,其在迭代次数0中a[99]的计算结果会在迭代次数1中使用。当多个硬件节点参与计算后,数据分配至不同硬件节点。如本图所示例子,若a[99]所需三个相邻数据点有一个被分配至不同硬件节点。多个硬件节点间需要相互通信用以访问计算所需数据。

如图4b所示,延展后的目标应用拥有XY两个硬件节点,其中斜线节点与黑色节点分别代表具有数据依赖关系的两个数据点。

如图4c所示,在计算节点X中,后一循环的黑色节点a[100]由前一循环的Y节点的计算结果(同样标为黑色节点)更新,箭头代表数据更新顺序。与之对应,前一循环的X节点中的数据计算a[99]结果也输出至后一循环的Y中的黑色节点相邻节点a[99]。

如图4d所示,在增加额外的计算节点(即重构的空闲计算节点)后,200个数据量按照每个节点计算能力分配。其中Y硬件节点的初始计算时间延后4个数据点。当X中的a[99]计算完成后可直接传输至Y节点,不会因为过早传输覆盖Y中计算数据。与此同时,Y中的a[100]的计算发生在迭代次数1中X节点使用a[100]之前,可在保证正确计算前提下不影响计算性能。数据量分配如公式(7)所示:

其中,wli(n)表示分配后计算节点i的计算量,pj*dpj表示节点i的计算量,表示拓展后应用所拥有的全部计算量。

相邻节点由于数据依赖性,在下一计算循环开始前需要更新数据计算结果。如图4c所示,X节点中的a[99]需要传输给Y节点,Y节点中的a[100]需要传输给X节点。异步通信方式保证数据通信操作可以与计算操作并行进行,可以支持目标应用延展至大量计算节点,保证线性性能提升。在图4c的例中,X节点中的a[99]与Y节点中的a[100]在循环次数0计算,并在循环次数1在对应数据使用前传输至Y节点中的a[99]与X节点中的a[100]。对于计算无影响,不降低计算性能。

为支持多节点异步通信,硬件节点间的通信模型如公式(8)所示:

其中,taij表示节点i传输到节点j的数据抵达时间,tcj为j节点本地的调度延时,tdi为数据抵达目标节点后数据更新延时,pj*dpj为节点j的计算速度,为j节点使用上个循环使用i传输的计算结果的时间,为j节点下个循环需要i传输的计算结果的时间,taij需要保证在两个时间之间,从而保证异步通信及时到达,不会影响计算结果。图4c显示本例完成通信调度后的计算顺序,其中,Y节点本地调度延时加大(增加一个初始计算延时),保证数据可以及时到达。

步骤S204:动态延展优化。动态延展路程如以下算法所示,其主要分为三个步骤优化延展后性能,保证最大化利用现有计算资源:

1)根据延展后计算节点计算能力计算每个节点分配数据量,及对应的数据传输抵达时间

2)根据下循环所需要的最晚传输结果时间调节本地调度tc:每个节点内的数据到达时间与该节点允许的最晚数据到达时间对比,如果到达时间大于最晚到达时间,则增加tci,以保证数据不会过晚到达。计算完每个节点的本地调度tc后,更新所有节点在增加tc后的数据到达时间。

3)根据上循环所需要的最早传输结果时间调节本地调度td:更新tc后,每个节点的数据到达时间与最早数据到达时间相比,如果小于最早到达时间,则增加tdj直至数据最终更新时间(到达时间ta+tdj)大于最早数据到达时间。

请参阅图5,与上述硬件加速方法实施例原理相似的是,本发明提供一种硬件加速系统500,主要包括:计算单元501、优化单元502、拓展单元503。由于前述实施例中的技术特征可以应用于本系统实施例,因而不再重复赘述。

计算单元501获取每个所述硬件计算节点的计算任务量,及其含有的计算模块的并行计算信息,据以计算每个所述硬件计算节点完成各自的计算任务量的计算时间;优化单元502按照每个所述硬件计算节点在各自的约束条件下计算时间最短的原则,将每个所述硬件计算节点优化成各定制硬件模块,其中,各自的所述约束条件由硬件计算节点的资源配置确定;拓展单元503当检测到存在资源空闲的硬件计算节点时,将一所述定制硬件模块的相关配置信息载入其中,从而形成重构的硬件计算节点,所述重构的硬件计算节点通过其接口将计算结果传递至其他硬件计算节点来完成计算拓展。

除此之外,本发明还提供一种基于可延展加速器技术的执行方法,通过各个软件模块组成的系统执行实现,如图6所示,包括:

1)状态监控模块601实时监控硬件加速集群资源的使用情况,当监测到存在处于空闲状态的硬件计算节点时,通知性能评估模块602。

2)性能评估模块602根据可重构应用优化,建立应用性能模型(9):

其中,rtb(r,v)表示目标应用从状态r延展至状态v(即重构后)的性能提升,用于计算由于计算资源提升带来的应用执行时间降低,即将动态重构后的应用性能收益,rc(r,v)用于估算拓展重构成本。随后,判断rtb(r,v)是否大于零,若是,则通知延展优化模块503进行动态扩展。

需要说明的是,拓展目标节点至新的计算节点包含三个步骤:

①在状态r,从现有计算节点读取计算结果;

②重构新的计算节点,转换至状态v;

③将分配的计算量wli(v)写入新的计算节点。

与之对应,拓展重构成本包含数据读写时间及重构时间,由于步骤①、②可以并行执行,两个步骤中耗时较长的步骤计入总重构成本为将分配的计算量写入新的计算节点的时间,则拓展重构成本如公式(10)所示,其中,Ci为i硬件节点的重构时间。

3)延展优化模块603启动目标应用延展,优化目标应用,读取重构的硬件计算节点的单节点优化硬件配置,并通知系统延展模块604。

4)系统延展模块604根据步骤S201-步骤S203计算调度参数,更新通信模型(公式8),配置新计算节点,完成目标应用延展。

综上所述,本发明的硬件加速方法及系统、硬件加速器执行方法及系统,有效克服了现有技术中的种种缺点而具高度产业利用价值。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1