一种本地设备与异构设备之间的通信方法、系统及相关装置制造方法及图纸

技术编号:27217647 阅读:33 留言:0更新日期:2021-02-04 11:35
本申请提供一种本地设备与异构设备之间的通信方法,包括:接收异构设备的通信请求;为所述异构设备配置对应的独立MPI进程;在所述独立MPI进程内利用预设异构通信框架执行所述异构设备的第一内存与本地设备的第二内存之间的数据交互,以完成所述本地设备与所述异构设备之间的通信。本申请能够提高异构并行计算能力,显著增加了异构计算效率。本申请还提供一种本地设备与异构设备之间的通信系统、计算机可读存储介质和电子设备,具有上述有益效果。果。果。

【技术实现步骤摘要】
一种本地设备与异构设备之间的通信方法、系统及相关装置


[0001]本申请涉及电子设备通信领域,特别涉及一种本地设备与异构设备之间的通信方法、系统及相关装置。

技术介绍

[0002]随着人工智能、大数据等概念的兴起,传统以CPU作为计算单元的服务器,其计算能力已无法满足目前数据中心的计算需求,为了突破计算瓶颈,异构系统应运而生,所谓的异构,就是CPU、DSP、GPU、FPGA、ASIC等各种计算单元、使用不同的类型指令集、不同的体系架构的计算单元,组成一个混合的系统,即为异构计算。
[0003]在实际运用中,为缩减计算时间,应用程序往往使用异构系统进行多设备并行计算,但不同类设备间的通信由于采用的数据处理方式不同,数据难以兼容,造成多异构设备间的协作处理效率较低。
[0004]因此,如何提高异构设备间的高效通信是本领域技术人员亟需解决的技术问题。

技术实现思路

[0005]本申请的目的是提供一种本地设备与异构设备之间的通信方法、系统、计算机可读存储介质和电子设备,能够实现本地设备与异构设备之间的通信。
[0006]为解决上述技术问题,本申请提供一种本地设备与异构设备之间的通信方法,具体技术方案如下:
[0007]接收异构设备的通信请求;
[0008]为所述异构设备配置对应的独立MPI进程;
[0009]在所述独立MPI进程内利用预设异构通信框架执行所述异构设备的第一内存与本地设备的第二内存之间的数据交互,以完成所述本地设备与所述异构设备之间的通信。
>[0010]可选的,若所述预设异构通信框架包括OpenCL框架,则所述在所述独立MPI进程内利用预设异构通信框架执行所述异构设备的第一内存与本地设备的第二内存之间的数据交互包括:
[0011]利用所述OpenCL框架的缓冲区读取机制从所述异构设备的第一内存中读取待通信数据;
[0012]利用所述独立MPI进程在所述第二内存中执行所述待通信数据的进程间通信,得到通信响应数据;
[0013]将所述通信响应数据存储于本地设备的第二内存;
[0014]利用所述OpenCL框架的写缓冲区机制将所述通信响应数据从所述第二内存写入所述第一内存。
[0015]可选的,利用所述独立MPI进程在所述第二内存中执行所述待通信数据的进程间通信,得到通信响应数据包括:
[0016]在所述第二内存中将所述待通信数据由所述独立MPI进程切换至第二独立MPI进
程处理,并在所述第二独立MPI进程中调用所述待通信数据所需的异构通信算子对所述待通信数据进行数据处理,得到通信响应数据。
[0017]可选的,在所述第二独立MPI进程中调用异构通信算子对所述待通信数据进行数据处理之前,还包括:
[0018]利用Cmake编译工具编译并封装所述异构通信算子;
[0019]其中,所述异构通信算子包括Heter_Send、Heter_Recv、Heter_Broadcast、Heter_Scatter、Heter_Gather、Heter_Reduce、Heter_Allreduce、Heter_Allgather中一种或任意几种的组合。
[0020]可选的,利用Cmake编译工具编译并封装所述异构通信算子之后,还包括:
[0021]对每个所述异构通信算子调用单元测试框架进行功能测试;
[0022]若功能测试失败,重新编译并封装所述异构通信算子。
[0023]可选的,为所述异构设备配置对应的独立MPI进程之后,还包括:
[0024]将所述独立MPI进程和对应的异构设备信息添加至异构设备管理列表;
[0025]利用所述异构设备管理列表管理与所述本地设备通信的所有异构设备。
[0026]可选的,若所述通信请求为异构设备间通信请求,则所述在所述第二内存中将所述待通信数据由所述独立MPI进程切换至第二独立MPI进程处理,并在所述第二独立MPI进程中调用所述待通信数据所需的异构通信算子对所述待通信数据进行数据处理,得到通信响应数据包括:
[0027]在所述第二内存中由所述独立MPI进程将所述待通信数据发送至第二独立MPI进程;所述第二独立MPI进程用于管理与所述本地设备相连的另一异构设备;
[0028]在所述第二独立MPI进程中开辟预设存储空间,并在所述预设存储空间中调用所述待通信数据所需的异构通信算子对所述待通信数据进行数据处理,得到通信响应数据。
[0029]本申请还提供一种本地设备与异构设备之间的通信系统,包括:
[0030]请求接收模块,用于接收异构设备的通信请求;
[0031]进程分配模块,用于为所述异构设备配置对应的独立MPI进程;
[0032]异构通信模块,用于在所述独立MPI进程内利用预设异构通信框架执行所述异构设备的第一内存与本地设备的第二内存之间的数据交互,以完成所述本地设备与所述异构设备之间的通信。
[0033]本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法的步骤。
[0034]本申请还提供一种电子设备,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上所述的方法的步骤。
[0035]本申请提供一种本地设备与异构设备之间的通信方法,包括:接收异构设备的通信请求;为所述异构设备配置对应的独立MPI进程;在所述独立MPI进程内利用预设异构通信框架执行所述异构设备的第一内存与本地设备的第二内存之间的数据交互,以完成所述本地设备与所述异构设备之间的通信。
[0036]本申请利用MPI进程对异构设备进行管理,将异构设备的通信过程转化为MPI进程间操作,将异构设备的通信数据经由本地设备和异构设备的内存执行内存间数据交互,从而实现本地设备和异构设备间的异构通信,在此基础上,还可以同时建立本地设备与多个
异构设备间的通信,从而实现异构设备与异构设备之间的通信,藉由内存间数据交互解决了异构设备兼容性问题,提高异构并行计算能力,显著增加了异构计算效率。
[0037]本申请还提供一种本地设备与异构设备之间的通信系统、计算机可读存储介质和电子设备,具有上述有益效果,此处不再赘述。
附图说明
[0038]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0039]图1为本申请实施例所提供的本地设备与异构设备之间的通信方法的流程图;
[0040]图2为本申请实施例所提供的本地设备与异构设备之间的数据交互的流程图;
[0041]图3为本申请实施例所提供的本地设备与异构设备之间的通信系统结构示意图。
具体实施方式
...

【技术保护点】

【技术特征摘要】
1.一种本地设备与异构设备之间的通信方法,其特征在于,包括:接收异构设备的通信请求;为所述异构设备配置对应的独立MPI进程;在所述独立MPI进程内利用预设异构通信框架执行所述异构设备的第一内存与本地设备的第二内存之间的数据交互,以完成所述本地设备与所述异构设备之间的通信。2.根据权利要求1所述的通信方法,其特征在于,若所述预设异构通信框架包括OpenCL框架,则所述在所述独立MPI进程内利用预设异构通信框架执行所述异构设备的第一内存与本地设备的第二内存之间的数据交互包括:利用所述OpenCL框架的缓冲区读取机制从所述异构设备的第一内存中读取待通信数据;利用所述独立MPI进程在所述第二内存中执行所述待通信数据的进程间通信,得到通信响应数据;将所述通信响应数据存储于本地设备的第二内存;利用所述OpenCL框架的写缓冲区机制将所述通信响应数据从所述第二内存写入所述第一内存。3.根据权利要求2所述的通信方法,其特征在于,利用所述独立MPI进程在所述第二内存中执行所述待通信数据的进程间通信,得到通信响应数据包括:在所述第二内存中将所述待通信数据由所述独立MPI进程切换至第二独立MPI进程处理,并在所述第二独立MPI进程中调用所述待通信数据所需的异构通信算子对所述待通信数据进行数据处理,得到通信响应数据。4.根据权利要求3所述的通信方法,其特征在于,在所述第二独立MPI进程中调用异构通信算子对所述待通信数据进行数据处理之前,还包括:利用Cmake编译工具编译并封装所述异构通信算子;其中,所述异构通信算子包括Heter_Send、Heter_Recv、Heter_Broadcast、Heter_Scatter、Heter_Gather、Heter_Reduce、Heter_Allreduce、Heter_Allgather中一种或任意几种的组合。5.根据权利要求4所述的通信方法,其特征在于,利用Cmake编译工具编译并封装所...

【专利技术属性】
技术研发人员:曹芳郭振华王丽高开邱志勇陈永芳
申请(专利权)人:山东云海国创云计算装备产业创新中心有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1