首页> 中国专利> 一种异构计算平台子系统间的接口设计方法、装置及系统

一种异构计算平台子系统间的接口设计方法、装置及系统

摘要

本发明实施例公开了一种异构计算平台子系统间的接口设计方法,通过Spark平台的本地文件对FPGA被调用的方法做本地声明,然后对修改后的Spark文件进行重新编译;利用预设的命令生成包含FPGA被调用方法的头文件,并结合FPGA被调用的方法生成动态库文件,最后将该文件复制到预设的路径,就完成了Spark平台与FPGA间的接口设计。实现了组成异构平台的子系统间的有效结合,使得异构计算平台健康的运行,有效的解决了Spark平台内存开销过大的问题,提高了数据处理速度,有利于提升Spark平台的计算性能。此外,还提供了相应的实现装置和系统,进一步使得上述方法更具有实用性,所述装置和系统具有相应的优点。

著录项

  • 公开/公告号CN106528171A

    专利类型发明专利

  • 公开/公告日2017-03-22

    原文格式PDF

  • 申请/专利权人 郑州云海信息技术有限公司;

    申请/专利号CN201611050751.X

  • 发明设计人 曹芳;陈继承;王洪伟;

    申请日2016-11-24

  • 分类号G06F9/44(20060101);

  • 代理机构11227 北京集佳知识产权代理有限公司;

  • 代理人罗满

  • 地址 450018 河南省郑州市郑东新区心怡路278号16层1601室

  • 入库时间 2023-06-19 01:48:18

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-09-24

    授权

    授权

  • 2017-04-19

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20161124

    实质审查的生效

  • 2017-03-22

    公开

    公开

说明书

技术领域

本发明涉及大数据、云处理以及机器学习算法领域,特别是涉及一种异构计算平台子系统间的接口设计方法、装置及系统。

背景技术

随着物联网和5G通信时代的到来,大数据领域也面临着巨大的变革,数据处理朝着智能数据挖掘的方向发展,极大的促进了机器学习的研究与应用。

ML(Machine Learning,机器学习)是一门多领域交叉学科,专门研究机器怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而非演绎。这里所说的“机器”,指的就是计算机,如电子计算机,中子计算机、光子计算机或神经计算机等等。Mllib(Machine Learning lib,机器学习库)一个专门针对大量数据处理的通用的、快速的引擎。

Spark是UC Berkeley AMP lab(加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,是一个高效的分布式计算系统,是全球当前大数据领域最活跃、最热门的高效的大数据通用计算平台。Spark的设计初衷就是为了支持一些迭代的任务,这正好符合机器学习算法的特点,所以将Mllib运用到Spark平台上。Mllib是Spark可以扩展的机器学习库,是Spark对常用的机器学习算法和应用的实现库,同时包括相关的测试和数据生成器。主要的机器学习的算法例如分类回归、聚类、关联规则、推荐、降维、优化、特征抽取筛选、用于特征预处理的数理统计方法、以及算法的评测在MLlib中都包括。

异构计算是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式,能够根据每一个计算子系统的结构特点为其分配不同的计算任务,常见的计算单元有中央处理器CPU、图形处理器GPU、数字信号处理DSP、专用集成电路ASIC、现场可编程门阵FPGA等。比如CPU和GPU之间的“协同计算、彼此加速”,从而突破CPU发展的瓶颈。这种模式可提高服务器的计算性能、能效比和计算实时性。

现有技术中,在基于Spark平台的MLlib由于单节点处理能力有限,为了满足运算任务的需求会扩展群节点规模。尽管提高了计算性能,但是其系统成本和能耗快速增加,大大的降低了集群扩展带来的计算性能的收益。为了实现既可提高Spark平台的计算性能,又可避免大幅增加系统成本和能耗以及造成收益与支出的不均衡,可采用异构计算平台,运算任务将不全在Spark平台进行处理,从而加快Spark平台数据处理的速度。但是Spark平台和与其组成异构平台的器件或装置往往使用的编译语言是不同的。可见,如何实现将二者有效的结合是实现提升Spark平台计算性能的关键。

发明内容

本发明实施例的目的是提供一种异构计算平台子系统间的接口设计方法、装置及系统,以实现异构计算平台子系统间的有效结合,有利于提高Spark平台计算性能。

为解决上述技术问题,本发明实施例提供以下技术方案:

本发明实施例一方面提供了一种异构计算平台子系统间的接口设计方法,包括:

在Spark平台的本地文件中对FPGA被调用方法做本地声明;

对修改后的Spark平台的文件根据预设的指令进行重新编译;

利用预设的命令生成包含所述FPGA被调用方法的头文件;

根据所述FPGA被调用方法以及所述头文件生成动态库文件,并将所述动态库文件复制到预设路径,以完成所述Spark平台与FPGA间的接口设计。

优选的,在所述根据所述FPGA被调用方法以及所述头文件生成动态库文件,并将所述动态库文件复制到预设路径,以完成所述Spark平台与FPGA间的接口设计之后还包括:

根据预设条件对机器学习算法进行判断;

当判定所述机器学习算法达到所述预设条件时,将所述机器学习算法移植到FPGA进行运算;反之,在所述Spark平台进行运算。

优选的,所述利用预设的命令生成包含所述FPGA被调用方法的头文件为:

利用javah命令生成包含所述FPGA被调用方法的头文件。

优选的,所述根据所述FPGA被调用方法以及所述头文件生成动态库文件,并将所述动态库文件复制到预设路径为:

根据所述FPGA被调用方法以及所述头文件生成动态库文件,并将所述动态库文件复制到java.library.path路径下。

本发明实施例另一方面提供了一种异构计算平台子系统间的接口设计装置,包括:

声明模块,用于在Spark平台的本地文件中对FPGA被调用方法做本地声明;

编译模块,用于对修改后的Spark平台的文件根据预设的指令进行重新编译;

头文件生成模块,用于利用预设的命令生成包含所述FPGA被调用方法的头文件;

库文件生成模块,用于根据所述FPGA被调用方法以及所述头文件生成动态库文件,并将所述动态库文件复制到预设路径,以完成Spark平台与FPGA间的接口设计。

优选的,还包括:

运算模块,用于根据预设条件对机器学习算法进行判断;当判定所述机器学习算法达到所述预设条件时,将所述机器学习算法移植到FPGA进行运算;反之,在所述Spark平台进行运算。

优选的,所述头文件生成模块为利用javah命令生成包含所述FPGA被调用方法的头文件的模块。

优选的,所述库文件生成模块为根据所述FPGA被调用方法以及所述头文件生成动态库文件,并将所述动态库文件复制到java.library.path路径下的模块。

本发明实施例还公开了一种异构计算平台子系统间的接口设计系统,包括多个FPGA、多个计算节点以及前述的异构计算平台子系统间的接口设计装置,

其中,每一个所述计算节点与一个或多个所述FPGA相连;

所述FPGA用于处理符合预设条件的机器学习算法;

所述计算节点用于对Spark平台上的计算任务进行资源分配和任务调度。

优选的,所述计算节点通过PCIe接口与所述FPGA相连。

本发明实施例提供了异构计算平台子系统间的接口设计方法,通过Spark平台的本地文件对FPGA被调用的方法做本地声明,然后对修改后的Spark文件进行重新编译;利用预设的命令生成包含FPGA被调用方法的头文件,并结合FPGA被调用的方法生成动态库文件,后将该文件复制到预设的路径,就完成了Spark平台与FPGA间的接口设计。

本申请通过对异构平台子系统间的接口进行设计,实现了组成异构平台的子系统间的有效结合,使得异构计算平台健康的运行,FPGA承担了Spark平台上运算任务复杂耗时且适合并行运算的部分,有效的解决了Spark平台内存开销过大的问题和提高了Spark平台的数据处理速度,也不会大幅增加系统成本和能耗,有利于提升Spark平台的计算性能。此外,本发明实施例还提供了相应的实现装置及系统,进一步使得所述方法更具有实用性,所述装置及系统具有相应的优点。

附图说明

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

图1为本发明实施例提供的一个示例性应用场景的框架示意图;

图2为本发明实施例提供的一种异构计算平台子系统间的接口设计方法的流程示意图;

图3为本发明实施例提供的另一种异构计算平台子系统间的接口设计方法的流程示意图;

图4为本发明实施例提供的一种异构计算平台子系统间的接口设计装置的结构图;

图5为本发明实施例提供的另一种异构计算平台子系统间的接口设计装置的结构图;

图6为本发明实施例提供的一种异构计算平台子系统间的接口设计系统的结构图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。

本申请的发明人经过研究发现,为了提高Spark平台计算性能,满足运算任务的需求,现有技术往往会扩展群节点规模,解决的单节点处理能力有限的问题,但是随之而来的系统成本和能耗的快速增加,内存开销太大,大大的降低了集群扩展带来的计算性能的收益。为了提高计算性能而且避免上述问题,可采用异构计算平台,将运算任务的一部分分配到异构平台的其他子系统中进行处理。只有构成异构平台的子系统间有效结合才能解决前述的问题。鉴于此,通过Spark平台的编译语言对FPGA被调用方法做本地声明,然后对修改过的Spark源码进行重新编译;利用预设的命令生成包含FPGA被调用方法的头文件,并结合FPGA被调用方法生成动态库文件,后将该文件复制到预设的路径,就完成了整个异构计算平台的接口设计。实现了组成异构平台的子系统间的有效结合,使得异构计算平台健康的运行,有利于提升Spark平台的计算性能。

基于上述本发明实施例的技术方案,本申请实施例的应用场景之一,可以通过FPGA与Spark组成异构计算平台,通过设计二者的接口来实现二者的有效结合。

FPGA(Field-Programmable Gate Array),它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物,是一种新型的异构计算平台加速器件,由可编程的逻辑块和互联网络组成,可在不同逻辑执行多个线程,实现流水线并行处理,具有较强的并行处理能力。FPGA在大数据处理领域具有诸多优势,如采用流水线方式实现并行计算、低功耗、动态可重构等。

利用上述介绍的FPGA的优势,可将其与Spark平台的构成异构平台,能够有效的提升Spark平台的MLlib的计算性能。但是Spark平台是在Scala语言中实现的,而FPGA是采用OpenCL高级语言进行开发的。通过对Scala语言进行对调用OpenCL的方法做本地声明,然后对修改过的Spark源码进行重新编译;利用javah的命令生成包含声明的头文件,并结合OpenCL生成动态库文件(so库文件),同时将该文件复制到预设的路径,以完成对FPGA与Spark接口的设计,从而使得二者有效的结合在一起,使整个异构计算平台健康的运行,FPGA用来承担Spark平台上运算任务复杂耗时且适合并行运算的部分,一定程度上加快了Spark平台处理数据的速度,提高了Spark平台的计算性能。

需要注意的是,上述应用场景仅是为了便于理解本申请的思想和原理而示出,本申请的实施方式在此方面不受任何限制。相反,本申请的实施方式可以应用于适用的任何场景。

在介绍了本发明实施例的技术方案后,下面详细的说明本申请的各种非限制性实施方式。

实施例一:

首先参见图2,图2为本发明实施例提供的一种异构计算平台子系统间的接口设计方法的流程示意图,本发明实施例可包括:

S201:在Spark平台的本地文件中对FPGA被调用方法做本地声明。

Spark平台的编译语言可为Scala,FPGA的编程语言可为OpenCL,通过利用Scala调用构成异构平台的其他子系统的编译语言(OpenCL)专用接口将其融合编译到Spark框架下,即实现了该子系统与Spark平台的结合。当然,必要情况下,也可不选择Scala作为编译语言,可选择其他适用的语言,本发明实施例并不对此做限定。但是,优选的,选择的语言应该为成熟的、兼容性好的、开发周期短的、稳定方便的。

由于本地语言与调用语言的不同,就需要在本地语言中对要调用的语言做本地方法声明,方法声明的关键字可为native。需要说明的是,只需要声明,不需要具体实现。

举例来说,对于Java来说,一个本地方法(Native Method)就是一个java调用非java代码的接口。该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern“C”告知C++编译器去调用一个C的函数。

S202:对修改后的Spark平台的文件根据预设的指令进行重新编译。

因为S201中在Spark源码中做了本地方法声明,故需要根据调用语言和本地方法声明对Spark源码进行重新编译,使其在写入声明之后可继续工作,不会发生紊乱。

S203:利用预设的命令生成包含所述FPGA被调用方法的头文件。

头文件为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明。功能的真正逻辑实现是以硬件层为基础,在驱动程序、功能层程序以及用户的应用程序中完成。头文件的主要作用在于多个代码文件全局变量(函数)的重用、防止定义的冲突,对各个被调用函数给出一个描述,其本身不需要包含程序的逻辑实现代码,它只起描述性作用,用户程序只需要按照头文件中的接口声明来调用相关函数或变量,链接器会从库中寻找相应的实际定义代码。

头文件是用户应用程序和函数库之间的桥梁和纽带。编译时,编译器通过头文件找到对应的函数库,进而把已引用函数的实际内容导出来代替原有函数,进而在硬件层面实现功能。可利用javah命令生成包含本地方法声明的头文件。

举例来说,对于C语言来说,头文件一般由四部分内容组成:

头文件开头处的版权和版本声明;

预处理块;

inline函数的定义;

函数和类结构声明。

在头文件中,可用ifndef/define/endif结构来产生预处理块,可用#include格式来引用库的头文件。

S204:根据所述FPGA被调用方法以及所述头文件生成动态库文件,并将所述动态库文件复制到预设路径,以完成Spark平台与FPGA间的接口设计。

动态库文件,即动态库链接文件或so文件,是一种不可执行的二进制程序文件,它允许程序共享执行特殊任务所必需的代码和其他资源。举例来说,Windows提供的DLL文件中包含了允许基于Windows的程序在Windows环境下操作的许多函数和资源。Windows中,DLL多数情况下是带有DLL扩展名的文件,但也可能是EXE或其他扩展名;Debian系统或Linux中常常是.so的文件。它们向运行于Windows操作系统下的程序提供代码、数据或函数。程序可根据DLL文件中的指令打开、启用、查询、禁用和关闭驱动程序。

因为在动态调用库的时候,往往需要知道函数的类型、声明的方法等,而这些内容都在头文件中,故在生成库文件时可结合头文件,在生成的动态库文件中包含头文件的信息。

由于库文件在链接和运行时被使用,故需要知道其具体的位置,即需要拷贝到预设的路径下,预设的路径可为系统自动设置的,也可为人为设置,例如一般Linux系统把/lib和/usr/lib两个目录作为默认的库搜索路径。优选的,可将动态库文件复制到java.library.path路径下。

由上可知,本发明实施例通过对异构平台的接口进行设计,实现了组成异构平台的子系统间的有效结合,使得异构计算平台健康的运行,基于Spark异构计算平台的子系统承担了Spark平台的一部分计算任务,有效的解决了Spark平台内存开销过大的问题和提高了Spark平台的数据处理速度,也不会大幅增加系统成本和能耗,有利于提升Spark平台的计算性能。

考虑在实际操作过程中,为了更方便的使用该方法,基于上述实施例做了部分改进。

实施例二:

参见图3,图3为本发明实施例提供的另一种异构计算平台子系统间的接口设计方法的流程示意图,本发明实施例例如可与FPGA构成异构平台,在JNI(Java NativeInterface)中实现Scala语言与OpenCL语言的交互,具体的可包括以下内容:

S301:Scala语言进行对调用OpenCL的方法做本地声明。

S302:对修改的Scala语言根据预设的指令进行重新编译。

S303:利用javah的命令生成包含所述调用OpenCL的方法的头文件。

S304:根据所述头文件编译OpenCL代码生成so库文件,并将该库文件复制到java.library.path下。

其中,S301-S304的解释说明可参照S201-S204的解释说明部分,此处不再赘述。

S305:根据预设条件对机器学习算法进行判断。

S306:当判定所述机器学习算法达到所述预设条件时,将所述机器学习算法移植到FPGA进行运算;反之,在所述Spark平台进行运算。

当所述机器学习算法进行运算的时间超过预设时间且机器学习算法适用于并行化计算时,机器学习算法达到预设条件,可分配到FPGA上进行运算;反之,机器学习算法没有达到预设条件,还是在Spark平台上进行运算处理,例如数据的读取,或计算量较小的部分。举例来说,如果要对全国各学校中姓名为“王二”的学生进行统计,并将其这些年的学习成绩调出来作分析,可以按省份同时对学校的教务系统数据库进行排查,就适合于分配到FPGA上做处理。其中,预设时间是用来判断机器学习算法是否复杂耗时,如果超过预设时间,则说明该任务复杂费时。当然,上述例子是为了本领域技术人员更好的理解本申请方案而列举,实际操作中,并不对此做限定。

需要说明的是,根据机器学习算法的复杂程度确定所述FPGA的个数,所述FPGA的个数随着所述机器学习算法的复杂程度的增大而增多。举例来说,例如1ms内分析1000张BBS表需要1个FPGA,那么对于8000张BBS要求在1ms内进行分析处理,那么就需要8个FPGA同时工作。

由上可知,本发明实施例采用FPGA器件与Spark组成异构计算平台,通过对FPGA与Spark平台的接口进行设计,使得二者有效的结合,FPGA用来承担Spark平台上运算任务复杂耗时且适合并行运算的部分,一定程度上加快了Spark平台处理数据的速度,提高了Spark平台的计算性能。

本发明实施例还针对异构计算平台子系统间的接口设计方法提供了相应的实现装置,进一步使得所述方法更具有实用性。下面对本发明实施例提供的异构计算平台子系统间的接口设计装置进行介绍,下文描述的异构计算平台子系统间的接口设计装置与上文描述的异构计算平台子系统间的接口设计方法可相互对应参照。

实施例三:

参见图4,图4为本发明实施例提供的一种异构计算平台子系统间的接口设计装置的结构图,该装置可包括:

声明模块401,用于在Spark平台的本地文件中对FPGA被调用方法做本地声明。

编译模块402,用于对修改后的Spark平台的文件根据预设的指令进行重新编译。

头文件生成模块403,用于利用预设的命令生成包含所述FPGA被调用方法的头文件。

库文件生成模块404,用于根据所述FPGA被调用方法以及所述头文件生成动态库文件,并将所述动态库文件复制到预设路径,以完成Spark平台与FPGA间的接口设计。

可选的,在本实施例的一些实施方式中,请参阅图5所示,可采用与FPGA构成异构计算平台,除了包括上述声明模块501、编译模块502、头文件生成模块503以及库文件生成模块504,所述装置例如还可以包括:

运算模块505,具体可包括:

判断单元5051,用于根据预设条件对机器学习算法进行判断。

运算单元5052,用于当判定所述机器学习算法达到所述预设条件时,将所述机器学习算法移植到FPGA进行运算;反之,在所述Spark平台进行运算。

本发明实施例所述的异构计算平台子系统间的接口设计装置的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本发明实施例通过对异构平台的接口进行设计,实现了组成异构平台的子系统间的有效结合,使得异构计算平台健康的运行,基于Spark异构计算平台的子系统承担了Spark平台的一部分计算任务,有效的解决了Spark平台内存开销过大的问题和提高了Spark平台的数据处理速度,也不会大幅增加系统成本和能耗,有利于提升Spark平台的计算性能。

实施例四:

本发明实施例还提供了一种异构计算平台子系统间的接口设计系统,参见图6,可采用FPGA与Spark平台构成异构计算平台,具体包括:

FPGA 601,用于处理符合预设条件的机器学习算法。

计算节点602,用于对所述Spark平台上的计算任务进行资源分配和任务调度。

如前所述的异构计算平台子系统间的接口设计装置603,具体构造请参阅上述实施例所述,此处不再赘述。

其中,计算节点可以有多个,计算节点与一个或多个FPGA相连,优选的,计算节点通过PCIe接口与一个或多个FPGA相连。

本发明实施例所述的异构计算平台子系统间的接口设计系统的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本发明实施例采用FPGA器件与Spark组成异构计算平台,通过对FPGA与Spark平台的接口进行设计,使得二者有效的结合,FPGA用来承担Spark平台上运算任务复杂耗时且适合并行运算的部分,一定程度上加快了Spark平台处理数据的速度,提高了Spark平台的计算性能。

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

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的一种异构计算平台子系统间的接口设计方法、装置及系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号