CN116662229A - 一种数据传输方法及电子设备 - Google Patents
一种数据传输方法及电子设备 Download PDFInfo
- Publication number
- CN116662229A CN116662229A CN202310534175.XA CN202310534175A CN116662229A CN 116662229 A CN116662229 A CN 116662229A CN 202310534175 A CN202310534175 A CN 202310534175A CN 116662229 A CN116662229 A CN 116662229A
- Authority
- CN
- China
- Prior art keywords
- processor
- data
- memory
- data transmission
- storage device
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 142
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000012546 transfer Methods 0.000 claims abstract description 39
- 230000004044 response Effects 0.000 claims abstract description 5
- 238000012545 processing Methods 0.000 claims description 31
- 238000004590 computer program Methods 0.000 claims description 9
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 description 21
- 230000008569 process Effects 0.000 description 17
- 230000006870 function Effects 0.000 description 7
- 239000008186 active pharmaceutical agent Substances 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000003863 physical function Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 210000001503 joint Anatomy 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Bus Control (AREA)
- Information Transfer Systems (AREA)
Abstract
本说明书提供一种数据传输方法及电子设备,所述电子设备包含:第一处理器、第二处理器和第三处理器,其中:所述第一处理器,用于发起针对第三处理器内存与目标存储设备的数据传输请求所述第二处理器,用于响应于所述数据传输请求,基于所述第二处理器与所述第三处理器内存之间的直接内存访问DMA通道,以及所述第二处理器与所述目标存储设备之间的数据传输通道,在所述第三处理器内存与所述目标存储设备之间进行数据传输。
Description
技术领域
本说明书涉及计算机技术领域,尤其涉及一种数据传输方法及电子设备。
背景技术
随着人工智能(Artificial Intelligence,AI)技术的发展,现有的AI技术架构难以适应于不同处理器之间协同处理的、越来越大的数据处理需求,以涉及中央处理器(Central Processing Unit,CPU)和图形处理器(Graphics Processing Unit,GPU)的AI计算过程为例:由于用于AI计算的数据需要从特定的存储设备传输至GPU通常需要涉及网络传输与内存拷贝,导致对应的服务器内和CPU需要进行繁杂的数据传输操作,减低了数据的实际传输效率,并浪费了大量的CPU资源。
在相关技术中,通常采用传统的分布式文件系统(Distributed File System)、GPU直接存储(GPU Direct Storage,GDS)技术或者基于远程直接内存访问(Remote DirectMemory Access,RDMA)的GPU直接通信(GPU Direct RDMA,GDR)技术传输数据。然而,前者依然要求GPU参与数据加载至GPU的操作过程,导致CPU资源开销较高;后二者尽管无需CPU的参与,但目前支持GDS技术的存储产品以及支持RDMA技术的网络环境有限,导致适用范围小,使用成本高。
发明内容
有鉴于此,本说明书提供一种数据传输方法及装置,以解决相关技术中存在的不足。
具体地,本说明书是通过如下技术方案实现的:
根据本说明书实施例的第一方面,提供了一种电子设备,包含:第一处理器、第二处理器和第三处理器,其中:
所述第一处理器,用于发起针对第三处理器内存与目标存储设备的数据传输请求;
所述第二处理器,用于响应于所述数据传输请求,基于所述第二处理器与所述第三处理器内存之间的直接内存访问DMA通道,以及所述第二处理器与所述目标存储设备之间的数据传输通道,在所述第三处理器内存与所述目标存储设备之间进行数据传输。
根据本说明书实施例的第二方面,提供了一种数据传输方法,应用于电子设备中的数据处理器第二处理器,所述电子设备还包含:中央处理器第一处理器和图形处理器第三处理器,所述方法包括:
响应于所述第一处理器发起的针对第三处理器内存与目标存储设备的数据传输请求,基于所述第二处理器与所述第三处理器内存之间的直接内存访问DMA通道,以及所述第二处理器与所述目标存储设备之间的数据传输通道,在所述第三处理器内存与所述目标存储设备之间进行数据传输。
根据本说明书实施例的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如第二方面所述的方法的步骤。
根据本说明书实施例的第四方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第二方面所述的方法的步骤。
在本说明书所提供的技术方案中,通过第二处理器承担了原本由作为第一处理器所负责的数据传输操作,使得第一处理器无需参与数据传输过程,进而减少了第一处理器资源开销,同时,第二处理器在协助第三处理器内存与目标存储设备进行数据传输时仅涉及直接内存访问(Direct Memory access,DMA)通道与数据传输通道,无需专门的存储产品与网络环境,适用范围广,使用成本低。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本说明书一示例性实施例示出的一种电子设备的架构示意图;
图2是本说明书一示例性实施例示出的一种数据传输方法的流程示意图;
图3是本说明书一示例性实施例示出的另一种电子设备的架构示意图;
图4是本说明书一示例性实施例示出的一种处理第一传输请求的流程示意图;
图5是本说明书一示例性实施例示出的一种处理第二传输请求的流程示意图;
图6是本说明书一示例性实施例示出的一种数据传输装置的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与本说明书的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本说明书所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
在相关技术中,文件系统是计算机操作系统中负责管理和存储文件信息的软件结构的文件管理系统的简称,即用于明确存储设备或分区上的文件的方法和对应的数据结构,为了实现AI计算过程中例如将存储设备的数据传输至GPU内存(或称为显存)等数据存储操作,通常提供有以下基于不同构思的文件系统:
例如分布式文件系统,该文件系统的优势在于存储容量大(例如可存储拍字节(Petabyte,PB)甚至艾字节(Exabyte,EB)级别的数据,并提供高吞吐量的数据访问)。但是分布式文件系统通常并不支持标准的可移植操作系统接口(Portable Operating SystemInterface of UNIX,POSIX),导致应用程序在通过上述分布式文件系统执行AI计算时需要额外加载对应该文件系统的存储客户端或软件开发工具包(Software Development Kit,SDK),并由该客户端通过网络连接从多个数据节点中获取数据;此外,将分布式文件系统中的数据加载至GPU的过程也仍然需要CPU的参与:即首先由网卡接收数据到CPU的内核态缓冲区(Buffer)中,然后从内核态Buffer拷贝到用户态Buffer中,最后再拷贝到GPU内存中。本领域技术人员可以理解的是,在上述过程中,网络处理和内存拷贝操作给CPU造成大量的开销,同时数据经过系统内存(即上述内核态Buffer与用户态Buffer)中转也限制了GPU加载数据的带宽大小。
又例如支持GDS技术的文件系统,其中,GDS技术可实现将数据从本机存储器通过总线和接口标准PCIe P2P(Peripheral Component Interface Express peer-to-peer)技术直接传输到GPU,使得GPU和存储系统之间的数据传输不再需要CPU的参与,经过也不需要经过上述系统内存中转,从而大大的缩短了数据传输路径,提升了数据传输效率。例如:在存储器中的数据需要被写入至GPU内存的情况下,上述存储器可以基于上述GDS技术,通过PCIe交换机(Switch)直接写入对应的GPU内存中(假设上述GPU与上述存储器同时与上述PCIe交换机相连接)。当然,如果上述存储器被位于上述GPU所在的电子设备之外的其他存储设备而非电子设备内部,那么可以结合GDR技术,将上述其他存储设备的数据通过RDMA通道传输至上述电子设备中RDMA设备,再由该RDMA设备的DMA引擎将数据传输到GPU内存中。尽管上述GDS/GDR技术使得对应文件系统的数据传输效率相比上述分布式文件系统有所提高,但此类技术依然存在有以下限制:一方面,GDS技术支持的存储产品有限,仅支持部分生产商设计的存储硬件和特殊存储硬件(例如部分计算型存储设备),或者基于RDMA网络工作的商业存储产品;另一方面,GDR技术只支持RDMA网络环境,考虑到RDMA网络并不是行业内普遍且通用的部署标准(例如云计算服务中的云服务器(Elastic Compute Service,ECS)集群便不基于RDMA网络进行部署)、对于已有的数据存储系统的网络和硬件改造难度高、成本高、在跨网络环境(例如不同地域或可用区)中也无法使用RDMA网络,且RDMA网络完全依赖于支持RDMA技术的网卡硬件等多个客观原因,GDR技术的应用场景较小。
因此,本说明书提出以下技术方案以解决上述问题。
图1是本说明书一示例性实施例示出的一种电子设备的架构示意图。如图1所示,可以包括第一处理器11、第二处理器12和第三处理器13以及目标存储设备14。
第一处理器11可以用于作为计算机系统的运算和控制核心,例如CPU,在本说明书的技术方案中可以用于发起针对第三处理器内存与目标存储设备的数据传输请求,并接收最终返回的数据传输请求的执行结果。
第二处理器12可以是在数据处理方面实现与第一处理器类似功能的PCIe的处理单元,且通常可以帮助第一处理器卸载部分基础的软件和服务,从而更好地为用户提供网络、存储和安全等服务,例如数据处理器(Data Processing Unit,DPU)。其中,第二处理器可以搭载有用于建立DMA通道的DMA引擎。在本说明书的技术方案中,第二处理器可以用于响应于第一处理器发起的所述数据传输请求,并基于第二处理器与第三处理器内存之间的直接内存访问DMA通道,以及第二处理器与目标存储设备之间的数据传输通道,在第三处理器内存与目标存储设备之间进行数据传输,进而在不涉及第一处理器的同时替代第一处理器的原本负责的数据传输操作,并提高数据的传输效率。其中,第二处理器可以通过智能网卡、无线基础设施和网络设备等类型实现,本说明书中并不对此进行限制。
第三处理器13可以是具有独立内存空间的PCIe处理单元,例如作为图形系统结构的重要元件的GPU,上述GPU可以在AI领域中通常可以用于数据的并行加速计算。其中,第三处理器内部设置有内存空间,使得第三处理器内存可以在本说明书的技术方案中用于写入目标存储设备中的数据,或者提供已写入的数据以便目标存储设备的读取与写入。
目标存储设备中可以存储有用于AI计算的数据。其中,目标存储设备可以是电子设备内部任一具有独立存储空间的PCIe设备(甚至可以是除上述第三处理器13之外的其他图像处理器),也可以是电子设备之外、位于服务器中的存储设备。其中,服务器可以部署于包含一独立主机的物理服务器,或者该服务器可以部署于主机集群承载的虚拟服务器(如云服务器),本说明书中并不对此进行限制。
图2是本说明书一示例性实施例示出的一种数据传输方法的流程示意图,该方法可以应用于电子设备中的第二处理器,所述电子设备还包含:第一处理器和第三处理器,具体包括以下步骤:
S201,响应于所述第一处理器发起的针对第三处理器内存与目标存储设备的数据传输请求,基于所述第二处理器与所述第三处理器内存之间的直接内存访问DMA通道,以及所述第二处理器与所述目标存储设备之间的数据传输通道,在所述第三处理器内存与所述目标存储设备之间进行数据传输。
上述第二处理器可以响应于上述数据传输请求建立第三处理器内存与上述目标存储设备之间的数据传输链路,即利用第二处理器自身实现第三处理器内存与目标存储设备之间的数据中转。由于该过程可以由第二处理器独立实现,不需要第一处理器参与数据传输,因此减少了对应的第一处理器资源消耗。同时,相比上述GDS或GDR技术,本说明书的传输过程既不限制目标存储设备的具体类型,也不要求提供例如RDMA等特定网络环境,因此在减低方案实现成本的同时还有效扩大了适用范围。此外,上述数据传输通道可以是基于通用网络协议(例如传输控制协议(Transmission Control Protocol,TCP)或用户数据报协议(User Datagram Protocol,UDP))建立的网络传输通道,本说明书中并不对此进行限制。
本领域技术人员可以理解的是,上述利用DMA技术实现在第二处理器与第三处理器之间的直接数据传输技术的技术构思,可以使得上述GDS以及类似的技术不再受限于特定的存储硬件或网络环境,进而可以在常见的分布式存储进行应用,以达到提升数据传输带宽、降低延时和优化第一处理器利用率的效果。
上述数据传输请求是由第一处理器发起,目的在于第二处理器可以对其进行响应,因此本说明书提供了以下第二处理器与第一处理器之间的通信方式。
在一实施例中,第二处理器可以基于DMA引擎建立的DMA通道向内存储器(可视为下文主机的主机内存)中读取或写入相应的数据,因此第一处理器在发起数据传输请求后,第二处理器可以通过上述DMA通道从上述主机内存中获取上述数据传输请求并进行响应。
在另一实施例中,为避免DMA较低的传输效率导致后续第三处理器内存与目标存储设备之间的数据传输效率一同下降,可以在第一处理器中配置有对应上述第二处理器的设备驱动,该设备驱动可以用于创建第一处理器与第二处理器之间的共享内存,以使第一处理器向共享内存提交数据传输请求后,第二处理器可以响应于上述共享内存中的数据更新,并从该共享内存中获取上述数据传输请求。其中,上述数据更新可以为第一处理器向共享内存中写入数据传输请求所产生的,第二处理器可以通过监听或者定时查询的方式获取上述数据更新,本说明书中并不对其获取方式进行限制。在该实施例中,共享内存相比DMA通道具有更高的数据传输效率,进而也可以减低对于第三处理器内存与目标存储设备之间的数据传输操作的延迟。此外,上述设备驱动除了建立上述共享内存外,还可以用于初始化下文的共享环形队列、探测下文中第二处理器所暴露的内存,以及控制第二处理器的中断和以及相应的DMA配置。
当然,上述共享内存还可以基于共享环形队列等数据结构来维护由第一处理器发起的数据传输请求,以提高共享内存对应上述数据传输请求的管理效率,并便于第二处理器通过上述共享环形队列更加便捷地获取对应的数据传输请求,例如第一处理器和第二处理器之间通过在上述共享消息队列中提交或接收数据传输请求的方式实现相互通信。
上述共享内存本质上可以理解为主机(包括第一处理器和内存储器)和第二处理器之间的内存映射技术,即第二处理器将自身的一部分内存通过对应的PCIe基地址寄存器(Base Address Registers,BAR)暴露到主机的PCIe地址空间中,从而允许第一处理器访问该内存,同时也允许其它设备通过PCIe P2P机制进行访问。具体的,上述暴露过程可以解释为第一处理器通过PCIe总线进行重新枚举扫描以发现新的PCIe设备(例如上述第二处理器),并通过上述PCIe总线对发现的设备发起对应的设备配置请求,上述第二处理器可以响应于上述设备配置请求,返回第二处理器内存对应的属性信息,以使上述设备驱动可以根据上述属性信息配置对应的BAR,进而根据上述BAR创建上述共享内存。其中,上述属性信息可以包括第二处理器内存的大小、内存类型等信息,本说明书中并不对此进行限制。
上述数据传输请求可以基于第一处理器用户态中运行的应用程序所触发的指令产生。
在一实施例中,第一处理器可以在用户态运行应用程序,以生成数据传输指令,并在切换至内核态后运行文件系统,以将上述数据传输指令封装为上述数据传输请求,进而通过上述共享内存使得第二处理器可以响应上述数据传输请求。其中,用户态与内核态的交互可以基于对应的用户态库和内核驱动实现,上述用户态库可以提供类似POSIX的“pread”和“pwrite”的应用编程接口(Application Programming Interface,API)以供应用程序使用,当应用程序通过对应API执行对应操作时,内核驱动可以用于将对应的第三处理器内存转换为主机上的物理地址(该过程涉及到第三处理器内存在主机内存中的分配与注册,具体步骤将在下文的实施例中进行解释,本说明书再次不再进行赘述),以使得第二处理器的DMA引擎可以基于上述物理地址将数据传输到正确的第三处理器内存中。此外,上述文件系统兼容于上述POSIX标准,且在支持普通的POSIX API访问的同时支持上述内核驱动的对接,进而可以配合上述内核模块获取上述物理地址。
为保证位于不同物理介质上的不同文件系统均可以被POSIX API访问,可以在所有文件系统之上再引入虚拟文件系统(Virtual File System,VFS)的技术概念,从而为各类文件系统提供了一个统一的操作界面和应用编程接口。同时,为实现将上述数据传输指令封装为上述数据传输请求的操作,可以通过用户空间文件系统(Filesystem inUserspace,FUSE)的方式定制对应的文件系统并配合上述应用程序实现,那么上述数据传输请求可以被视为一种基于上述FUSE协议格式生成的报文。
需要强调的是,本说明书中设计的上述文件系统:在一方面,仅涉及第三处理器内存的地址转换、数据传输指令的封装以及提交至第二处理器共享内存等资源需求低的功能,传统文件系统中的数据搬移操作被卸载至第二处理器中,并由其中的DMA引擎完成,因此释放了第一处理器执行上述数据搬移操作所需的额外资源;在另一方面,上述文件系统对主机提供对POSIX API的支持,相比传统的分布式文件系统可以适配常见的应用场景应用。
当上述第二处理器接收到在第一处理器发起的数据传输请求后,可以对该数据传输请求解析为对应的文件操作。数据传输请求可以根据传输目的至少划分为:用于指示第二处理器将目标存储设备的数据传输至第三处理器内存的第一传输请求,或者用于指示第二处理器将第三处理器内存的数据传输至目标存储设备的第二传输请求。上述第一传输请求和第二传输请求分别对应不同的文件操作,本说明书中的第二处理器对与不同的文件操作可以执行有不同的数据传输策略。例如在数据传输请求为第一传输请求的情况下,第二处理器可以通过数据传输通道向目标存储设备发送数据读取请求,接收目标存储设备针对数据读取请求返回的第一目标数据,并通过DMA通道将第一目标数据写入第三处理器内存;又或者,在数据传输请求为第二传输请求的情况下,第二处理器可以通过DMA通道从第三处理器内存中获取对应第二传输请求的第二目标数据,并通过数据传输通道向目标存储设备发送针对第二目标数据的数据写入请求,以使目标存储设备中存储第二目标数据。其中,数据传输通道可以基于第二处理器中预设的对应目标存储设备的存储客户端创建与使用。当然,在第二处理器接收到对应输入/输出(Input/Output,I/O)操作的完成信息时,还可以将通过中断的方式及时通知主机中的第一处理器。此外,由于DMA技术的传输原理与具体实现方式基本已被相关技术所公开,因此本说明书中对此不再进行赘述。
下面结合图3对基于上述数据传输方法实现的电子设备进行进一步解释,并通过图4和图5对上述数据传输请求为第一传输请求与第二传输请求的两种执行过程进行分别讨论。
如图3所述,以上述第一处理器为中央处理器第一处理器,上述第二处理器为数据处理器DPU,上述第三处理器为图形处理器GPU为例,假设该电子设备主要包括主机、CPU、GPU。其中,主机中的CPU与主机内存可以通过根复合体(ROOT Complex,RC)连接到由一个或多个PCIe或PCI设备组成的PCIe交换机,同时该PCIe交换机通过PCIe通道与DPU与GPU相连接,DPU中由软件程序或物理元件实现的请求处理模块又可以与目标存储设备相连接。
在上述电子设备正式工作前,需要对各个部分进行初始化处理,具体步骤如下:
首先,用户可以通过在主机内核态中的应用程序执行针对目标存储设备的挂载/连接指令,并输入需要包含访问上述目标存储设备对应的存储系统所必需的参数,例如存储类型、IP地址、鉴权信息等信息;然后,主机可以通过操作系统内核所提供的系统文件接口(例如Linux系统中的sysfs接口)配置DPU的物理功能(Physical Function,PF)并创建与之对应的虚拟功能(Virtual Function,VF),并使DPU为VF分配可以访问的内存空间;然后,主机的CPU可以通过PCIe总线重新枚举扫描从探测新的PCIe设备(例如上述DPU),并通过PCIe基地址寄存器(BAR)获取DPU设备主动暴露的内存大小,进而配置对应的BAR;同时,主机可以加载对应新发现的PCIe设备的驱动程序(对应图3的DPU设备驱动),在驱动程序中完成主机与DPU之间的共享内存的初始化,使得DPU和主机中的CPU可以通过上述共享内存进行通信;对于DPU自身,此时可以启动对应目标存储设备的存储客户端或SDK,并通过网络连接到远端的目标存储设备的存储系统(例如对象存储系统或者分布式存储系统),以便于后续数据传输通道的建立与使用;最后,主机可以挂载POSIX文件系统,并通过系统内核中的FUSE实现与文件系统与共享内存之间的对接。
其中,为保证DPU可以根据DMA引擎对正确的GPU内存地址进行访问与读写,上述应用程序需要提前分配GPU内存将对其进行注册。例如:假设用户态中存在库libcufile.so,该库为应用程序提供对应的存储文件接口cuFile API(例如文件读取接口cuFileRead和文件写入接口cuFileWrite),那么应用程序可以通过内存分配接口cudaMalloc分配GPU内存(以下简称为devPtr),并调用内存注册接口cuFileBufRegister注册这段GPU内存;然后,上述库还可以通过内存映射(memory map,mmap)分配一段和GPU内存大小相同的虚拟地址空间(shadow buffer),并对该shadow buffer的地址进行记录(以下简称为cpu_vaddr);如前文所述,假设与上述用户态库对应内核驱动为nvidia-fs.ko,则该内核驱动可以通过GPU厂商驱动提供的接口(例如nvidia_p2p_get_pages)获取上述devPtr在主机上对应的物理地址(phy_addr),综上,上述内核驱动可以用于维护上述shadow buffer和GPU内存物理地址的映射关系(即上述cpu_vaddr和上述phy_addr之间的映射关系)。
对于DPU中的请求处理模块,该模块主要负责对DPU与主机之间的共享内存中的数据传输请求进行解析与后续目标存储设备与GPU内存之间的数据转移。具体操作步骤可结合图4进行说明。图4是本说明书一示例性实施例示出的一种处理第一传输请求的流程示意图。如图4所示,对应的数据传输请求用于读取目标存储设备中的目标数据,并将其写入至GPU内存中。
1,在一实施例中,主机上的应用程序可以调用上述cuFileRead接口生成数据传输指令,以指示将目标存储设备的数据文件读取至GPU内存中,主机中对应的用户态库libcufile.so可以查询devPtr在shadow buffer中的cpu_vaddr,然后将该上述数据传输指令下发到至内核模块nvidia-fs.ko,以使得上述内核模块可以调用操作系统内核的VFS框架注册函数进入文件系统。
2,在一实施例中,文件系统可以调用上述内核模块的回调函数查询得到与cpu_vaddr对应的phy_addr,并将携带该phy_addr、对应上述数据传输指令的文件操作封装为FUSE格式的数据传输请求,以提交到基于DPU设备驱动创建的共享内存的共享环形队列。
3,在一实施例中,DPU上的请求处理模块通过共享内存的共享环形队列获取到上述数据传输请求,并根据对应的FUSE协议将其解析为实际的文件操作。
4,在一实施例中,上述请求处理模块通过上述存储客户端将对于上述文件操作的读请求提交到目标存储设备。
5,在一实施例中,上述目标存储设备可以返回上述读请求对应的目标数据至DPU。
6,在一实施例中,DPU上的请求处理模块可以配置DMA引擎,并将DMA地址设置为上述phy_addr。
7,在一实施例中,DPU的DMA引擎的DMA通过将目标数据传输到GPU内存中,当完成传输后DPU可以触发中断,通知CPU上述数据传输请求完成。
图5是本说明书一示例性实施例示出的一种处理第二传输请求的流程示意图。如图5所示,对应的数据传输请求用于读取GPU内存中的目标数据,并将其写入至目标存储设备中。
1,在一实施例中,主机上的应用程序可以调用上述cuFileWrite接口生成数据传输指令,以指示将目标存储设备的数据文件读取至GPU内存中,主机中对应的用户态库libcufile.so可以查询devPtr在shadow buffer中的cpu_vaddr,然后将该上述数据传输指令下发到至内核模块nvidia-fs.ko,以使得上述内核模块可以调用操作系统内核的VFS框架注册函数进入文件系统。
2、3步骤与图3的执行过程基本一致,因此本说明书中并不再对此进行赘述。
4,在一实施例中,DPU上的请求处理模块可以配置DMA引擎,并将DMA地址设置为上述phy_addr。
5,在一实施例中,DPU的DMA引擎的DMA通过将GPU内存中对应phy_addr的目标数据传输到DPU内存中
6,在一实施例中,上述请求处理模块通过上述存储客户端将携带上述目标数据的写请求提交到目标存储设备。
7,在一实施例中,上述目标存储设备可以返回上述写请求对应的完成提示信息。此时DPU可以触发中断,通知CPU上述数据传输请求完成。
通过以上实施例可知,本说明书的方案通过第二处理器承担了原本由作为第一处理器所负责的数据传输操作,使得第一处理器无需参与数据传输过程,进而减少了第一处理器资源开销,同时,第二处理器在协助第三处理器内存与目标存储设备进行数据传输时仅涉及直接内存访问(Direct Memory access,DMA)通道与数据传输通道,无需专门的存储产品与网络环境,适用范围广,使用成本低。
与前述数据传输方法的实施例相对应,本说明书还提供了一种数据传输装置的实施例。
请参考图6,图6是一示例性实施例示出的一种数据传输装置的结构示意图。如图6所示,该装置应用于电子设备中的第二处理器,所述电子设备还包含:第一处理器和第三处理器,该装置可以包括:
数据传输单元601,用于响应于所述第一处理器发起的针对GPU内存与目标存储设备的数据传输请求,基于所述第二处理器与所述第三处理器内存之间的直接内存访问DMA通道,以及所述第二处理器与所述目标存储设备之间的数据传输通道,在所述第三处理器内存与所述目标存储设备之间进行数据传输。
可选的,所述第一处理器配置有对应所述第二处理器的设备驱动,所述设备驱动用于创建所述第一处理器与所述第二处理器之间的共享内存;所述装置还包括:
传输请求获取单元602,用于响应于所述共享内存中的数据更新,从所述共享内存中获取所述数据传输请求,所述数据更新为所述第一处理器向所述共享内存中写入所述数据传输请求所产生的。
可选的,所述装置还包括:
共享内存创建单元603,用于响应于所述第一处理器发起的设备配置请求,返回第二处理器内存对应的属性信息,以使所述设备驱动根据所述属性信息创建所述共享内存。
可选的,所述第一处理器还用于:在用户态运行应用程序,以生成数据传输指令;
切换至内核态并运行文件系统,以将所述数据传输指令封装为所述数据传输请求。
可选的,所述数据传输请求为用于指示所述第二处理器将所述目标存储设备的数据传输至所述第三处理器内存的第一传输请求,或者用于指示所述第二处理器将所述第三处理器内存的数据传输至所述目标存储设备的第二传输请求;所述数据传输单元601具体用于:
在所述数据传输请求为第一传输请求的情况下,所述第二处理器通过所述数据传输通道向所述目标存储设备发送数据读取请求,接收所述目标存储设备针对所述数据读取请求返回的第一目标数据,并通过所述DMA通道将所述第一目标数据写入所述第三处理器内存;
在所述数据传输请求为第二传输请求的情况下,所述第二处理器通过所述DMA通道从所述第三处理器内存中获取对应所述第二传输请求的第二目标数据,并通过所述数据传输通道向所述目标存储设备发送针对所述第二目标数据的数据写入请求,以使所述目标存储设备中存储所述第二目标数据。
可选的,上述所述第一处理器为中央处理器CPU,第二处理器为数据处理器DPU,第三处理器为图形处理器GPU。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本说明书提供了一种电子设备,该电子设备部署有如上所述的数据传输系统中的CPU、DPU和GPU。
本说明书中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、包括本说明书中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。
本说明书中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。所述处理及逻辑流程还可以由专用逻辑电路—例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)来执行,并且装置也可以实现为专用逻辑电路。
适合用于执行计算机程序的计算机包括,例如通用和/或专用微处理器,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的基本组件包括用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏操纵台、全球定位系统(GPS)接收机、或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如EPROM、EEPROM和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及CD ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。
虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
由此,主题的特定实施例已被描述。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
Claims (12)
1.一种电子设备,包含:第一处理器、第二处理器和第三处理器,其中:
所述第一处理器,用于发起针对第三处理器内存与目标存储设备的数据传输请求;
所述第二处理器,用于响应于所述数据传输请求,基于所述第二处理器与所述第三处理器内存之间的直接内存访问DMA通道,以及所述第二处理器与所述目标存储设备之间的数据传输通道,在所述第三处理器内存与所述目标存储设备之间进行数据传输。
2.根据权利要求1所述的电子设备,所述第一处理器配置有对应所述第二处理器的设备驱动,所述设备驱动用于创建所述第一处理器与所述第二处理器之间的共享内存;
所述第一处理器还用于:向所述共享内存中写入所述数据传输请求;
所述第二处理器还用于:响应于所述共享内存的数据更新,从所述共享内存中获取所述数据传输请求。
3.根据权利要求2所述的电子设备,所述第二处理器还用于:
响应于所述第一处理器发起的设备配置请求,返回第二处理器内存对应的属性信息,以使所述设备驱动根据所述属性信息创建所述共享内存。
4.根据权利要求1所述的电子设备,所述第一处理器还用于:
在用户态运行应用程序,以生成数据传输指令;
切换至内核态并运行文件系统,以将所述数据传输指令封装为所述数据传输请求。
5.根据权利要求1所述的电子设备,所述数据传输请求为用于指示所述第二处理器将所述目标存储设备的数据传输至所述第三处理器内存的第一传输请求,或者用于指示所述第二处理器将所述第三处理器内存的数据传输至所述目标存储设备的第二传输请求;
所述在所述第三处理器内存与所述目标存储设备之间进行数据传输,包括:
在所述数据传输请求为第一传输请求的情况下,所述第二处理器通过所述数据传输通道向所述目标存储设备发送数据读取请求,接收所述目标存储设备针对所述数据读取请求返回的第一目标数据,并通过所述DMA通道将所述第一目标数据写入所述第三处理器内存;
在所述数据传输请求为第二传输请求的情况下,所述第二处理器通过所述DMA通道从所述第三处理器内存中获取对应所述第二传输请求的第二目标数据,并通过所述数据传输通道向所述目标存储设备发送针对所述第二目标数据的数据写入请求,以使所述目标存储设备中存储所述第二目标数据。
6.根据权利要求1所述的电子设备,所述第一处理器为中央处理器CPU,第二处理器为数据处理器DPU,第三处理器为图形处理器GPU。
7.一种数据传输方法,应用于电子设备中的第二处理器,所述电子设备还包含:第一处理器和第三处理器,所述方法包括:
响应于所述第一处理器发起的针对第三处理器内存与目标存储设备的数据传输请求,基于所述第二处理器与所述第三处理器内存之间的直接内存访问DMA通道,以及所述第二处理器与所述目标存储设备之间的数据传输通道,在所述第三处理器内存与所述目标存储设备之间进行数据传输。
8.根据权利要求7所述的方法,所述第一处理器配置有对应所述第二处理器的设备驱动,所述设备驱动用于创建所述第一处理器与所述第二处理器之间的共享内存;所述方法还包括:
响应于所述共享内存中的数据更新,从所述共享内存中获取所述数据传输请求,所述数据更新为所述第一处理器向所述共享内存中写入所述数据传输请求所产生的。
9.根据权利要求8所述的方法,所述方法还包括:
响应于所述第一处理器发起的设备配置请求,返回第二处理器内存对应的属性信息,以使所述设备驱动根据所述属性信息创建所述共享内存。
10.根据权利要求7所述的方法,所述第一处理器为中央处理器CPU,第二处理器为数据处理器DPU,第三处理器为图形处理器GPU。
11.一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如权利要求7~10任一所述方法的步骤。
12.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求7~10任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310534175.XA CN116662229A (zh) | 2023-05-09 | 2023-05-09 | 一种数据传输方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310534175.XA CN116662229A (zh) | 2023-05-09 | 2023-05-09 | 一种数据传输方法及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116662229A true CN116662229A (zh) | 2023-08-29 |
Family
ID=87727089
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310534175.XA Pending CN116662229A (zh) | 2023-05-09 | 2023-05-09 | 一种数据传输方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116662229A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117857658A (zh) * | 2023-12-15 | 2024-04-09 | 天翼云科技有限公司 | 一种基于三栈融合的流量通信和动态切换方法及装置 |
-
2023
- 2023-05-09 CN CN202310534175.XA patent/CN116662229A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117857658A (zh) * | 2023-12-15 | 2024-04-09 | 天翼云科技有限公司 | 一种基于三栈融合的流量通信和动态切换方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10095639B2 (en) | Multi-processor startup system | |
US10282192B1 (en) | Updating device code through a bus | |
US8131814B1 (en) | Dynamic pinning remote direct memory access | |
RU2637428C2 (ru) | Масштабируемый прямой обмен данными между узлами через шину межсоединения периферийных компонентов типа экспресс (pcie) | |
JP5869135B2 (ja) | コプロセッサのためのダイレクトi/oアクセス | |
CN112422615A (zh) | 一种通信的方法及装置 | |
US20030145230A1 (en) | System for exchanging data utilizing remote direct memory access | |
CN114756388B (zh) | 一种基于rdma的集群系统节点间按需共享内存的方法 | |
CN114201317B (zh) | 数据传输方法、装置、存储介质及电子设备 | |
WO2015180513A1 (zh) | 一种数据传输方法及计算机 | |
WO2022017475A1 (zh) | 一种数据访问方法及相关设备 | |
CN116662229A (zh) | 一种数据传输方法及电子设备 | |
WO2024217333A1 (zh) | 一种基于块存储的io访问方法、装置、电子设备及介质 | |
CN115080479B (zh) | 传输方法、服务器、设备、裸金属实例及基板管理控制器 | |
CN105389120A (zh) | 支持通过活动消息的rma api | |
CN110865868A (zh) | 一种低延迟控制方法、装置及其设备 | |
CN116185553A (zh) | 数据迁移方法、装置及电子设备 | |
CN115686836A (zh) | 一种安装有加速器的卸载卡 | |
US11157191B2 (en) | Intra-device notational data movement system | |
CN116701015A (zh) | 应用间通信方法、装置 | |
TWI567638B (zh) | 多核心處理器、多核心處理系統、及初始化處理核心之方法 | |
CN116028238A (zh) | 计算引擎通信方法及装置 | |
CN115549858A (zh) | 数据传输方法以及装置 | |
KR102426416B1 (ko) | 멀티 커널 시스템의 입출력 처리 방법 및 장치 | |
CN118606079B (zh) | 一种基于socket接口的通信方法和系统 |
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 |