发明内容
本发明实施例公开了一种任务处理的方法、相关设备及计算机存储介质,能够解决传统方案中存在的任务请求下发频繁,且无法实现除传输功能外的其他功能操作等问题。
第一方面,本发明实施例公开提供了一种任务处理的方法,所述方法应用于第一设备侧,所述方法包括:获取任务网络图,所述任务网络图包括组成业务通信的至少一个通讯任务请求和/或至少一个计算任务请求。其中,任意两个通信任务请求支持并行执行或者串行执行,所述通讯任务请求用于请求进行所述通讯任务请求所指示的数据传输操作,所述计算任务请求用于请求进行所述计算任务请求所指示的数据计算操作。当所述任务网络图包括所述通讯任务请求时,采用远端直接内存访问RDMA技术执行所述通讯任务请求所指示的数据传输操作;当所述任务网络图包括所述计算任务请求时,执行所述计算任务请求所指示的数据计算操作;在执行完所述任务网络图后,完成所述业务通信。
结合第一方面,在一些可能的实施例中,所述通讯任务请求中携带有所述通讯任务请求的传输类型,当所述通讯任务请求的传输类型指示所述通讯任务请求为发送任务请求时,第一设备获取待发送数据,采用RDMA技术发送所述待发送数据。或者,当所述通讯任务请求的传输类型指示所述通讯任务请求为接收任务请求时,第一设备接收来自第二设备采用RDMA技术发送的待接收数据。
结合第一方面,在一些可能的实施例中,所述通讯任务请求中还携带有源数据地址。当所述通讯任务请求为发送任务请求时,所述待发送数据存储于所述源数据地址中。当所述通讯任务请求为接收任务请求时,所述第一设备可将所述待接收数据存储于所述源数据地址。
结合第一方面,在一些可能的实施例中,当所述通讯任务请求中还携带有所述通讯任务请求所依赖的第一任务请求的标识时,所述待发送数据和所述待接收数据为所述第一任务请求的执行结果,所述第一任务请求为所述通讯任务请求或者所述计算任务请求。或者,当所述通讯任务请求中并未携带所述通讯任务请求所依赖的第一任务请求的标识时,所述待发送数据和所述待接收数据可为预存远端设备的数据(简称为预存数据)。
结合第一方面,在一些可能的实施例中,所述通讯任务请求中还携带所述通讯任务请求关联的队列组标识QP,当所述通讯任务请求为发送队列请求时,第一设备将发送任务请求下发至该队列组标识对应的队列组QP中的接收队列中,等待第一设备的RDMA执行引擎执行该发送任务请求。当通讯任务请求为接收队列请求时,第一设备将接收队列请求下发至该队列组标识对应的队列组QP中的发送队列,等待第一设备的RDMA执行引擎执行该接收队列请求。
结合第一方面,在一些可能的实施例中,第一设备在完成队列中查询到针对通讯任务请求的完成队列条目时,或接收针对通讯任务请求执行完毕的完成通知消息时,确定通讯任务请求已执行完毕。其中,该完成队列存储有完成队列条目,用于指示执行完毕的通讯任务请求的标识。
结合第一方面,在一些可能的实施例中,计算任务请求中携带有计算操作类型,第一设备可获取待计算数据,对该待计算数据进行计算操作类型所指示的计算操作,从而获得该计算任务请求的执行结果。
结合第一方面,在一些可能的实施例中,计算任务请求中还携带有源数据地址。该源数据地址用于存储待计算数据。
结合第一方面,在一些可能的实施例中,计算任务请求中还携带有计算任务请求所依赖的第二任务请求的标识。该待计算数据为第二任务请求的执行结果。
结合第一方面,在一些可能的实施例中,第一设备可对业务通信进行任务分解,获得组成业务通信的至少一个业务任务请求以及至少一个业务任务请求的执行依赖关系,该执行依赖关系包括数据依赖关系和任务执行关系。该任务执行关系包括串行执行和/或并行执行,该数据依赖关系用于指示执行所述业务任务请求时所依赖的其他任务请求,该业务任务请求具体可包括通讯任务请求和/或计算任务请求。第一设备根据至少一个业务任务请求和至少一个业务任务请求的执行依赖关系,生成任务网络图。
第二方面,本发明实施例公开了一种网络设备(具体可为网络接口卡),包括任务执行引擎和RDMA执行引擎。其中,任务执行引擎用于获取任务网络图,该任务网络图中包括组成业务通信的至少一个通讯任务请求和/或至少一个计算任务请求。该任务执行引擎还用于若任务网络图中包括通讯任务请求,则调用RDMA执行引擎执行该通讯任务请求所指示的数据传输操作;若任务网络图中包括计算任务请求,则执行计算任务请求所指示的数据计算操作。任务执行引擎还用于在执行完任务网络图后,确定完成该业务通信。
结合第二方面,在一些可能的实施例中,通讯任务请求中携带有传输类型,任务执行引擎具体用于若传输类型指示通讯任务请求为发送任务请求,则将任务请求条目形式存放于对应队列组QP中的发送队列,等待RDMA执行引擎执行所述发送任务请求;若传输类型指示通讯任务请求为接收任务请求,则将以任务请求条目形式存放于对应队列组QP中的接收队列,等待RDMA执行引擎执行所述接收任务请求。具体的,若通讯任务请求为发送任务请求,则RDMA执行引擎执行所述发送任务请求,获取待发送数据,采用RDMA技术发送待发送数据。若通讯任务请为接收任务请求,则RDMA执行引擎执行所述接收任务请求,接收来自主机设备采用RDMA技术发送的待接收数据。
结合第二方面,在一些可能的实施例中,RDMA执行引擎还用于在执行完通讯任务请求后,向任务执行引擎发送针对该通讯任务请求的完成通知消息,用于通知该通讯任务请求已执行完毕。或者,RDMA执行引擎在执行完通讯任务请求后,可自动生成完成队列条目并添加到完成队列中,所述完成队列条目用于指示通讯任务请求已执行完毕。
结合第二方面,在一些可能的实施例中,计算任务请求携带有计算操作类型。任务执行引擎用于获取待计算数据,对待计算数据执行计算操作类型所指示的计算操作,得到该计算任务请求的执行结果。
关于本发明实施例中未示出或未描述的内容,具体可参见前述第一方面所描述方法实施例中的阐述,这里不再赘述。
第三方面,本发明实施例提供了一种第一设备,所述第一设备包括用于执行如上第一方面所述方法的功能单元。
第四方面,本发明实施例提供了一种第一设备,包括网络接口卡和主机处理器。其中,所述主机处理器用于根据获得的业务通信的至少一个业务任务请求以及所述至少一个业务任务请求的执行依赖关系,生成任务网络图。所述网络接口卡用于获取来自所述主机处理器的任务网络图,并执行所述任务网络图,以实现所述业务通信。关于本发明实施例中未示出或未描述的内容具体可参见前述实施例中的相关阐述,这里不再赘述。
第五方面,本发明实施例提供了一种网络设备(具体可为网络接口卡),包括存储器及与所述存储器耦合的处理器;所述存储器用于存储指令,所述处理器用于执行所述指令;其中,所述处理器执行所述指令时执行上述第四方面中以网络接口卡为执行主体所描述的方法。
第六方面,本发明实施例提供了另一种第一设备,包括存储器及与所述存储器耦合的处理器;所述存储器用于存储指令,所述处理器用于执行所述指令;其中,所述处理器执行所述指令时执行上述第一方面所描述的方法。
在一些可能的实施方式中,所述第一设备还包括通信接口,所述通信接口与所述处理器通信,所述通信接口用于在所述处理器的控制下与其他设备(如网络设备等)进行通信。
第七方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储了用于任务处理的程序代码。所述程序代码包括用于执行上述第一方面或第二方面所描述的方法的指令。
本发明在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
具体实施方式
下面将结合本发明的附图,对本发明实施例中的技术方案进行详细描述。
首先,介绍本申请涉及的一些技术知识。
一、远程直接数据存取(remote direct memory access,RDMA)技术
RDMA技术是为了解决网络传输中服务器端数据处理的延迟而提出的。RDMA通过网络将资料数据直接传入主机设备的存储区,将数据从一个系统快速移动到远程系统的存储器中,而不对系统造成任何影响,也不会消耗多少主机设备的计算资源和处理功能。目前支持RDMA技术有以下三种:Infiniband(IB)、RoCE和iWARP。RDMA能够避免复制提供低时延、降低CPU利用率,减少内存带宽瓶颈并提供高带宽利用率。RDMA提供基于通道的IO操作,允许使用RDMA技术进行应用程序的直接读写远程虚拟内存。
如图1,在传统网络(例如socket网络)中,应用程序从操作请求请求网络资源,通过系统调用来实现网络资源的传输。如图1中,应用程序存储于虚拟缓存区buffer中,该缓存区在操作系统中创建实例缓存,通过网卡nic访问主机设备的操作系统中存储的应用程序。换句话说,传统网络中网络资源(应用程序)由本端设备的操作系统拥有,用户无法直接访问获得网络资源,必须依赖操作系统移动并获得来自应用程序的虚拟缓冲区buffer的网络资源(即数据),然后通过协议堆栈传输到线路上。相应地远端设备中,应用程序需依赖操作系统来获得线路上的数据,并将其存储在虚拟缓冲区buffer中。
然而RDMA技术中,RDMA在操作系统中建立一个通道后,允许应用程序直接交换消息而无需操作系统进一步干预。该消息可以是RDMA直接读取消息、RDMA写入消息、RDMA接收消息或RDMA发送消息等。具体如图2,本端设备和远端设备各自的应用程序均存储于设备相应地虚拟缓冲区buffer中,它们可以直接采用RDMA技术实现数据的相互访问和获取。例如本端设备可采用RDMA技术访问远端设备中存于缓冲区的应用程序。
二、Infiniband(IB)技术
Infiniband(IB)是一种串行网络技术,用于高性能计算的计算机网络通信标准,它具有极高的吞吐量和极低的延迟,用于计算机与计算机之间的数据互连。Infiniband也用作服务器和存储系统之间的直接或交换互连,以及存储系统之间的互连。
Infiniband是一种交换结构IP技术,设计思想是通过一套中心机构(具体可为中心Infiniband交换机)在远程存储器、网络及服务器等设备之间建立一个单一的连接链路,并由中心Infiniband交换机来指挥流量,大大提高了系统的性能、可靠性和有效性,能缓解各硬件设备之间的数据流量拥塞。具体请参见图3,示出一种IB网络框架示意图。如图3所示的网络框架中包括:处理节点301(processor node)、存储节点302(storage node)、输入输出(input output,IO)节点303和Infiniband交换机304。
其中,处理节点301的数量不做限定,图示以一个为例示出。该处理节点301中可包括中央处理器(central processing unit,CPU)、存储器memory、主机接口卡(hostchannel adapter,HCA)。中央处理器CPU的数量不做限定,CPU、存储器和HCA可通过总线(例如PCIe总线)连接。
存储节点302可包括但不限于RAID子系统、存储子系统(storage subsystem)或其他用于数据存储的系统节点。其中,RAID子系统中包括处理器processor、存储器memory、目标适配器(target channel adapter,TCA)、小型计算机系统接口(small computer systeminterface,SCSI)和存储资源,该存储资源包括但不限于硬盘、磁盘或其他存储设备等。存储子系统中可包括控制器controller、目标适配器TCA以及存储资源等。
IO节点具体可为输入输出IO设备,其可包括适配的至少一个IO单元(IO module),该IO单元支持与图像、硬盘、网络等连接。Infiniband交换机的数量通常有多个,它们共同组成Infiniband交换网络,简称Infiniband网络。可选地,Infiniband交换机还支持与路由器router通信。
在实际应用中,各节点之间通过Infiniband交换机相互通信,如图3中Infiniband交换机支持与TCA和HCA通信,其通信链路可称为Infiniband link。Infiniband link是连接HCA和TCA的光纤,Infiniband网络框架中允许硬件厂家以1条、4条和12条光纤三种方式连接TCA和HCA。此外,如图3中HCA是连接内存控制器和TCA的桥梁,TCA将IO设备(例如网卡、SCSI控制器)的数字信号打包发送给HCA。
三、队列组QP
QP是Infiniband的一个重要概念,它是指接收队列和发送队列的组合。实际应用中,主机设备调用应用程序编程接口(application programming interface,API)收发数据请求(例如具体可为任务请求)时,实际将数据请求存放于QP中,然后以轮询的方式将QP中的数据请求进行一一处理。如图4A示出一种请求处理的示意图。如图,主机设备中产生的任务请求(work request,WR)在任务队列(work queue,WQ)中以任务请求条目(workrequest element,WRE)的形式存在。当WQ中的任务请求被主机设备中的硬件(hardware)处理完成之后,生成相应地完成队列条目(completion queue element,CQE)采用完成队列(completion queue,CQ)的方式存放于任务完成(work completion,WC)中。在实际应用中,WQ具体可为接收队列(receive queue,RQ)或发送队列(send queue,SQ)。
请参见图4B具体示出发送队列和接收队列中任务请求的具体处理示意图。如图4B中,发送队列SQ中存储有发送任务请求(send WQE),接收队列RQ中存储有接收任务请求(receive WQE)。其中,主机设备的硬件(hardware)处理发送任务请求时,如图可先从预设读存储器(read buffer)中采用RDMA技术读取该WQE所请求发送的数据,然后将该数据写入至该WQE(即RDMA write WQE),最后发送该WQE(send WQE)、即硬件执行该WQE发送相应地数据。相应地,计算设备的硬件处理接收任务请求时,可将接收任务请求所请求接收的数据存储于接收存储器(receive buffer)中。
其次,介绍一种任务请求处理的流程框架。
请参见图5是本发明实施例提供的一种任务处理框架示意图。如图5中,完成一次业务通信中包括三个任务请求(work request,WR),如图分别为:post WR1~post WR3。每个WR以任务请求条目(work request element,WRE)形式存在于QP中,每个WR支持与一个QP关联,具体地发送send任务请求进入发送队列SQ、接收receive任务请求进入接收队列RQ。主机设备每完成一个WRE的处理后,会生成对应的完成队列条目(completion queueelement,CQE),并存放于完成队列CQ中,用于指示该WRE已执行完毕。
如图,主机设备(例如host0)可通过QP1与主机设备1(图示为host1)通讯、通过QP2与主机设备2(图示为host2)通讯、通过QP3与主机设备3(host3)通讯,依次类推通过QPn与主机设备n(host n)通讯。QP1~QP n与同一完成队列CQ相关。此例中,在实际业务通信中,host0需将来自host1和host2的数据融合后,发送给host3。
具体地,该业务通信中会产生3个任务请求(post WR1~post WR3),以下对应简称为WR1~WR3。其中,WR1具体为发送任务请求recv WR1,用于指示请求接收来自host1的数据A,host0可将WR1以WRE1的形式发送至QP1下的RQ中。WR2同样也为发送任务请求recv WR2,用于指示请求接收来自host2的数据B。host0在完成WR1的下发后,将WR2以WRE2的形式发送至QP2下的RQ中。当host0完成WR1和WR2后,即接收到来自host1和host2各自的数据后,可生成对应的CQE1和CQE2,以对应指示或通知WR1和WR2执行完毕。
相应地在host0下发完WR1和WR2后,可控制轮询完成队列(poll CQ),以获知WR1和WR2是否执行完毕。在执行完毕后,可获取WR1和WR2各自对应接收的数据A和数据B。进一步host0可通过程序控制实现数据A和数据B的融合或叠加,获得新数据C,即数据C=数据A+数据B。Host0下发WR3至CQ3下的SQ中,以执行该WR3。该WR3用于请求将数据C下发至host3中。相应地host0的RDAM执行引擎接收该WR3后,可响应WR3获取数据C,并将数据C发送给host3。在完成WR3的执行后,可生成相应地CQE3,并存放于CQ中。相应地,host0可主动查询CQ(pollCQ)中的CQE3,以获知此次业务通信已完成,进而host0的CPU空闲(CPU idle)。
在实践中发现:当业务通信涉及多个QP中的任务请求时,这些任务请求存在直接地依赖关系,此时主机设备需要通过PCIe总线频繁地与主机设备的RDAM执行引擎,具体可为主机接口卡HCA交互,流程复杂且繁琐。且主机设备需在CPU侧完成WR间依赖关系的处理,无法在HCA侧实现,例如上文中简单地数据计算也放在CPU侧,而非HCA侧。这样比较消耗主机设备中的CPU资源,且频繁交互也会延长数据处理的时延,降低业务通信的效率。
此外,RDMA执行引擎将按照任务请求WR下发顺序执行,只能保证不同任务请求的顺序执行,不能支持同一QP中不同任务请求的同步处理。且,RDMA执行引擎仅具备数据传输功能,无法实现数据计算,无法满足实际业务通信的计算需求。
为解决上述问题,本申请提出另一种任务处理的方法、以及所述方法适用的相关设备。请参见图6,是本发明实施例提供的一种网络框架示意图。如图6所示的网络框架示意图中包括通过IB网络相互通信的N个主机设备及M个存储设备(storage),其中M和N均为正整数。图示中以4个主机设备和2个存储设备为例示出,分别为:主机设备1~主机设备4,存储设备1~存储设备2。如图,任一主机设备600(例如主机设备1)中包括主机处理器(hostprocessor)601、主机存储器(host memory)602和网络接口卡(也可称为主机接口卡,hostchannel adapter,HCA)603。可选地,还可包括控制处理器(control memory)604。其中,
处理器(具体可为主机处理器601或控制处理器604)可以包括一个或多个处理单元,例如:处理器可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processing unit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是主机设备600的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器中的存储器为高速缓冲存储器。该存储器可以保存处理器刚用过或循环使用的指令或数据。如果处理器需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器的等待时间,因而提高了系统的效率。
主机存储器602可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM);存储器也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM)、快闪存储器(flash memory)、硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器还可以包括上述种类的存储器的组合。存储器可用于存储一组程序代码,以便于处理器调用存储器中存储的程序代码实现相应地功能。
如图,主机存储器602中可包括应用application和通讯库library。该应用具体可为系统自定义设置的支持在主机处理器602中运行的应用,例如图示中的高性能计算(highperformance computing,HPC)应用和人工智能(artificial intelligence,AI)应用等。通讯库支持提供通讯接口,以实现主机设备600与其他设备的通讯。如图,该通讯库可包括消息传输接口(message-passing interface,MPI)通讯库和收集交流(nvidia collectivecommunication library,NLLC)通讯库。
具体地,在HPC或AI应用场景,多台主机设备通过网络接口卡HCA603接入IB网络,可组成主机集群。HPC应用支持调用MPI通讯库提供的收集collective接口完成通讯。AI应用也可调用类似NCCL通讯库提供的collective接口完成通讯。MPI或NCCL通讯库通过HCA提供RDMA接口,具体提供发送send接口、接收receive接口、队列轮询poll CQ接口完成实际通讯。
网络接口卡603负责数据的处理,例如本申请下文中任务网络图的解析以及处理任务网络图中包含的任务请求等。如图,网络接口卡603中包括主机接口(host interface)6031、任务执行器(WR executor)6032和IB网络接口(IB interface)6033。其中,
主机接口6031用于实现网络接口卡603和主机设备600的通讯,例如网络接口卡603和控制处理器604。IB网络接口6033用于实现主机设备600与IB网络的通讯,以通过IB网络与网络中的其他主机设备通讯。
任务执行器6032,又称任务执行引擎,用于处理业务通信中所包含的任务请求。可选地,该任务执行器6032中包括控制单元和计算单元。控制单元用于控制任务请求处理的逻辑顺序,计算单元用于实现任务请求所指示的计算操作,例如对数据A和数据B进行融合或求和处理等等。该计算操作具体可为系统自定义设置的,例如求和SUM、取最大值MAX、取最小值MIN等等规则计算。
在实际应用中,任务执行器6032可与主机设备中的队列(queues)交互。例如将发送任务请求下发至SQ、将接收任务请求下发至RQ、将请求完成事件下发至CQ中存储,该请求完成事件也可称为完成通知消息或完成通知事件,用于指示已完成针对该任务请求的处理。具体地,无论发送任务请求还是接收任务请求(都为通讯任务请求)均采用任务请求条目WRE的形式下发到相应队列组CQ中,完成通知事件采用完成队列条目CQE的形式下发到相应完成队列CQ中。
可选地,主机设备中还包括RDMA执行引擎(图未示)。在实际应用中,RDMA执行引擎和任务执行引擎(任务执行器6032)相互配合,完成针对业务通信中包含的所有任务请求的处理,以实现相应地业务通信。例如,任务执行器6032获取任务网络图,并解析任务网络图中包含的任务请求,根据任务请求的逻辑顺序调用RDMA执行引擎完成该任务请求相应的任务处理等。
针对通讯任务请求,HCA通过任务执行引擎6032的控制单元将该通讯任务请求放入相应地队列组QP中,具体以任务请求条目WRE形式存放。等待RDMA执行引擎调度并执行该通讯任务请求。在通讯任务请求执行完毕后,会生成相应地完成队列条目CQE并填充到相应地完成队列中。该完成队列条目用于指示该通讯任务请求已执行完毕,通常完成队列条目与通讯任务请求一一对应,即每个通讯任务请求对应有一个完成队列条目,同时也对应有一个任务请求条目。可选地,该完成队列条目用于指示对应通讯任务请求已执行完毕,通常携带有对应通讯任务请求的标识。即指示已执行完毕的通讯任务请求的标识。可选地,控制单元通过接收针对通讯任务请求执行的完成通知消息或主动轮询完成队列CQ等方式,获知该通讯任务请求的执行状态,确定该通讯任务请求是否执行结束。
针对计算任务请求,HCA通过任务执行引擎6032中的控制单元实现计算任务请求的数据获取,通过任务执行引擎6032中的计算单元实现相应数据的计算,以将计算结果存放于相应目的地址处。在计算单元完成计算任务请求所请求的计算后,向控制单元发送完成通知消息,以通知当前已执行完计算任务请求。关于通讯任务请求及计算任务请求的具体执行将在本申请下文详述,这里不做详述。
本申请中,主机处理器601、主机存储器602、网络接口卡603以及控制处理器604可采用总线相互连接。总线可以是外设部件互连标准(英文:Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(英文:Extended Industry StandardArchitecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图示中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
基于上述实施例,下面介绍本申请涉及的任务请求处理方法相关的实施例。请参见图7,是本发明实施例提供的一种任务请求处理方法的流程示意图。如图7所示的方法应用于如图6所示的主机设备中,该主机设备包括主机处理器和网络接口卡HCA。所述方法包括如下实施步骤:
S701、第一设备通过主机处理器构建任务网络图,该任务网络图包括组成业务通信的至少一个业务任务请求以及它们各自的执行依赖关系,所述业务任务请求具体可包括通讯任务请求和/或计算任务请求。
针对第一设备的某次业务通信而言,第一设备(具体可为第一设备的主机处理器)可对该业务通信进行任务分解,得到组成该业务通信的至少一个业务任务请求以及该业务请求的执行依赖关系。该执行依赖关系用于指示业务任务请求的执行顺序及所依赖的其他任务请求。进一步第一设备根据该至少一个业务任务请求及各自的执行依赖关系,构建生成任务网络图。
其中,任务分解的具体实施方式并不做限定。例如,第一设备可按照业务通信的操作步骤来进行任务拆分,如一个操作步骤对应封装为一个任务请求,从而获得组成该业务通信的一个或多个业务任务请求。
本申请涉及的任务请求WR可分为两类,分别为计算任务请求和通讯任务请求。每个任务请求WR拥有相应地唯一标识WR-id来区分,该标识包括但不限于身份标识identify、编号或其他自定义用于区分任务请求的标识符。本申请涉及的第一设备具体可为图6所示的主机设备,包括有主机处理器(简称处理器CPU)和网络接口卡HCA,对应参考图6所示实施例中的相关介绍,这里不再赘述。
在一些实施例中,任务请求中携带有自定义设置的参数,例如其可包括但不限于以下中的任一种或多种的组合:任务请求的标识、任务请求的任务类型、源数据地址、目的地址及长度、验证关键字(qkey)等信息。其中,任务请求的任务类型用于指示该任务请求为计算任务请求还是通讯任务请求,该任务请求的任务类型通常可用预设字符表示,例如用“0”表示该任务请求为通讯任务请求,“1”表示该任务请求为计算任务请求等等。
S702、第一设备的主机处理器将任务网络图下发给第一设备的网络接口卡HCA。相应地,第一设备的HCA获取任务网络图。
S703、第一设备通过HCA解析该任务网络图,执行任务网络图中的每个任务请求,完成业务通信。
第一设备通过主机处理器构建任务网络图后,可将该任务网络图下发给第一设备的网络接口卡HCA。相应地,HCA接收该任务网络图,解析该任务网络图,获得组成业务通信的至少一个业务任务请求及该业务任务请求的执行依赖关系。该业务任务请求包括通讯任务请求和/或计算任务请求。进一步HCA根据任务网络图中每个业务任务请求的执行依赖关系,执行该业务任务请求,直至完成任务网络图中每个业务任务请求的处理,从而实现第一设备的业务通信。
在一些实施例中,通讯任务请求用于请求进行相应数据传输操作,例如数据发送或数据接收。该通讯任务请求中可携带一些自定义参数,例如其包括但不限于以下中的任一种或多种的组合:通讯任务请求的标识、该通讯任务请求关联的队列组QP(或队列组QP标识)、通讯任务请求的传输类型(例如为发送任务请求send或接收任务请求receive)、通讯任务请求所依赖的其他任务请求(具体可为该其他任务请求的标识)及通讯所需的其他信息,例如源数据地址及长度、目的地址及长度等信息。其中,源数据地址和目的地址均用于存储数据,长度用于指示数据的大小。源数据地址通常用于存储接收的数据,目的地址通常用于存储所需发送的数据或设备自身计算得到的数据等等。
计算任务请求用于请求进行相应地数据计算操作,例如进行数据融合/求和SUM、数据求取最大值MAX、数据求取最小值MIN等。该计算任务请求中可携带一些自定义参数,例如其可包括但不限于中的任一种或多种的组合:计算任务请求的标识、计算操作类型(例如SUM、MAX或MIN等)、数据操作类型(例如整数int、长整型long等)、源数据地址及长度、目的地址及长度、验证关键字(qkey)、计算任务请求所依赖的其他任务请求(具体可为其他任务请求的标识)等。其中,数据操作类型用于指示计算任务请求进行数据操作涉及数据的类型,其可为整数int、浮点数float等。验证关键字用于通信对端设备验证信息的合法性,类似于密钥验证。
在一些实施例中,执行依赖关系具体可包括任务执行关系及数据依赖关系。该任务执行关系用于指示任务请求的执行顺序,该执行顺序包括但不限于并行执行和/或串行执行。该数据依赖关系用于指示任务请求执行时所依赖的其他任务请求,具体可依赖来自其他任务请求的执行结果。例如,在执行第二任务请求时需使用到第一任务请求的执行结果,则该第二任务请求依赖于第一任务请求,具体依赖于第一任务请求的执行结果。
举例来说,以第一设备为主机设备2为例,主机设备2进行业务通信的流程具体如下:主机设备2需接收来自主机设备4和主机设备5的数据,并对其融合得到融合数据,再将融合数据发送给主机设备1使用。参见图8,具体示出该业务通信对应的任务网络图的示意图。其中,正方形表示通讯任务请求,圆圈表示计算任务请求。如图8,该业务通信包含4个任务请求,分别为计算任务请求T3、通讯任务请求T1、T2及T4。如图通讯任务请求T1用于指示接收来自主机设备4的数据1,T1中携带有任务请求的标识(图示WR-ID:1)、任务请求的类型(WR-TYPE:0,表示为通讯任务请求)、任务请求关联的队列组标识(local QP number,local-QPN:1)、任务请求的传输类型(opcode:receive,表示为接收任务请求)、任务请求所依赖的其他任务请求的标识(depend:null,表示不依赖于其他任务请求)。可选地,T1中还可包括源数据地址(src-addr)以及源数据长度(src-length)。其中,该源数据地址为用于存储数据1的起始地址,源数据长度用于反映数据1的大小。
通讯任务请求T2用于指示接收来自主机设备5的数据2,T2中携带有任务请求的标识(图示WR-ID:2)、任务请求的类型(WR-TYPE:0,表示为通讯任务请求)、任务请求关联的队列组标识(local-QPN:2)、任务请求的传输类型(opcode:receive,表示为接收任务请求)、任务请求所依赖的其他任务请求的标识(depend:null,表示不依赖于其他任务请求)。可选地,T2中还可包括源数据地址(src-addr)以及源数据长度(src-length)。其中,该源数据地址为用于存储数据2的起始地址,源数据长度用于反映数据2的大小。
计算任务请求T3用于指示对数据1和数据2进行融合操作得到融合数据。T3中携带有任务请求的标识(图示WR-ID:3)、任务请求的类型(WR-TYPE:1,表示为计算任务请求)、计算操作类型(calc-type:SUM,表示数据求和)、源数据地址1(src-addr1)、源数据地址2(src-addr2)、目的地址(dest-addr)、数据操作类型(data-type:int)、数据长度(data-length)以及任务请求所依赖的其他任务的标识(depend:1、2,表示T3依赖于T1和T2,具体依赖它们的执行结果,这里即为数据1和数据2)。其中,源数据地址1和源数据地址2分别用于存储T1和T2任务请求各自的执行结果,例如源数据地址1用于存储数据1,源数据地址2用于存储数据2。目的地址用于存储计算任务请求T3的执行结果,这里可用于存储融合数据。数据长度用于反映融合数据的大小。
通讯任务请求T4用于指示将融合数据发送至主机设备1。T4中携带有任务请求的标识(图示WR-ID:4)、任务请求的类型(WR-TYPE:0,表示为通讯任务请求)、任务请求关联的队列组标识(local-QPN:3)、任务请求的传输类型(opcode:send,表示为发送任务请求)、任务请求所依赖的其他任务请求的标识(depend:3,表示T4依赖于计算任务请求T3)。可选地,T4中还可携带有目的设备的标识(也可称远程设备的标识,remote-lid:1,表示主机设备1)及目的设备关联的队列组标识(也可称为远程队列组,remote-QPN:5)等等。该目的设备的标识用于指示T4任务请求所需通讯的远程设备。
如图8,该任务网络图中包含有组成业务通讯的4个任务请求、每个任务请求的执行顺序及数据依赖关系等信息。该执行顺序可为并行执行,例如图8中T1和T2呈并行执行;也可为串行执行,例如图8中需先执行完T3再执行T4等。主机设备2解析该任务网络图,依次执行完该任务网络图中包含的每个任务请求即可实现此次业务通信,将融合数据发送给主机设备1使用。
通过实施本发明实施例,基于任务网络图实现业务通信的任务处理,这样可合并任务请求WR通过网络图进行一次下发,减少WR下发次数,减少WR下发耗时、节省设备带宽资源。此外,任务请求放在HCA侧执行,在CPU下发完任务网络图后可进行其他业务处理,无需再占用CPU,相比于传统技术能减少CPU的负载、提升CPU的利用率。
请参见图9,是本发明实施例提供的另一种任务处理方法的流程示意图。如图9所示的方法应用于包括网络接口卡HCA和主机处理器在内的主机设备(第一设备)中,所述网络接口卡包括任务执行引擎和RDMA执行引擎,该方法包括如下实施步骤:
S901、HCA获取任务网络图,解析任务网络图,获得组成业务通信的至少一个通讯任务请求和/或至少一个计算任务请求。
本申请中,第一设备的HCA(具体为HCA的任务执行引擎)获取业务通信的任务网络图,解析该任务网络图,得到该任务网络图包含的信息,例如组成该业务通信的至少一个任务请求及该任务请求的执行依赖关系等。其中,每个任务请求中还携带有自定义参数,例如其可包括但不限于以下中的至少一种:任务请求的任务类型、任务请求的标识、任务请求的传输类型、源数据地址、目的地址等信息。该任务请求的任务类型用于指示任务请求具体可为通讯任务请求和/或计算任务请求。
S902、HCA执行该该任务网络图,若任务网络图中包含通讯任务请求,则等待调用RDMA执行引擎执行所述通讯任务请求所指示的数据传输操作。
HCA根据任务网络图中包含的信息,按序依次执行每个任务请求,实现相应地业务通信。其中:
针对通讯任务请求而言,HCA根据该通讯任务请求中携带的传输类型识别该通讯任务请求为发送任务请求(send)或接收任务请求(receive)。若通讯任务请求中传输类型指示其为发送任务请求,则HCA将获取待发送数据,采用RDMA技术发送待发送数据。
可选地,通讯任务请求中还可携带该通讯任务请求关联的队列组标识(QPN),HCA可将该通讯任务请求以任务请求条目WRE的形式存放于该队列组标识QPN对应的队列组QP中。具体地,该通讯任务请求为发送任务请求,则HCA可将该发送任务请求以WRE形式存在于队列组中的发送队列SQ中,等待调用RDMA执行引擎执行该发送任务请求。若该通讯任务请求为接收任务请求,则HCA可将该发送任务请求以WRE形式存放于队列组中的接收队列RQ中,以等待调用RDMA执行引擎执行该接收任务请求。
具体地,HCA通过任务执行引擎解析任务网络图,获得该任务网络图中包含的每个任务请求。若任务执行引擎根据任务请求中携带的任务类型可获知该任务请求为计算任务请求还是通讯任务请求。针对通讯任务请求而言,任务执行引擎依据任务请求中携带的传输类型可识别该通讯任务请求为发送任务请求还是接收任务请求。针对发送任务请求,任务执行引擎可将该发送任务请求以任务请求条目WRE的形式下发到队列组标识对应队列组CQ中的发送队列中,等待调用RDMA执行引擎执行该发送任务请求。具体地,该RDMA执行引擎执行发送任务请求时,可获取待发送数据,采用RDMA技术发送该待发送数据。针对接收任务请求,任务执行引擎将接收任务请求以任务请求条目WRE的形式下发到队列组标识对应队列组CQ中的接收队列中,等待调用RDMA执行引擎执行该接收任务请求。具体地,调用RDMA执行引擎接收来自第二设备采用RDMA技术发送的待接收数据。
可选地,该通讯任务请求中还可携带源数据地址及目的设备标识。HCA通过RDMA执行引擎将从源数据地址处获取待发送数据,以将待发送数据发送至目的设备标识所对应的目的设备中。可选地,该通讯任务请求中还可携带源数据长度,HCA通过RDMA执行引擎具体可从源数据地址开始获取源数据长度所对应的待发送数据。
可选地,通讯任务请求中还可携带该通讯任务请求所依赖的其他任务请求(例如第一任务请求)的标识,则待发送数据可为第一任务请求的执行结果。第一任务请求可包括但不限于通讯任务请求或者计算任务请求。
若通讯任务请求中传输类型指示其为接收任务请求,则HCA还可将接收来自第二主机设备(简称第二设备)采用RDMA技术传输的待接收数据。可选地,该通讯任务请求中携带有源数据地址,HCA可将该待接收数据存储至源数据地址处。该通讯任务请求中还可携带源数据长度,HCA可将待接收数据从源数据地址处开始存储,该源数据长度用于反映/指示待接收数据的大小。
可选地,通讯任务请求中还可携带该通讯任务请求所依赖的其他任务请求(例如第一任务请求)的标识,则该待接收数据可为第一任务请求的执行结果。关于第一任务请求参考前述实施例所述,这里不再赘述。
可选地,在RDMA执行引擎执行完通讯任务请求后,可主动向任务执行引擎发送完成通知消息,以通知该通讯任务请求当前已执行完毕。或者,RDMA执行引擎在执行完通讯任务请求后,可生成相应地完成队列条目CQE,将其添加到完成队列中。相应地,任务执行引擎在接收到针对该通讯任务请求的完成通知消息,或者通过主动轮询完成队列查询到针对该通讯任务请求的完成队列条目时,可确定该通讯任务请求当前已执行完毕,以便继续下一个任务请求的执行。
S903、若任务网络图中包含计算任务请求,则进行所述计算任务请求所指示的数据计算操作。
针对计算任务请求而言,计算任务请求中携带有计算操作类型,HCA的任务执行引擎可获取待计算数据,对待计算数据进行该计算操作类型所指示的计算操作,得到计算结果。可选地,计算任务请求中可携带源数据地址,HCA可从源数据地址处获取待计算数据。该待计算数据的数量并不限定,其可为一个或多个。例如当待计算数据为两个时,具体可为第一待计算数据和第二待计算数据,则计算任务请求中携带的源数据地址同样为两个,具体可为第一源数据地址及第二源数据地址。相应地HCA可从第一源数据地址获取第一待计算数据,从第二源数据地址获取第二待计算数据。
可选地,计算任务请求中还可携带源数据长度,用于反映待计算数据的大小,则HCA从源数据地址开始获取源数据长度对应的待计算数据。可选地,该计算任务请求中还携带有目的地址,HCA可将计算结果存储至目的地址。
可选地,计算任务请求中携带有该计算任务请求所依赖的其他任务请求(例如第二任务请求)的标识,则该待计算数据具体可为第二任务请求的执行结果。该第二任务请求具体可为通讯任务请求或者计算任务请求,不做限定。
S904、HCA执行完任务网络图中包含的每个任务请求后,完成该业务通信。
HCA将按照上述任务请求的处理原理,依次对任务网络图中包含的每个任务请求进行处理,以实现该第一设备的业务通信。
为帮助更好地理解本发明实施例,下面以一个具体示例进行详述。请参见图10A和图10B示出一种基于树状组网分层聚合的通信示意图。如图10A示出数据聚合的通信示意图,图10B示出数据下发的通信示意图。图示集群的每个节点与物理拓扑中的父节点和子节点建立连接。节点完成所有子节点和本节点的数据聚合/融合,得到聚合数据。父节点接收所有子节点的聚合数据(也称融合数据)。如果某节点存在父节点,则向该父节点发送聚合数据,等待父节点下发该父节点聚合后的数据,然后再将聚合后的数据转发给所有子节点。如果某节点不存在父节点,则下发自身的聚合数据给所有子节点。图示中,每个节点可表示一个主机设备,图示分别可为主机设备1(host1)~主机设备7(host7)。具体地,以父节点为主机设备2为例,主机设备2需接收主机设备4和主机设备5各自的数据,并将其融合得到第一融合数据,以将第一融合数据发送给自身的父节点主机设备1。相应地,主机设备2可接收主机设备1发送的总融合数据,该总融合数据具体可为包含主机设备2~主机设备7各自的数据。然后将该总融合数据转发给自身的子节点,主机设备4和主机设备5。
以主机设备2的业务通信为例,主机设备2业务通信的具体流程为:主机设备2需接收来自主机设备4和主机设备5的数据,并将它们融合后发送给父节点主机设备1,等待主机设备1完成集群内所有节点的数据聚合后下发给主机设备2。然后主机设备2将聚合结果下发给主机设备4和主机设备4。以此业务通信的具体流程,主机设备2(host2)的主机处理器可构建出如图11所示的任务网络图。
图11中,正方形表示通讯任务请求,圆圈表示计算任务请求。图示中包括有7个任务请求T1~T7。其中有6个通讯任务请求和1个计算任务请求T3。具体地,通讯任务请求T1用于接收来自主机设备4的数据1,T2用于请求接收来自主机设备5的数据2。T3用于对数据1和数据2进行融合,得到第一融合数据。T4用于将第一融合数据发送给主机设备1。T5用于接收来自主机设备1的第二融合数据。T6用于将第二融合数据发送给主机设备4,T7用于将第二融合数据发送给主机设备5。
通讯任务请求T1中携带有自定义参数,图示中可包括任务请求的标识(WR-ID:1)、任务请求的任务类型(WR-TYPE:0,表示为通讯任务请求)、任务请求关联的队列组标识(local-QPN:1)、任务请求的传输类型(opcode:receive,表示为接收任务请求)、源数据地址(src-addr:buffer1)、任务请求所依赖的其他任务请求的标识(depend:null,表示T1无需依赖其他任务请求)。其中,源数据地址用于存储T1接收的主机设备4的数据1。
同理,图示中示例性给出各任务请求可能携带的参数。例如,计算任务请求T3中除了携带T1中各参数外,还可携带计算操作类型(calc-type:SUM,表示数据融合/求和)、源数据地址1(src-addr1:buffer1)、源数据地址2(src-addr2:buffer2)及目的地址(des-addr:buffer3)。其中源数据地址1存储有数据1,源数据地址2存储有数据2,目的地址用于存储对数据1和数据2进行融合SUM操作后得到的第一融合数据。通讯任务请求T6和T7中还可携带目的设备的标识(remote-lid,表示该通讯任务请求支持通信的远程主机设备)。
参见图12示出任务网络图执行的操作示意图。具体地,主机设备2的任务执行引擎通过主机接口接收来自主机处理器的任务网络图。任务执行引擎中包括控制单元及计算单元。任务执行引擎通过控制单元解析任务网络图,得到7个任务请求T1~T7。首先,控制单元可并行执行T1和T2,将T1以任务请求条目WRE1的形式下发到QP1(队列组标识local-local-QPN:1对应的队列组)中的接收队列RQ中,等待RDMA执行引擎调度执行T1(图示中步骤S1)。将T2以任务请求条目WRE2的形式下发到QP2中的接收队列RQ中,等待RDMA执行引擎调度执行T2(图示S2)。可选地,主机设备2通过RDMA执行引擎可实现WRE1或WRE2的处理,即接收来自主机设备4采用RDMA技术发送的数据1及来自主机设备5采用RDMA技术发送的数据2。进一步主机设备2可将接收的数据1及数据2分别存储至源数据地址1(buffer1)及源数据地址2(buffer2)。
在每执行完一个通讯任务请求后,例如执行完T1(具体可为WR1)后,RDMA执行引擎可生成相应地完成队列条目CQE,并将该CQE放入相应地完成队列CQ中。具体地,在执行完WRE1和WRE2后,可对应生成CQE1和CQE2,并将它们放入完成队列CQ中。
控制单元通过主动轮询完成队列CQ是否存在通讯任务请求对应的完成队列条目,可确定该通讯任务请求的执行状态(是否执行结束)。或者,RDMA执行引擎在执行完一个通讯任务请求后可主动向任务执行引擎(具体可为任务执行引擎中的控制单元)发送完成通知事件/消息,相应地控制单元接收针对该通讯任务请求的完成通知消息后,可确定该通讯任务请求已执行结束。示例性地如图,控制单元主动轮询完成队列CQ中是否存在CQE1和CQE2,以确定T1和T2各自的执行状态。其中,CQE1用于指示T1(WRE1)已执行完毕,CQE2用于指示T2(WRE2)已执行完毕(图示步骤S3和S4)。
控制单元在确定到T1和T2执行完毕后,可继续解析T3,调用计算单元分别从buffer1和buffer2中获取T3依赖的T1执行结果(数据1)和T2执行结果(数据2),具体如图示中步骤S5和S6。进一步对该数据1和数据2执行计算操作类型所指示的融合操作,得到第一融合数据。可选地,计算单元还可将第一融合数据存储到目的地址buffer3中(图示步骤S7)。计算单元完成计算后,可主动向控制单元发送完成通知消息,以通知当前完成计算任务请求的执行。
控制单元在确定T3执行完毕后,可接着解析并执行T4,将T4以WRE4的形式下发到队列组QP3中的发送队列RQ,等待RDMA执行引擎执行。相应地RDMA执行引擎从buffer3中获取待发送数据(这里为第一融合数据),采用RDMA技术将第一融合数据发送到主机设备1(图示步骤S8)。控制单元通过主动轮询或接收完成通知事件等方式确定T4的执行状态(图示步骤S9),具体对应参见前述关于T1和T2执行状态确定的相关介绍,这里不再赘述。
控制单元在确定到T4执行完毕后,可接着解析并执行T5,将T5以WRE5的形式下发到QP3中的接收队列RQ,等待RDMA执行引擎执行(图示步骤S10)。控制单元通过主动轮询或接收完成通知消息等方式确定到T5的执行状态(图示步骤S11)。同理,控制单元在确定到T5执行完毕后,可并行解析和执行T6和T7,将T6以WRE6的形式下发到QP1的发送队列SQ中、将T7以WRE7的形式下发到QP2的发送队列SQ中,等待RDMA执行引擎执行(图示步骤S12和S13)。相应地,控制单元通过主动轮询或接收完成通知事件等方式确定T6和T7各自的执行状态(图示步骤S14和S15)。控制单元在确定到T7执行完毕后,即可确定该任务网络图中每个任务请求均已执行完毕,控制单元可通过主机接口向主机处理器发送通知消息,用以通知该任务网络图已执行完毕,当前已完成主机设备2的业务通信。
通过实施本发明实施例,设计兼容通讯类和计算类任务请求的任务网络图,减少任务请求的下发次数,从而减少任务请求下发的耗时。此外,还利用任务执行引擎来和思想任务网络图的解析和执行,有利于降低CPU的利用率,使得任务网络图中的任意任务请求支持同QP或不同QP的控制处理操作。
基于上述实施例,下面阐述本申请涉及的相关产品。请参见图13,是本发明实施例提供的一种网络设备的结构示意图。如图13所示的网络设备500(具体可为网络接口卡,简称网卡)包括一个或多个处理器501、通信接口502和存储器503,处理器501、通信接口502和存储器503可通过总线方式连接,也可通过无线传输等其他手段实现通信。本发明实施例以通过总线504连接为例其中,该存储器503用于存储指令,该处理器501用于执行该存储器503存储的指令。该存储器503存储程序代码,且处理器501可以调用存储器503中存储的程序代码执行如上方法实施例中以HCA为执行主体的相关步骤,和/或文本描述的技术内容。例如,执行如下步骤:获取任务网络图,所述任务网络图包括组成业务通信的至少一个通讯任务请求和/或至少一个计算任务请求,所述通讯任务请求用于请求进行所述通讯任务请求所指示的数据传输操作,所述计算任务请求用于请求进行所述计算任务请求所指示的数据计算操作;若所述任务网络图包括所述通讯任务请求,则采用远端直接内存访问RDMA技术执行所述通讯任务请求所指示的数据传输操作;若所述任务网络图包括所述计算任务请求,则执行所述计算任务请求所指示的数据计算操作;在执行完所述任务网络图后,完成所述业务通信。
应理解,处理器501可以由一个或者多个通用处理器构成,例如中央处理器(Central Processing Unit,CPU)。处理器501可用于运行相关的程序代码中实现任务处理方法实施例中以HCA为执行主体的相关步骤。
通信接口502可以为有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他模块/设备进行通信。例如,本申请实施例中通信接口602具体可用于接收来自主机处理器的任务网络图等。
存储器503可以包括易失性存储器(Volatile Memory),例如随机存取存储器(Random Access Memory,RAM);存储器也可以包括非易失性存储器(Non-VolatileMemory),例如只读存储器(Read-Only Memory,ROM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);存储器503还可以包括上述种类的存储器的组合。存储器503可用于存储一组程序代码,以便于处理器501调用存储器503中存储的程序代码以实现本发明方法实施例中以HCA为执行主体的相关内容。
需要说明的,图13仅仅是本发明实施例的一种可能的实现方式,实际应用中,网络接口卡还可以包括更多或更少的部件,这里不作限制。关于本发明实施例中未示出或未描述的内容,可参见前述图1-图12所述实施例中的相关阐述,这里不再赘述。
图14是本发明实施例提供的一种主机设备的结构示意图。该主机设备600包括:处理单元602和通信单元603。处理单元602用于对主机设备600的动作进行控制管理。示例性地,处理单元602用于支持主机设备600执行图7中步骤S701-S703,图9中步骤S901-S904,和/或用于执行本文所描述的技术的其它步骤。通信单元603用于支持主机设备600与其它设备的通信。可选的,主机设备600还可以包括存储单元601,用于存储计算设备600的程序代码和数据。
其中,处理单元602可以是处理器或控制器,例如可以是中央处理器(英文:Central Processing Unit,CPU),通用处理器,数字信号处理器(英文:Digital SignalProcessor,DSP),专用集成电路(英文:Application-Specific Integrated Circuit,ASIC),图形处理器(graphics processing unit,GPU),现场可编程门阵列(英文:FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信单元603可以是通信接口、收发器、收发电路等,其中,通信接口是统称,可以包括一个或多个接口,例如终端设备与其他设备之间的接口。存储单元601可以是存储器。
当处理单元602为处理器,通信单元603为通信接口,存储单元601为存储器时,本发明实施例所涉及的主机设备可以为图7所示的主机设备。
参阅图15所示,该主机设备610包括:处理器612、通信接口613、存储器611。可选地,计算设备610还可以包括总线614和网络接口卡615(简称网卡)。其中,通信接口613、处理器612、存储器611以及网络接口卡615可以通过总线614相互连接;总线614可以是外设部件互连标准(英文:Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(英文:Extended Industry Standard Architecture,简称EISA)总线等。所述总线614可以分为地址总线、数据总线、控制总线等。为便于表示,图15中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。这里的网卡615具体可为图13所示的网卡(网络设备)500,这里不再赘述。网卡616包括处理器501、通信接口502和存储器503。图示中它们之间通过总线连接。其中,该存储器503用于存储指令,该处理器501用于执行该存储器503存储的指令。该存储器503存储程序代码,且处理器501可以调用存储器503中存储的程序代码执行如上方法实施例中以HCA为执行主体的操作步骤。
上述图14或图15所示的主机设备的具体实现还可以对应参照前述方法实施例的相应描述,此处不再赘述。
结合本发明实施例公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(英文:Random Access Memory,RAM)、闪存、只读存储器(英文:Read Only Memory,ROM)、可擦除可编程只读存储器(英文:ErasableProgrammable ROM,EPROM)、电可擦可编程只读存储器(英文:Electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于计算设备中。当然,处理器和存储介质也可以作为分立组件存在于计算设备中。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。