CN115729700A - 一种数据处理方法、装置、电子设备和存储介质 - Google Patents
一种数据处理方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN115729700A CN115729700A CN202211426521.4A CN202211426521A CN115729700A CN 115729700 A CN115729700 A CN 115729700A CN 202211426521 A CN202211426521 A CN 202211426521A CN 115729700 A CN115729700 A CN 115729700A
- Authority
- CN
- China
- Prior art keywords
- data processing
- gpu
- data
- cpu
- controlling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及区块链技术领域,提出一种数据处理方法、装置、电子设备和存储介质。该方法包括:区块链节点若接收到需要依次执行的至少二个数据处理任务,则控制CPU将对应的待处理数据复制至GPU;控制GPU基于待处理数据依次执行与上述至少二个数据处理任务对应的数据处理操作,得到最终的数据处理结果,并将该数据处理结果复制至CPU。通过这样设置,假设上述至少二个数据处理任务为N个,则该N个数据处理任务在执行时只需经历一次将数据由CPU复制至GPU,再由GPU复制至CPU的过程即可,而无需经历N次这个过程,因此能够降低异构设备之间的IO开销。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种数据处理方法、装置、电子设备和存储介质。
背景技术
目前,为了提升区块链节点的计算能力,通常会使用GPU(Graphics ProcessingUnit,图形处理器)等器件作为协处理器,将原本由CPU执行的部分数据处理操作(例如哈希值计算、数据加解密和签名验证等计算密集型操作)迁移至GPU执行。利用GPU强大的并行计算能力,能够实现远超CPU的数据处理吞吐量以及获得更低的数据处理延迟。
在上述过程中,CPU在接收到某个数据处理任务后,会将待处理数据复制至GPU;之后,由GPU基于该待处理数据执行相应的数据处理操作,得到数据处理结果,并将该数据处理结果复制至CPU。
显然,每个数据处理任务在执行时都会经历一次将数据由CPU复制至GPU,再由GPU复制至CPU的过程,如果接收到的数据处理任务过多,则会导致较大的异构设备之间的IO开销。
发明内容
有鉴于此,本申请实施例提供了一种数据处理方法、装置、电子设备和存储介质,在将区块链节点的数据处理操作由CPU迁移至GPU执行时,能够降低异构设备之间的IO开销。
本申请实施例的第一方面提供了一种应用于目标区块链节点的数据处理方法,包括:
若接收到需要依次执行的至少二个数据处理任务,则控制所述目标区块链节点的CPU将所述至少二个数据处理任务对应的待处理数据复制至所述目标区块链节点的GPU;
控制所述GPU基于所述待处理数据依次执行与所述至少二个数据处理任务对应的数据处理操作,得到数据处理结果,并将所述数据处理结果复制至所述CPU。
在本申请实施例中,如果区块链节点接收到需要依次执行的至少二个数据处理任务,则首先将对应的待处理数据由CPU复制至GPU,之后控制GPU依次执行与上述至少二个数据处理任务对应的数据处理操作,得到最终的数据处理结果,最后将该数据处理结果复制至CPU。通过这样设置,假设上述至少二个数据处理任务为N个,则该N个数据处理任务在执行时只需经历一次将数据由CPU复制至GPU,再由GPU复制至CPU的过程即可,而无需经历N次这个过程,因此能够降低异构设备之间的IO开销。
在本申请实施例的一种实现方式中,在控制所述GPU基于所述待处理数据依次执行与所述至少二个数据处理任务对应的数据处理操作之前,还可以包括:
控制所述CPU根据所述至少二个数据处理任务创建执行路径,所述执行路径记录所述GPU在执行所述数据处理操作时依次执行的各个操作,所述各个操作依次为将数据由CPU复制至GPU、所述至少二个数据处理任务对应的数据处理操作以及将数据由GPU复制至CPU;
控制所述CPU将所述执行路径发送至所述GPU;
所述控制所述GPU基于所述待处理数据依次执行与所述至少二个数据处理任务对应的数据处理操作,可以包括:
控制所述GPU读取所述执行路径,并依次执行所述执行路径中记录的所述各个操作。
在本申请实施例的一种实现方式中,所述GPU具有多个数据复制引擎;所述控制所述目标区块链节点的CPU将所述至少二个数据处理任务对应的待处理数据复制至所述目标区块链节点的GPU,可以包括:
控制所述CPU按照所述数据复制引擎的数量创建多个数据流;
控制所述CPU将所述待处理数据划分为多个部分的数据,并使用所述多个数据流将所述多个部分的数据独立且异步地复制至所述GPU。
在本申请实施例的一种实现方式中,在控制所述GPU基于所述待处理数据依次执行与所述至少二个数据处理任务对应的数据处理操作,得到数据处理结果,并将所述数据处理结果复制至所述CPU之后,还可以包括:
若接收到指定的异步事件,则控制所述CPU对所述数据处理结果进行验证处理。
在本申请实施例的一种实现方式中,所述数据处理方法还可以包括:
使用GPUDirect RDMA技术创建所述目标区块链节点的GPU和其它区块链节点的GPU之间的通信连接;其中,所述其它区块链节点为所述目标区块链节点所属的区块链中除所述目标区块链节点之外的节点。
进一步的,在使用GPUDirect RDMA技术创建所述目标区块链节点的GPU和其它区块链节点的GPU之间的通信连接之后,还可以包括:
若所述目标区块链节点的GPU通过所述通信连接,接收到由所述其它区块链节点的GPU发送的交易数据,则控制所述目标区块链节点的GPU将所述交易数据保存至所述目标区块链节点的GPU显存;
控制所述目标区块链节点的GPU对所述GPU显存中保存的所述交易数据进行验签操作;
控制所述目标区块链节点的GPU将验签通过的所述交易数据复制至所述CPU的内存。
在本申请实施例的一种实现方式中,所述目标区块链节点具有基于PCIE的硬件加速设备;所述数据处理方法还可以包括:
使用GPUDirect RDMA技术创建所述目标区块链节点的GPU和所述硬件加速设备之间的通信连接。
本申请实施例的第二方面提供了一种应用于目标区块链节点的数据处理装置,包括:
待处理数据复制模块,用于若接收到需要依次执行的至少二个数据处理任务,则控制所述目标区块链节点的CPU将所述至少二个数据处理任务对应的待处理数据复制至所述目标区块链节点的GPU;
数据处理模块,用于控制所述GPU基于所述待处理数据依次执行与所述至少二个数据处理任务对应的数据处理操作,得到数据处理结果,并将所述数据处理结果复制至所述CPU。
本申请实施例的第三方面提供了一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请实施例的第一方面提供的数据处理方法。
本申请实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如本申请实施例的第一方面提供的数据处理方法。
本申请实施例的第五方面提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行如本申请实施例的第一方面提供的数据处理方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
图1是本申请实施例提供的一种数据处理方法的流程图;
图2是通过多流机制实现数据传输与内核执行叠加的操作示意图;
图3是将计算密集型操作由CPU卸载至GPU进行加速处理的操作示意图;
图4是通过GPUDirect RDMA技术优化区块链中的网络传输过程的宏观结构示意图;
图5是传统的TCP/IP协议栈处理模式和GPUDirect RDMA处理模式在网络数据传输方面的差异示意图;
图6是本申请实施例提供的一种数据处理装置的结构示意图;
图7是本申请实施例提供的一种电子设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
GPU(Graphics Processing Unit,图形处理器),又称显示核心或者视觉处理器,是一种专门在个人电脑、工作站、游戏机和一些移动设备上做图像和图形相关运算工作的微处理器。基于GPU具有的强大并行计算能力以及成熟的生产链,在区块链中使用GPU作为协处理器,相比其他硬件加速设备有着更大的优势。
本申请实施例公开一种在区块链节点中应用的数据处理方法,使用GPU作为协处理器,一方面使区块链中的计算密集型操作从GPU丰富的ALU中获益,实现远超CPU的处理吞吐量和更低的处理延迟,另一方面使用GPUDirect RDMA技术实现远超TCP/IP协议栈的高速网络通信。同时,由于CPU不再负责区块链中计算密集型操作和传统TCP/IP协议栈处理,其性能得到极大释放,从而进一步提升区块链整体性能。关于本申请实施例更具体的技术实现细节,请参照下文所述的方法实施例。
请参阅图1,示出了本申请实施例提供的一种数据处理方法,包括:
101、若接收到需要依次执行的至少二个数据处理任务,则控制目标区块链节点的CPU将所述至少二个数据处理任务对应的待处理数据复制至所述目标区块链节点的GPU;
本方法实施例的执行主体是区块链中的任意一个节点,其用目标区块链节点表示,目标区块链节点以CPU作为主处理器,以GPU作为协处理器。如果目标区块链节点接收到需要依次执行的至少二个数据处理任务,则目标区块链节点的CPU会获取与这些数据处理任务对应的待处理数据,并将这些待处理数据复制到目标区块链的GPU。例如,在区块链中,哈希值计算是签名生成和验证的前置步骤,如果目标区块链节点同时或者在短时间内接收到哈希值计算、签名生成和前面验证这3个数据处理任务,则可以将这3个数据处理任务确定为需要依次执行的3个数据处理任务。目标区块链节点可以批量接收各个数据处理任务对应的待处理数据,在CPU端完成数据预处理,然后再将预处理后的待处理数据复制到GPU端。
在本申请实施例的一种实现方式中,所述GPU具有多个数据复制引擎;所述控制所述目标区块链节点的CPU将所述至少二个数据处理任务对应的待处理数据复制至所述目标区块链节点的GPU,可以包括:
(1)控制所述CPU按照所述数据复制引擎的数量创建多个数据流;
(2)控制所述CPU将所述待处理数据划分为多个部分的数据,并使用所述多个数据流将所述多个部分的数据独立且异步地复制至所述GPU。
由于GPU内核执行的异步性,CPU端无需监控GPU的工作状态,只需基于先来先服务的模式将待处理数据复制至GPU并启动相应的GPU内核进行处理即可,大幅降低了CPU进行任务调度的复杂性。同时,本申请实施例还可以通过多流机制实现数据传输与内核执行的叠加,充分利用GPU的高并发特性的同时,使得异构设备间的IO开销有效降低。通常来说,GPU具有多个数据复制引擎,为了充分利用这些数据复制引擎,在CPU端可以按照这些数据复制引擎的数量创建出对应的多个数据流(Stream),以便实现并行传输数据。具体的,在CPU端可以将待处理数据划分为多个部分,每个部分的待处理数据都可以使用不同的数据流独立且异步地从CPU复制到GPU,从而极大地提高数据传输效率。
如图2所示,为通过多流机制实现数据传输与内核执行叠加的操作示意图。在图2中创建了多个数据流(Stream0、Stream1…),不同数据流中的操作可以交错,在某些情况下可以重叠,这属于一种可用于隐藏主机(CPU端)和设备(GPU端)之间数据传输的属性。每部分的待处理数据都使用不同的数据流独立且异步地从主机复制到设备(HtoD,表示数据从CPU内存复制到GPU显存),并使用相应的GPU内核进行数据处理,最后将数据处理结果通过相应的数据流从设备复制回主机(DtoH,表示数据从GPU显存复制到CPU内存)。
102、控制所述GPU基于所述待处理数据依次执行与所述至少二个数据处理任务对应的数据处理操作,得到数据处理结果,并将所述数据处理结果复制至所述CPU。
在将待处理数据从CPU端复制到GPU端之后,目标区块链节点可以控制GPU基于待处理数据调用相应的内核函数,依次执行与所述至少二个数据处理任务对应的数据处理操作,得到数据处理结果,并将该数据处理结果复制至CPU端。需要说明的是,GPU只需将该至少二个数据处理任务中最后执行的一个数据处理任务的数据处理结果复制至CPU即可,之前的数据处理任务的数据处理结果作为中间结果,可以在GPU端作为下一数据处理任务的输入,而无需复制至CPU,从而可以减少数据复制的次数,降低异构设备之间的IO开销。例如,假设该至少二个数据处理任务依次为:哈希值计算、签名生成和签名验证,则GPU端首先调用哈希计算内核对待处理数据进行哈希值计算,得到的哈希计算结果无需复制回CPU,可以直接在GPU内交由后续的签名生成和签名验证内核处理,最终只需将签名验证的结果复制回CPU即可。显然,这样处理能够减少将数据由GPU复制回CPU,再将数据由CPU复制到GPU的过程,从而能够降低异构设备之间的IO开销。
在本申请实施例的一种实现方式中,在控制所述GPU基于所述待处理数据依次执行与所述至少二个数据处理任务对应的数据处理操作之前,还可以包括:
(1)控制所述CPU根据所述至少二个数据处理任务创建执行路径,所述执行路径记录所述GPU在执行所述数据处理操作时依次执行的各个操作,所述各个操作依次为将数据由CPU复制至GPU、所述至少二个数据处理任务对应的数据处理操作以及将数据由GPU复制至CPU;
(2)控制所述CPU将所述执行路径发送至所述GPU。
所述控制所述GPU基于所述待处理数据依次执行与所述至少二个数据处理任务对应的数据处理操作,可以包括:
控制所述GPU读取所述执行路径,并依次执行所述执行路径中记录的所述各个操作。
具体的,CPU端在任务调度时可以为每个数据处理任务维护一个执行路径,并将该执行路径发送给GPU端,GPU通过读取该执行路径中的信息,可以决定每一步调用的内核函数以及下一步的操作。另外,CPU端可以对需要依次执行的多个数据处理任务进行标记,而对单个独立的数据处理任务则无需标记。针对没有标记的数据处理任务,其执行路径包含一次数据由CPU复制到GPU,再由GPU复制到CPU的过程;而针对有标记的多个数据处理任务,其执行路径也只包含一次数据由CPU复制到GPU,再由GPU复制到CPU的过程。因此,CPU根据该至少二个数据处理任务创建的执行路径记录的各个操作依次为:将数据由CPU复制至GPU、所述至少二个数据处理任务对应的数据处理操作以及将数据由GPU复制至CPU。GPU通过读取该执行路径,便可以确定需要依次执行的每个操作,从而获得最终的数据处理结果。
示例性的,没有标记的哈希值计算任务的执行路径为:HtoD→stepHash→DtoH;没有标记的签名验证任务的执行路径为:HtoD→stepVerify→DtoH;而有标记的哈希计算及验签任务的执行路径为:HtoD→stepHash→stepVerify→DtoH。其中,HtoD表示数据从CPU内存复制到GPU显存,DtoH表示数据从GPU显存复制到CPU内存,stepHash表示哈希值计算操作,stepVerify表示签名验证操作。可以看出,有标记的任务减少了两次数据复制过程(一次DtoH和一次HtoD),因此能够降低异构设备之间的IO开销。
如图3所示,为将计算密集型操作由CPU卸载至GPU进行加速处理的操作示意图。在图3中,由CPU端调度任务,将签名生成、签名验证、数据加密、数据解密和哈希计算等计算密集型的操作任务卸载至GPU端处理。具体的,CPU会批量接收待处理数据并对待处理数据进行一定的预处理操作,然后将预处理后的待处理数据复制到GPU端。之后,由GPU端调用相应的内核函数,执行各个数据处理任务,从而得到相应的数据处理结果,最后将该数据处理结果复制至CPU端。通过将计算密集型操作由CPU卸载至GPU进行加速处理,能够充分发挥GPU强大的多核并行计算性能,并释放CPU资源。
在本申请实施例的一种实现方式中,在控制所述GPU基于所述待处理数据依次执行与所述至少二个数据处理任务对应的数据处理操作,得到数据处理结果,并将所述数据处理结果复制至所述CPU之后,还可以包括:
若接收到指定的异步事件,则控制所述CPU对所述数据处理结果进行验证处理。
CPU端在将待处理数据复制至GPU端之后,无需同步等待GPU内核执行完毕,而是可以通过GPU消息机制,基于异步事件查询的方式获知任务完成情况,在某些情况下,可以进一步降低CPU负载。具体的,CPU在获取到GPU复制过来的数据处理结果之后,可以不用马上对该数据处理结果进行验证,而可以在等待接收到指定的异步事件之后,才对该数据处理结果进行验证。例如,区块和交易验签操作可以在GPU内先行计算,但其结果只有在共识完成后才需要校验,因此CPU端可以在共识完成后才进行验签结果确认,尽可能实现区块链核心过程的并发执行。
在本申请实施例的一种实现方式中,所述数据处理方法还可以包括:
使用GPUDirect RDMA技术创建所述目标区块链节点的GPU和其它区块链节点的GPU之间的通信连接;其中,所述其它区块链节点为所述目标区块链节点所属的区块链中除所述目标区块链节点之外的节点。
本申请实施例可以通过GPUDirect RDMA技术优化区块链中的网络传输过程,其宏观结构示意图如图4所示。在图4中,可以使用GPUDirect RDMA技术创建区块链中各节点的GPU之间的通信连接,使得各个区块链节点可以进行GPU到GPU的通信,避免额外的内存复制过程,减少多次异构设备间的IO开销,而且无需CPU参与的网络通信也可以进一步释放CPU资源。另外,由于当前绝大部分云服务商提供的GPU云服务器均原生支持GPUDirect RDMA技术,且无需用户额外付费,故通过GPUDirect RDMA技术优化区块链中的网络传输过程可以充分利用有限预算实现最优性能。
如图5所示,为传统的TCP/IP协议栈处理模式和GPUDirect RDMA处理模式在网络数据传输方面的差异示意图。通过图5可以看出,考虑到区块链中大量进行节点间交易及区块传输,传统TCP/IP协议栈需要多次建立连接,且全程需要CPU参与操作。而若使用GPUDirect RDMA技术,可以将区块链网络上交易及区块传输都卸载至GPU端处理,释放了CPU资源。另外,区块链中所有交易和区块都需要先进行签名验证,而使用GPUDirect RDMA技术可以使得交易和区块直接进入GPU显存,从而更好的发挥GPU并行验签的高性能。
进一步的,在使用GPUDirect RDMA技术创建所述目标区块链节点的GPU和其它区块链节点的GPU之间的通信连接之后,还可以包括:
(1)若所述目标区块链节点的GPU通过所述通信连接,接收到由所述其它区块链节点的GPU发送的交易数据,则控制所述目标区块链节点的GPU将所述交易数据保存至所述目标区块链节点的GPU显存;
(2)控制所述目标区块链节点的GPU对所述GPU显存中保存的所述交易数据进行验签操作;
(3)控制所述目标区块链节点的GPU将验签通过的所述交易数据复制至所述CPU的内存。
在实际操作中,还可以采用统一内存管理技术对GPU显存和CPU内存进行统一管理,这种方式对于开发人员而言,屏蔽了底层GPU显存和CPU内存之间的差异,程序员无需显式进行显存到内存的复制,而可以直接把GPU显存当作CPU内存使用,大幅降低了开发难度。目标区块链节点的GPU通过GPUDirect RDMA技术创建的通信连接可以接收到其它区块链节点发送过来的交易和区块信息等交易数据,并将这些交易数据保存至GPU显存。目标区块链节点的GPU可以对GPU显存中保存的交易数据进行验签等操作,对于验签不通过的交易数据可以直接丢弃,无需复制至CPU内存,而对于验签通过的交易数据则复制至CPU内存。通过这样设置,能够确保CPU处理的交易数据均已通过验签,这在一定程度上使得GPU显存成为区块链系统的内存补充,扩展了系统整体性能。
具体的,统一内存管理技术允许同一个数据指针同时在GPU显存和CPU内存使用,数据迁移过程由系统自动按需完成。在实现上,首先由GPU对通过GPUDirect RDMA写入显存的交易数据进行验签,并将验签通过的交易数据移动至事先约定好的缓冲区,这个过程都在GPU显存内进行,故IO开销可以忽略不计。然后,CPU通过事件查询机制获知GPU验签任务已完成,并访问统一内存管理指针,系统自动完成将缓冲区数据复制至CPU内存的过程,确保高耗时的设备间IO仅传输验签通过的交易数据,而且该过程还可以通过数据预取技术进一步加速。与此同时,由于交易数据在验签阶段均处于GPU显存内,CPU内存中仅包含通过验签的交易数据,进而可以在不扩展内存的条件下提升区块链系统的整体性能,使得部分GPU显存成为CPU内存的补充。
在本申请实施例的一种实现方式中,所述目标区块链节点具有基于PCIE的硬件加速设备;所述数据处理方法还可以包括:
使用GPUDirect RDMA技术创建所述目标区块链节点的GPU和所述硬件加速设备之间的通信连接。
考虑到GPUDirect RDMA技术不仅支持GPU与GPU之间直接通信,其他基于PCIE的硬件加速设备(例如FPGA等)亦可通过该技术进行绕过CPU的数据传输过程。因此,在区块链节点已具备FPGA等其他基于PCIE的硬件加速设备时,可以使用GPUDirect RDMA技术创建GPU和该硬件加速设备之间的通信连接,从而使得该硬件加速设备能够与GPU进行直接高效的数据传输,实现GPU与区块链系统的深度融合。
在本申请实施例中,如果区块链节点接收到需要依次执行的至少二个数据处理任务,则首先将对应的待处理数据由CPU复制至GPU,之后控制GPU依次执行与上述至少二个数据处理任务对应的数据处理操作,得到最终的数据处理结果,最后将该数据处理结果复制至CPU。通过这样设置,假设上述至少二个数据处理任务为N个,则该N个数据处理任务在执行时只需经历一次将数据由CPU复制至GPU,再由GPU复制至CPU的过程即可,而无需经历N次这个过程,因此能够降低异构设备之间的IO开销。
综上所述,本申请实施例使用GPU作为硬件加速器,将计算密集型操作由CPU卸载至GPU,能够充分发挥GPU强大的多核并行计算性能,释放CPU资源,从而提高区块链节点的性能。而且,通过控制GPU依次执行多个关联的数据处理任务,能够有效减少数据复制次数,降低异构设备之间的IO开销。另外,在区块链的网络传输方面使用GPUDirect RDMA技术进行优化,使得CPU资源得到进一步的释放,从而提升用户综合体验。
应理解,上述各个实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
上面主要描述了一种数据处理方法,下面将对一种数据处理装置进行描述。
请参阅图6,本申请实施例中一种应用于目标区块链节点的数据处理装置的一个实施例包括:
待处理数据复制模块601,用于若接收到需要依次执行的至少二个数据处理任务,则控制所述目标区块链节点的CPU将所述至少二个数据处理任务对应的待处理数据复制至所述目标区块链节点的GPU;
数据处理模块602,用于控制所述GPU基于所述待处理数据依次执行与所述至少二个数据处理任务对应的数据处理操作,得到数据处理结果,并将所述数据处理结果复制至所述CPU。
在本申请实施例的一种实现方式中,所述数据处理装置还可以包括:
执行路径创建模块,用于控制所述CPU根据所述至少二个数据处理任务创建执行路径,所述执行路径记录所述GPU在执行所述数据处理操作时依次执行的各个操作,所述各个操作依次为将数据由CPU复制至GPU、所述至少二个数据处理任务对应的数据处理操作以及将数据由GPU复制至CPU;
执行路径发送模块,用于控制所述CPU将所述执行路径发送至所述GPU;
所述数据处理模块可以包括:
操作执行单元,用于控制所述GPU读取所述执行路径,并依次执行所述执行路径中记录的所述各个操作。
在本申请实施例的一种实现方式中,所述GPU具有多个数据复制引擎;所述待处理数据复制模块可以包括:
数据流创建单元,用于控制所述CPU按照所述数据复制引擎的数量创建多个数据流;
数据复制单元,用于控制所述CPU将所述待处理数据划分为多个部分的数据,并使用所述多个数据流将所述多个部分的数据独立且异步地复制至所述GPU。
在本申请实施例的一种实现方式中,所述数据处理装置还可以包括:
结果验证模块,用于若接收到指定的异步事件,则控制所述CPU对所述数据处理结果进行验证处理。
在本申请实施例的一种实现方式中,所述数据处理装置还可以包括:
第一通信连接创建模块,用于使用GPUDirect RDMA技术创建所述目标区块链节点的GPU和其它区块链节点的GPU之间的通信连接;其中,所述其它区块链节点为所述目标区块链节点所属的区块链中除所述目标区块链节点之外的节点。
进一步的,所述数据处理装置还可以包括:
交易数据保存模块,用于若所述目标区块链节点的GPU通过所述通信连接,接收到由所述其它区块链节点的GPU发送的交易数据,则控制所述目标区块链节点的GPU将所述交易数据保存至所述目标区块链节点的GPU显存;
交易数据验签模块,用于控制所述目标区块链节点的GPU对所述GPU显存中保存的所述交易数据进行验签操作;
交易数据复制模块,用于控制所述目标区块链节点的GPU将验签通过的所述交易数据复制至所述CPU的内存。
在本申请实施例的一种实现方式中,所述目标区块链节点具有基于PCIE的硬件加速设备;所述数据处理装置还可以包括:
第二通信连接创建模块,用于使用GPUDirect RDMA技术创建所述目标区块链节点的GPU和所述硬件加速设备之间的通信连接。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如图1表示的任意一种数据处理方法。
本申请实施例还提供一种计算机程序产品,当该计算机程序产品在电子设备上运行时,使得电子设备执行如图1表示的任意一种数据处理方法。
图7是本申请一实施例提供的电子设备的示意图。如图7所示,该实施例的电子设备7包括:处理器70、存储器71以及存储在所述存储器71中并可在所述处理器70上运行的计算机程序72。所述处理器70执行所述计算机程序72时实现上述各个数据处理方法的实施例中的步骤,例如图1所示的步骤101至102。或者,所述处理器70执行所述计算机程序72时实现上述各装置实施例中各模块/单元的功能,例如图6所示模块601至602的功能。
所述计算机程序72可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器71中,并由所述处理器70执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序72在所述电子设备7中的执行过程。
所称处理器70可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器71可以是所述电子设备7的内部存储单元,例如电子设备7的硬盘或内存。所述存储器71也可以是所述电子设备7的外部存储设备,例如所述电子设备7上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器71还可以既包括所述电子设备7的内部存储单元也包括外部存储设备。所述存储器71用于存储所述计算机程序以及所述电子设备所需的其他程序和数据。所述存储器71还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据处理方法,应用于目标区块链节点,其特征在于,所述方法包括:
若接收到需要依次执行的至少二个数据处理任务,则控制所述目标区块链节点的CPU将所述至少二个数据处理任务对应的待处理数据复制至所述目标区块链节点的GPU;
控制所述GPU基于所述待处理数据依次执行与所述至少二个数据处理任务对应的数据处理操作,得到数据处理结果,并将所述数据处理结果复制至所述CPU。
2.如权利要求1所述的数据处理方法,其特征在于,在控制所述GPU基于所述待处理数据依次执行与所述至少二个数据处理任务对应的数据处理操作之前,还包括:
控制所述CPU根据所述至少二个数据处理任务创建执行路径,所述执行路径记录所述GPU在执行所述数据处理操作时依次执行的各个操作,所述各个操作依次为将数据由CPU复制至GPU、所述至少二个数据处理任务对应的数据处理操作以及将数据由GPU复制至CPU;
控制所述CPU将所述执行路径发送至所述GPU;
所述控制所述GPU基于所述待处理数据依次执行与所述至少二个数据处理任务对应的数据处理操作,包括:
控制所述GPU读取所述执行路径,并依次执行所述执行路径中记录的所述各个操作。
3.如权利要求1所述的数据处理方法,其特征在于,所述GPU具有多个数据复制引擎;所述控制所述目标区块链节点的CPU将所述至少二个数据处理任务对应的待处理数据复制至所述目标区块链节点的GPU,包括:
控制所述CPU按照所述数据复制引擎的数量创建多个数据流;
控制所述CPU将所述待处理数据划分为多个部分的数据,并使用所述多个数据流将所述多个部分的数据独立且异步地复制至所述GPU。
4.如权利要求1所述的数据处理方法,其特征在于,在控制所述GPU基于所述待处理数据依次执行与所述至少二个数据处理任务对应的数据处理操作,得到数据处理结果,并将所述数据处理结果复制至所述CPU之后,还包括:
若接收到指定的异步事件,则控制所述CPU对所述数据处理结果进行验证处理。
5.如权利要求1所述的数据处理方法,其特征在于,还包括:
使用GPUDirect RDMA技术创建所述目标区块链节点的GPU和其它区块链节点的GPU之间的通信连接;其中,所述其它区块链节点为所述目标区块链节点所属的区块链中除所述目标区块链节点之外的节点。
6.如权利要求5所述的数据处理方法,其特征在于,在使用GPUDirect RDMA技术创建所述目标区块链节点的GPU和其它区块链节点的GPU之间的通信连接之后,还包括:
若所述目标区块链节点的GPU通过所述通信连接,接收到由所述其它区块链节点的GPU发送的交易数据,则控制所述目标区块链节点的GPU将所述交易数据保存至所述目标区块链节点的GPU显存;
控制所述目标区块链节点的GPU对所述GPU显存中保存的所述交易数据进行验签操作;
控制所述目标区块链节点的GPU将验签通过的所述交易数据复制至所述CPU的内存。
7.如权利要求1至6任一项所述的数据处理方法,其特征在于,所述目标区块链节点具有基于PCIE的硬件加速设备;所述方法还包括:
使用GPUDirect RDMA技术创建所述目标区块链节点的GPU和所述硬件加速设备之间的通信连接。
8.一种数据处理装置,应用于目标区块链节点,其特征在于,所述装置包括:
待处理数据复制模块,用于若接收到需要依次执行的至少二个数据处理任务,则控制所述目标区块链节点的CPU将所述至少二个数据处理任务对应的待处理数据复制至所述目标区块链节点的GPU;
数据处理模块,用于控制所述GPU基于所述待处理数据依次执行与所述至少二个数据处理任务对应的数据处理操作,得到数据处理结果,并将所述数据处理结果复制至所述CPU。
9.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的数据处理方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211426521.4A CN115729700A (zh) | 2022-11-15 | 2022-11-15 | 一种数据处理方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211426521.4A CN115729700A (zh) | 2022-11-15 | 2022-11-15 | 一种数据处理方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115729700A true CN115729700A (zh) | 2023-03-03 |
Family
ID=85295728
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211426521.4A Pending CN115729700A (zh) | 2022-11-15 | 2022-11-15 | 一种数据处理方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115729700A (zh) |
-
2022
- 2022-11-15 CN CN202211426521.4A patent/CN115729700A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9342857B2 (en) | Techniques for locally modifying draw calls | |
JP4768386B2 (ja) | 外部デバイスとデータ通信可能なインターフェイスデバイスを有するシステム及び装置 | |
AU2003287320B2 (en) | Pipeline accelerator and related system and method | |
CN109951547B (zh) | 事务请求并行处理方法、装置、设备和介质 | |
US8990451B2 (en) | Controller for direct access to a memory for the direct transfer of data between memories of several peripheral devices, method and computer program enabling the implementation of such a controller | |
Wiangtong et al. | Hardware/software codesign: a systematic approach targeting data-intensive applications | |
US20240106893A1 (en) | Filecoin cluster data transmission method and system based on remote direct memory access | |
CN112764877B (zh) | 一种用于硬件加速设备与docker内进程通信的方法与系统 | |
US9513923B2 (en) | System and method for context migration across CPU threads | |
CN108415758B (zh) | 分布式事务协调方法及装置 | |
CN110363663A (zh) | 基于区块链的数据批量处理方法、装置、设备及存储介质 | |
CN111597035B (zh) | 基于多线程的仿真引擎时间推进方法及系统 | |
US10417815B2 (en) | Out of order pixel shader exports | |
CN110955461B (zh) | 计算任务的处理方法、装置、系统、服务器和存储介质 | |
CN115729700A (zh) | 一种数据处理方法、装置、电子设备和存储介质 | |
CN112182111A (zh) | 基于区块链的分布式系统分层处理方法和电子设备 | |
CN111324439A (zh) | 用于向量单元的密码引擎和调度方法 | |
CN111290791A (zh) | 具有高性能密码操作的标量单元 | |
CN115390986A (zh) | 一种基于国密芯片的智能合约并行执行系统 | |
CN114371920A (zh) | 一种基于图形处理器加速优化的网络功能虚拟化系统 | |
CN117940934A (zh) | 数据处理装置及方法 | |
CN110430263B (zh) | 一种增值业务处理系统及方法 | |
US10565036B1 (en) | Method of synchronizing host and coprocessor operations via FIFO communication | |
CN114006703B (zh) | 系统间数据传输方法及装置 | |
CN112506677B (zh) | TensorFlow的分布式矩阵计算实现方法与系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |