一种异构计算平台与基于异构计算平台的加速方法与流程

文档序号:13031123阅读:376来源:国知局
一种异构计算平台与基于异构计算平台的加速方法与流程

本发明涉及深度学习领域,特别是涉及一种异构计算平台与基于异构计算平台的加速方法。



背景技术:

随着大数据时代的到来,海量数据与复杂的数据处理过程对硬件计算能力要求很高。传统的cpu计算能力无法支持大规模的数据计算,gpu(graphicsprocessingunit,图形处理器)、fpga(field-programmablegatearray,现场可编程逻辑门阵列)等计算设备得到了相关领域研究人员的重视。

现有技术中,研究机构多致力于研究如何采用cpu+fpga异构计算平台进行硬件加速,提高运行速度。然而目前的研究多局限于单机单卡的实现,单机单卡指的是为每个服务器配置一块fpga加速卡,其中的单机指的是单个服务器,单卡指的是单个fpga加速卡,本质是一个cpu加一个fpga加速卡的异构计算平台。随着深度学习等复杂算法的发展,单机单卡运算平台也难以满足其对运算速度的需求。

因此,如何提供一种运算速度更快的异构计算平台与基于异构计算平台的加速方法是本领域技术人员目前需要解决的问题。



技术实现要素:

本发明的目的是提供一种异构计算平台,能够提供更快的计算速度,更好地满足复杂算法与海量数据对运算速度的要求;本发明的另一目的是提供一种基于上述异构计算平台的加速算法。

为解决上述技术问题,本发明提供了一种异构计算平台,包括主机与多个可编程器件,所述主机与各个所述可编程器件分别相连;

所述主机用于初始化所述可编程器件、各个所述可编程器件的并行调度、为各个可编程器件发送计算数据以及获得计算结果;

各个所述可编程器件并行处理分配给自身的计算数据。

优选的,进一步包括pcie交换机,所述pcie交换机的上游端口与所述主机相连,下游端口与所述可编程器件相连。

优选的,所述可编程器件为fpga。

为解决上述技术问题,本发明还提供了一种基于异构计算平台的加速方法,所述异构计算平台包括主机与多个可编程器件,所述方法包括:

所述主机在完成所述可编程器件的初始化之后,为完成初始化的各个所述可编程器件发送计算数据;

各个所述可编程器件在收到所述计算数据之后,分别结合发送给自身的计算数据进行并行计算,得到计算结果;

所述主机从各个所述可编程器件获得所述计算结果并进行保存。

优选的,所述主机在进行可编程器件的初始化之前还包括:

设置所述可编程器件中有效可编程器件的数目,依据预设的选择规则选择所述数目的可编程器件进行初始化,向被选中的所述可编程器件发送所述计算数据。

优选的,所述可编程器件的初始化具体包括:

为所述可编程器件创建用于保存所述主机发送的命令的命令队列;所述命令用于控制所述主机与所述可编程器件之间、所述可编程器件之间的数据传输以及所述可编程器件之间的并行调度;

将计算程序写入所述可编程器件;

为所述可编程器件创建用于数据通信以及保存计算数据的缓存。

本发明提供了一种单机多卡的异构计算平台,包括主机与多个可编程器件,主机用于可编程器件的初始化与并行调度,并控制主机与可编程器件的数据传输,包括主机向可编程器件发送计算数据、从可编程器件获得计算结果等,各个可编程器件并行运行,用于处理主机发送给自身的计算数据并得到计算结果。

在本发明提供的单机多卡异构计算平台中,可以有多个可编程器件同时进行计算,异构计算平台整体的运行速度相当于各个可编程器件的运行速度之和,相比现有技术中只有一个可编程器件的异构计算平台,提高了异构计算平台的整体运算速度与并行度,进而提高了计算效率。因此,本发明提供的异构计算平台的运算速度快,计算效率高,能更好的满足越来越复杂的算法与规模越来越庞大的数据对异构计算平台的运算速度的需求。本发明还提供一种基于上述异构计算平台的加速方法,具有同样的有益效果,在此不再赘述。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的一种异构计算平台的结构示意图;

图2为本发明提供的一种异构计算平台的一种具体实施方式的结构示意图;

图3为本发明提供的一种基于异构计算平台的加速方法的流程图;

图4为本发明提供的一种基于异构计算平台的加速方法的一种具体实施方式的流程图。

具体实施方式

本发明的核心是提供一种异构计算平台,能够提供更快的计算速度,更好地满足复杂算法与海量数据对运算速度的要求;本发明的另一核心是提供一种基于上述异构计算平台的加速算法。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供了一种异构计算平台,请结合图1,图1所示为本发明提供的异构计算平台的结构示意图,该异构计算平台包括主机1与多个可编程器件2,主机1与各个可编程器件2分别相连;

主机1用于初始化可编程器件2、各个可编程器件2的并行调度、为各个可编程器件2发送计算数据以及获得计算结果;

各个可编程器件2并行处理分配给自身的计算数据。

需要注意的是,在图1中,只给出了3个可编程器件2,这并不用于表示上述可编程器件2的数目为3,仅用于表示在本发明提供的异构计算平台中的可编程器件2的数目大于1个。在不同的具体应用中,可编程器件2的数目可以不同,这并不影响本发明的实现。

在上述异构计算平台的实际应用中,可以为主机1设计主机程序,为可编程器件2设计内核程序,主机程序运行在主机1上,用于实现可编程器件2的初始化与并行调度、为各个可编程器件2发送计算数据以及获得计算结果;内核程序并行运行在各个可编程器件2上,用于实现分配给自身的计算数据的处理。更具体地,内核程序可以采用opencl高级语言描述算法,这些算法可以为卷积神经网络算法或其他类型的算法。概括的说,主机程序主要完成参数初始化、数据传输、并行调度等工作,内核程序主要完成神经网络算法或其他具体算法的设计实现。

在本发明提供的异构计算平台中,各个可编程器件可以同时运行,相比只有一个可编程器件的异构计算平台,本发明的异构计算平台整体的运行速度相当于各个可编程器件的运行速度之和,提高了异构计算平台的运行速度。

在本发明提供的一种具体实施方式中,上述异构计算平台进一步包括pcie交换机3,pcie交换机3的上游端口与主机1相连,下游端口与可编程器件2相连。

可以理解的是,在pcie(peripheralcomponentinterconnectexpress,外围组件高速互联)总线中,经常使用pcie交换机3进行链路扩展。在本实施例中,当可编程器件2的数目较多时,可以通过pcie交换机3进行主机1与可编程器件2之间、各个可编程器件2之间的数据传输与路由选择,从而减轻主机1由于控制数据传输造成的压力。

容易想到的是,由于本实施例中的异构计算平台包括pcie交换机3,该异构计算平台上的设备均通过pcie总线互联通信,在本实施例中的异构计算平台上,还包括用来安装fpga的pcie槽位,由于在实际应用中,槽位一般与fpga配套出现,图3中虽未画出,在实际实现过程中存在pcie槽位,pcie槽位与fpga一一对应。需要注意的是,在本发明的其他实施例中,也可以采用其他类型的通信方式,这并不影响本发明的实线。

在本发明提供的异构计算平台的一种具体实现中,可编程器件2具体为fpga21。

可以理解的是,加电时,fpga将程序与数据读入片内编程ram中,掉电后,fpga恢复成空白芯片,其上的内部逻辑消失。这种特性使得fpga的重用性很高,使用非常灵活,一个算法运算结束后,只要断电一次,就可以写入新的算法,对同一片fpga而言,写入不同的数据就可以产生不同的电路功能,用于计算不同的算法。在异构计算平台中使用fpga,可以有效降低开发成本。

请结合图2,图2所示为本发明提供的异构计算平台的一种具体实施方式的结构示意图。需要注意的是,这里的3个fpga21也不用于限制异构计算平台中的fpga21的数目具体为3个,仅用于表示fpga21的数目大于1个。

本发明提供的单机多卡异构计算平台可以通过某种方式进行组合,构成多机多卡异构计算平台。

在本发明提供的单机多卡异构计算平台中,可以有多个可编程器件同时进行计算,整个异构计算平台的运行速度相当于多个可编程器件的运行速度之和,相比现有技术中只有一个可编程器件的异构计算平台而言,提高了异构计算平台的整体运算速度与并行度,进而提高了计算效率。因此,本发明提供的异构计算平台的运算速度更快,计算效率更高,能更好的满足越来越复杂的算法与规模越来越庞大的数据对异构计算平台的运算速度的需求。

本发明还提供了一种基于异构计算平台的加速方法,异构计算平台包括主机与多个可编程器件,请参考图3,图3所示为本发明提供的基于异构计算平台的加速方法的流程图,该方法具体包括:

步骤s1:主机在完成可编程器件的初始化之后,为完成初始化的各个可编程器件发送计算数据;

步骤s2:各个可编程器件在收到计算数据之后,分别结合发送给自身的数据进行并行计算,得到计算结果;

步骤s3:主机从各个可编程器件获得计算结果并进行保存。

可以理解的是,在上述方法中,初始化之后的各个可编程器件之间并行运行,同时处理主机分配给自身的任务,对于整体系统而言,异构计算平台的运行速度相当于同时运行的可编程器件的运行速度之和,提高了异构计算平台的计算速度与平台的并行度,进而提高了异构计算平台的计算效率。因此,本发明提供的加速方法可以使异构计算平台的运行速度相当于并行运行的可编程器件的运行速度之和,提高了异构计算平台的运行速度。

在本发明提供的一种优选实施例中,主机在进行可编程器件的初始化之前还包括:

步骤s0:设置可编程器件中有效可编程器件的数目,依据预设的选择规则选择数目的可编程器件进行初始化,向被选中的可编程器件发送计算数据。

可以理解的是,本发明提供的加速方法基于一个异构计算平台,在这个异构计算平台中,包含多个可编程器件,然而对于一个具体的计算问题而言,可能不需要用到所有的可编程器件,只要其中几个可编程器件并行运行即可满足需求,上述步骤使得用户可以根据具体问题的计算量的大小设置有效可编程器件的数目。这样,在一次具体的计算过程中,就可以只运行需要数量的可编程器件,其余的可编程器件可以闲置,从而降低异构计算平台的功耗。

需要注意的是,上述选择规则可以是将各个可编程器件编号,并按编号顺序从大到小或从小到大的顺序进行选择,也可以是其他的选择规则。具体的选择规则并不影响本发明的实现。

在本发明提供的加速方法的一种具体实现中,可编程器件的初始化的过程具体包括:

步骤s01:为可编程器件创建用于保存主机发送的命令的命令队列;命令用于控制主机与可编程器件之间、可编程器件之间的数据传输以及可编程器件之间的并行调度;

步骤s02:将计算程序写入可编程器件;

步骤s03:为可编程器件创建用于数据通信以及保存计算数据的缓存。

需要注意的是,在进行主机与可编程器件之间的信息交互之前,需要设置用于二者通信的上下文,主机与可编程器件之间依据上下文进行命令传递与数据传输。

上述计算程序可以为深度学习算法的程序、神经网络算法的程序,或者其他算法的程序。在初始化完成之后,实现了深度学习之类的算法的计算程序就被写入到可编程器件中,在后续步骤中,可编程器件收到计算数据后,就可以结合上述计算程序处理计算数据,得到计算结果。

请结合图4,图4所示为本发明提供的加速方法的一种具体实施方式的流程图。

通过本发明提供的加速方法,可以使异构计算平台中的各个可编程器件并行运行,这种情况下,整个异构计算平台的运行速度相当于并行运行的几个可编程器件的运行速度之和,从而提高了异构计算平台的并行度与运行速度,进而提高了异构计算平台的运行速度。故利用本发明提供的加速方法,可以更好地满足复杂算法与海量数据对异构计算平台的运行速度的需求。

以上的几种具体实施方式仅是本发明的优选实施方式,以上几种具体实施例可以任意组合,组合后得到的实施例也在本发明的保护范围之内。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进,这些改进也应视为本发明的保护范围。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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