一种数据传输方法、装置、设备及存储介质

文档序号:1925248 发布日期:2021-12-03 浏览:7次 >En<

阅读说明:本技术 一种数据传输方法、装置、设备及存储介质 (Data transmission method, device, equipment and storage medium ) 是由 樊嘉恒 王彦伟 阚宏伟 于 2021-07-29 设计创作,主要内容包括:本发明公开了一种数据传输方法、装置、设备及存储介质;在本方案中,主机设备及FPGA加速设备在向对方发送数据时,不仅仅需要发送当前待发送的数据,还需要发送历史数据,通过该方式,可以使得主机设备和FPGA加速设备在传输数据时,就算出现超时和丢包现象,也可以从后续发送的命令组及命令反馈组中的历史命令及历史命令反馈中获取相关数据,避免重新获取,提高数据传输效率。(The invention discloses a data transmission method, a device, equipment and a storage medium; according to the scheme, when the host device and the FPGA accelerating device send data to the other side, not only the current data to be sent need to be sent, but also historical data need to be sent.)

一种数据传输方法、装置、设备及存储介质

技术领域

本发明涉及数据传输技术领域,更具体地说,涉及一种数据传输方法、装置、设备及存储介质。

背景技术

OpenCL(Open Computing Language,开放运算语言)是一个为异构平台编写程序的框架,此异构平台可由CPU(central processing unit,中央处理器),GPU(graphicsprocessing unit,图形处理器)或其他类型的处理器组成。OpenCL由一门用于编写kernels(在OpenCL设备上运行的函数)的语言(基于C99)和一组用于定义并控制平台的API(Application Programming Interface,应用程序接口)组成。OpenCL提供了基于任务分割和数据分割的并行计算机制。目前加速设备的分布式管理和云化管理已经成为趋势。FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)云是云计算的核心算力,同时也是一种新型的行业解决方案。首先,它是一种异构计算平台的体系结构,通过并行和流水等设计手段,提高计算性能、能效比和计算实时性,对应用进行硬件加速处理。在使用OpenCL的标准框架,调用FPGA的计算单元是目前比较流行的使用方案。

目前,主机设备和FPGA加速设备是通过网络进行数据通讯的,当网络状态畅通稳定的时候,这种工作模式是可以正常工作的,但是当网络发生拥塞或者传输不稳定的时候,就会出现严重的超时和丢包的现象。这样就会导致主机和FPGA加速设备进行数据传输和命令传输的效率降低。

因此,如何避免主机设备和FPGA加速设备在传输数据时,出现严重的超时和丢包现象,提高数据传输效率,是本领域技术人员需要解决的问题。

发明内容

本发明的目的在于提供一种数据传输方法、装置、设备及存储介质,以避免主机设备和FPGA加速设备在传输数据时,出现严重的超时和丢包现象,提高数据传输效率。

为实现上述目的,本发明提供的一种数据传输方法,包括:

主机设备确定待发送至FPGA加速设备的各个命令;

所述主机设备在发送当前命令时,根据所述当前命令及历史命令生成命令组,并将所述命令组发送至所述FPGA加速设备;

所述主机设备接收所述FPGA加速设备发送的与所述当前命令对应的命令反馈组,所述命令反馈组包括:当前命令反馈及历史命令反馈。

其中,主机设备确定待发送至FPGA加速设备的各个命令之前,还包括:

所述主机设备将待计算的原始数据发送至所述FPGA加速设备;

所述主机设备接收到所述FPGA加速设备发送的原始数据反馈后,执行所述主机设备确定待发送至FPGA加速设备的各个命令的步骤。

其中,所述根据所述当前命令及历史命令生成命令组,包括:

根据各个命令的发送顺序设置每个命令的编号;其中,命令的发送顺序越早,则命令的编号越小;

确定当前命令的第一编号,以及小于所述第一编号的第二编号;

将与所述第二编号对应的命令作为历史命令;

根据所述当前命令及所述历史命令生成命令组;所述命令组中的当前命令具有第一编号,历史命令具有第二编号。

其中,所述数据传输方法还包括:

所述FPGA加速设备接收到所述命令组后,从所述命令组中获取所述当前命令进行响应,生成当前命令反馈;

将与所述第二编号对应的命令反馈作为历史命令反馈;

根据所述当前命令反馈及所述历史命令反馈生成命令反馈组,并发送至所述主机设备。

其中,所述方法还包括:

若所述FPGA加速设备检测到目标命令丢包,则所述FPGA加速设备从所述命令组中查找对应的历史命令并进行响应。

其中,所述方法还包括:

若所述主机设备检测到目标命令反馈丢包,则所述主机设备从所述命令反馈组中查找对应的历史命令反馈。

为实现上述目的,本发明进一步提供一种数据传输装置,包括:

确定模块,用于通过主机设备确定待发送至FPGA加速设备的各个命令;

第一生成模块,用于在发送当前命令时,根据所述当前命令及历史命令生成命令组;

第一发送模块,用于将所述命令组发送至所述FPGA加速设备;

接收模块,用于接收所述FPGA加速设备发送的与所述当前命令对应的命令反馈组,所述命令反馈组包括:当前命令反馈及历史命令反馈。

其中,所述装置还包括:

第二发送模块,用于将待计算的原始数据发送至所述FPGA加速设备;

其中,所述确定模块具体用于:在接收到所述FPGA加速设备发送的原始数据反馈后,确定待发送至FPGA加速设备的各个命令。

为实现上述目的,本发明进一步提供一种电子设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现上述数据传输方法的步骤。

为实现上述目的,本发明进一步提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据传输方法的步骤。

通过以上方案可知,本发明实施例提供的一种数据传输方法,包括:主机设备确定待发送至FPGA加速设备的各个命令;主机设备在发送当前命令时,根据当前命令及历史命令生成命令组,并将命令组发送至FPGA加速设备;主机设备接收FPGA加速设备发送的与当前命令对应的命令反馈组,该命令反馈组包括:当前命令反馈及历史命令反馈。可见,本方案中的主机设备及FPGA加速设备在向对方发送数据时,不仅仅需要发送当前待发送的数据,还需要发送历史数据,通过该方式,可以使得主机设备和FPGA加速设备在传输数据时,就算出现超时和丢包现象,也可以从后续发送的命令组及命令反馈组中的历史命令及历史命令反馈中获取相关数据,避免重新获取,提高数据传输效率;本发明还公开了一种数据传输装置、设备及存储介质,同样能实现上述技术效果。

附图说明

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

图1为现有方案中的命令传输过程示意图;

图2为本发明实施例公开的一种数据传输方法流程示意图;

图3为本发明实施例公开的命令传输过程示意图;

图4为本发明实施例公开的一种数据传输装置结构示意图;

图5为本发明实施例公开的一种电子设备结构示意图。

具体实施方式

需要说明的是,在FPGA云平台的框架下,目前使用OpenCL调用设备有以下流程:

1、上层软件准备需要计算的原始数据,调用OpenCL标准接口。

2、OpenCL收到数据后,将数据传递到MMD层(设备管理层)。

3、MMD层找到对应的设备,调用设备注册的数据传输接口,进行数据的发送。

4、上层软件再次调用OpenCL的接口,来启动FPGA加速设备进行计算。

5、OpenCL将命令传递给MMD层,MMD层将命令分解,按照顺序进行命令的发送。

6、当FPGA加速设备完成计算后,发送通知命令给主机设备。

7、主机设备得到FPGA加速设备的完成通知后,开始读取FPGA加速设备上的结果数据。

8、反复以上的过程,来不断完成数据的加速计算处理。

参见图1,为现有方案中的命令传输过程示意图,图中的数据流即为主机设备发送至FPGA加速设备的原始数据,FPGA加速设备接收到原始数据后,发送数据流反馈,以通知主机设备其接收到了原始数据。然后T1时刻发送命令1,T2时刻发送命令2,T3时刻发送命令3,FPGA设备收到命令后,按照顺序执行命令,执行命令后按照顺序发送命令的反馈,执行完最后的计算命令后,FPGA加速设备会发送完成通知,以便主机设备从FPGA加速设备读取最终的计算结果。

但是在传输命令及命令反馈的过程中,若出现超时和丢包的现象,则会影响数据传输效率,如:主机设备完成命令1、命令2、命令3的发送后,主机设备等待FPGA加速设备的的反馈。若此时发生了丢包的现象导致命令2的反馈丢失,主机设备没有收到命令2的反馈,这时主机设备需要触发超时重传的指令,重新发送命令2,并等待命令2的反馈,直到收到所有命令的反馈才进行下一步。可见,这种数据传输方式会导致主机和FPGA进行数据传输和命令传输的效率降低。

因此,本发明实施例公开了一种数据传输方法、装置、设备及存储介质,以避免主机设备和FPGA加速设备在传输数据时,出现严重的超时和丢包现象,提高数据传输效率。

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

参见图2,本发明实施例提供的一种数据传输方法流程示意图,包括:

S101、主机设备确定待发送至FPGA加速设备的各个命令;

参见图3,为本发明实施例提供的命令传输过程示意图;通过图3可以看出,在本方案中,主机设备需要将待计算的原始数据发送至FPGA加速设备,主机设备接收到FPGA加速设备发送的原始数据反馈后,再执行主机设备确定待发送至FPGA加速设备的各个命令的步骤。如图3所示,在本实施例中,仅以命令1、命令2和命令3这三个命令为例对本方案进行说明,在实际应用中,命令的数量并不局限于3个。

S102、主机设备在发送当前命令时,根据当前命令及历史命令生成命令组,并将该命令组发送至FPGA加速设备;

在本实施例中,主机设备在发送当前命令时,首先需要根据各个命令的发送顺序设置每个命令的编号;该命令的发送顺序越早则命令的编号越小;确定当前命令的第一编号以及小于第一编号的第二编号;将与第二编号对应的命令作为历史命令;根据当前命令及历史命令生成命令组;该命令组中的当前命令具有第一编号,历史命令具有第二编号。如:若存在三个命令,则将第一个发送的命令编号设置为1,将第二个发送的命令编号设置为2,将第三个发送的命令编号设置为3,也即,根据发送顺序得到的命令为:命令1、命令2、命令3。若当前待发送的命令为命令2,则代表第一编号为2,小于第一编号的第二编号为1,并将编号为2对应的命令2作为历史命令,根据当前命令(命令2)及历史命令(命令1)生成命令组。

也就是说,本方案在发送命令的时候,就先考虑到丢包的情况,在T1的时刻向FPGA加速设备发送命令1。在T2时刻,将命令1和命令2进行整合生成命令组,发送至FPGA加速设备;在T3时刻,将命令1,命令2,命令3进行整合生成命令组,发送至FPGA加速设备。这样FPGA加速设备检测到目标命令丢包后,可从命令组中查找对应的历史命令并进行响应,如:FPGA加速设备未接收到命令1,此时可从与命令2对应的命令组中获取到命令1,也可以从命令3对应的命令组中获取命令1,从而降低丢包的情况,除非发生第三组命令丢失,否则前2组命令丢失都不会触发重传的机制。

并且,若网络传输数据时没有丢包,FPGA加速设备需要从命令组中确定待执行的命令,如:收到命令1的命令组后,由于该命令组只包括命令1,此时可直接执行命令1;收到命令2对应的命令组后,由于该命令组包括命令1和命令2,此时需要判断命令1是否执行,若已执行命令1,此时就不需要继续执行命令1,可直接执行命令2,以此类推,就可根据主机设备发送的各个命令组,顺序执行命令1,命令2,命令3。

S103、主机设备接收FPGA加速设备发送的与当前命令对应的命令反馈组,该命令反馈组包括:当前命令反馈及历史命令反馈。

在本实施例中,FPGA加速设备接收到命令组后,从命令组中获取当前命令进行响应生成当前命令反馈,然后将与第二编号对应的命令反馈作为历史命令反馈,根据当前命令反馈及历史命令反馈生成命令反馈组并发送至主机设备。如:FPGA加速设备接收到命令组包括:当前命令(命令2)及历史命令(命令1),第一编号为2,第二编号为1;FPGA加速设备在响应命令2后生成命令2反馈,然后将与第二编号对应的命令1反馈作为历史命令反馈,将命令2反馈及命令1反馈生成命令反馈组。

也即:本方案中的FPGA加速设备也需要将命令反馈进行整合发送,如:与命令1对应的命令反馈组包括命令1反馈,与命令2对应的命令反馈组包括命令1反馈和命令2反馈,与命令3对应的命令反馈组包括命令1反馈、命令2反馈和命令3反馈。通过该方式,若主机设备检测到目标命令反馈丢包,便可直接从命令反馈组中查找对应的历史命令反馈。如:主机设备未接收到命令1反馈,此时可从与命令2对应的命令反馈组中获取到命令1反馈,也可以从命令3对应的命令反馈组中获取命令1反馈,从而降低丢包的情况,除非发生第三组命令丢失,否则前2组命令丢失都不会触发重传的机制。

综上所述,本方案中的主机设备及FPGA加速设备在向对方发送数据时,不仅仅需要发送当前待发送的数据,还需要发送历史数据,通过该方式,可以使得主机设备和FPGA加速设备在传输数据时,就算出现超时和丢包现象,也可以从后续发送的命令组及命令反馈组中的历史命令及历史命令反馈中获取相关数据,避免重新获取,提高数据传输效率。

下面对本发明实施例提供的传输装置、设备及介质进行介绍,下文描述的传输装置、设备及介质与上文描述的传输方法可以相互参照。

参见图4,本发明实施例提供的一种数据传输装置结构示意图,包括:

确定模块11,用于通过主机设备确定待发送至FPGA加速设备的各个命令;

第一生成模块12,用于在发送当前命令时,根据所述当前命令及历史命令生成命令组;

第一发送模块13,用于将所述命令组发送至所述FPGA加速设备;

接收模块14,用于接收所述FPGA加速设备发送的与所述当前命令对应的命令反馈组,所述命令反馈组包括:当前命令反馈及历史命令反馈。

其中,所述装置还包括:

第二发送模块,用于将待计算的原始数据发送至所述FPGA加速设备;

其中,所述确定模块具体用于:在接收到所述FPGA加速设备发送的原始数据反馈后,确定待发送至FPGA加速设备的各个命令。

其中,所述第一生成模块包括:

设置单元,用于根据各个命令的发送顺序设置每个命令的编号;其中,命令的发送顺序越早,则命令的编号越小;

第一确定单元,用于确定当前命令的第一编号,以及小于所述第一编号的第二编号;

第二确定单元,用于将与所述第二编号对应的命令作为历史命令;

生成单元,用于根据所述当前命令及所述历史命令生成命令组;所述命令组中的当前命令具有第一编号,历史命令具有第二编号。

其中,所述装置包括:

第一响应模块,用于在所述FPGA加速设备接收到所述命令组后,从所述命令组中获取所述当前命令进行响应,生成当前命令反馈,并将与所述第二编号对应的命令反馈作为历史命令反馈;

第二生成模块,用于根据所述当前命令反馈及所述历史命令反馈生成命令反馈组;

第三发送模块,用于将所述命令反馈组发送至所述主机设备。

其中,所述装置还包括:

第二响应模块,用于在所述FPGA加速设备检测到目标命令丢包时,从所述命令组中查找对应的历史命令并进行响应。

其中,所述装置还包括:

第三响应模块,用于在所述主机设备检测到目标命令反馈丢包时,从所述命令反馈组中查找对应的历史命令反馈。

参见图5,为本发明实施例提供的一种电子设备结构示意图,包括:

存储器21,用于存储计算机程序;

处理器22,用于执行所述计算机程序时实现上述方法实施例所述的数据传输方法的步骤。

在本实施例中,设备可以是PC(Personal Computer,个人电脑),也可以是智能手机、平板电脑、掌上电脑、便携计算机等终端设备。

该设备可以包括存储器21、处理器22和总线23。

其中,存储器21至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器21在一些实施例中可以是设备的内部存储单元,例如该设备的硬盘。存储器21在另一些实施例中也可以是设备的外部存储设备,例如设备上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器21还可以既包括设备的内部存储单元也包括外部存储设备。存储器21不仅可以用于存储安装于设备的应用软件及各类数据,例如执行数据传输方法的程序代码等,还可以用于暂时地存储已经输出或者将要输出的数据。

处理器22在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器21中存储的程序代码或处理数据,例如执行数据传输方法的程序代码等。

该总线23可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

进一步地,设备还可以包括网络接口24,网络接口24可选的可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该设备与其他电子设备之间建立通信连接。

可选地,该设备还可以包括用户接口25,用户接口25可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口25还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在设备中处理的信息以及用于显示可视化的用户界面。

图5仅示出了具有组件21-25的设备,本领域技术人员可以理解的是,图5示出的结构并不构成对设备的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。

为本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法实施例所述的数据传输方法的步骤。

其中,该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

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

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:数据处理方法、装置、设备及计算机可读存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!