CN116383127B - 节点间通信方法、装置、电子设备及存储介质 - Google Patents

节点间通信方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116383127B
CN116383127B CN202310640711.4A CN202310640711A CN116383127B CN 116383127 B CN116383127 B CN 116383127B CN 202310640711 A CN202310640711 A CN 202310640711A CN 116383127 B CN116383127 B CN 116383127B
Authority
CN
China
Prior art keywords
node
source node
target node
communication
identity information
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.)
Active
Application number
CN202310640711.4A
Other languages
English (en)
Other versions
CN116383127A (zh
Inventor
赵谦谦
阚宏伟
郝锐
肖麟阁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202310640711.4A priority Critical patent/CN116383127B/zh
Publication of CN116383127A publication Critical patent/CN116383127A/zh
Application granted granted Critical
Publication of CN116383127B publication Critical patent/CN116383127B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请提供节点间通信方法、装置、电子设备及存储介质。包括:获取现场可编程门阵列的列表;根据列表将现场可编程门阵列虚拟化得到第一源节点和第一目标节点;获取第一源节点和第一目标节点之间的申请描述符,其中,申请描述符包括第一源节点和第一目标节点的内存地址;根据第一源节点的内存地址获取第一源节点的身份信息,根据第一目标节点的内存地址获取第一目标节点的身份信息;根据第一源节点的身份信息和第一目标节点的身份信息,通过远程直接存储器访问模块对第一源节点和第一目标节点执行通信动作。由于本申请提供的节点间通信方法依赖RDMA模块执行第一源节点和第一目标节点间的通信动作,不需要CPU参与,提高了节点间通信效率。

Description

节点间通信方法、装置、电子设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种节点间通信方法、装置、电子设备及非易失性可读存储介质。
背景技术
集群管理难度随着大规模集群和超大规模集群的出现呈指数级增长,越来越多的用户选择集群管理工具对集群进行管理。现有的集群管理工具往往采用容器技术进行部署。但是这种部署方式中单一图形处理单元(Graphics Processing Unit,GPU)只能被一个容器占用,GPU的芯片算力存在浪费。
针对上述问题,现有技术往往采用虚拟化技术实现多个不同容器间的GPU资源共享,但是,多个虚拟图像处理单元(Vitual Graphics Processing Unit,VGPU)容器间同样需要多条网络进行通信,而这些网络通信需要中央处理单元(Central Processing Unit ,CPU)参与。当处理任务复杂时,CPU长时间被不同容器间的通信严重占用,通信处理能力差。
发明内容
本申请提供了一种节点间通信方法、装置、电子设备及非易失性可读存储介质。本申请提供的节点间通信方法中,节点间通信方法通过携带第一源节点的内存信息和第一目标节点的内存信息确定第一源节点的身份信息和第一目标节点的身份信息,根据第一源节点的身份信息和第一目标节点的身份信息,通过远程直接存储器访问(Remote DirectMemory Access,RDMA)模块对第一源节点和第一目标节点执行通信动作。由于本申请提供的节点间通信方法依赖RDMA模块执行第一源节点和第一目标节点间的通信动作,不需要CPU参与,避免了CPU被节点间通信长期占用的问题,提高了节点间通信效率。
第一方面,本申请提供了一种节点间通信方法,该方法包括:
获取现场可编程门阵列的列表;
根据现场可编程门阵列的列表将现场可编程门阵列虚拟化得到第一源节点和第一目标节点,其中,第一源节点和第一目标节点为通用计算图形处理单元节点;
获取第一源节点和第一目标节点之间的申请描述符,其中,申请描述符包括第一源节点的内存地址和第一目标节点的内存地址;
根据第一源节点的内存地址获取第一源节点的身份信息,根据第一目标节点的内存地址获取第一目标节点的身份信息;
根据第一源节点的身份信息和第一目标节点的身份信息,通过远程直接存储器访问模块对第一源节点和第一目标节点执行通信动作。
可选的,本申请提供的方法还包括:
对多个节点进行身份信息分配,其中,多个节点包括第一源节点和第一目标节点;
根据多个节点的身份信息分配顺序对多个节点进行统一内存地址编辑。
可选的,本申请提供的方法还包括:
对多个节点执行集群动态分配动作,获取对应的身份信息。
可选的,本申请提供的方法还包括:
构建多个节点的申请描述表,其中,申请描述表中携带多个节点之间的申请描述符;
根据先入先出原则从申请描述表中获取第一源节点和第一目标节点之间的申请描述符。
可选的,本申请提供的方法还包括:
对第一源节点的内存地址进行地址解析,获取第一源节点的本地地址和第一源节点的身份信息;
对第一目标节点的内存地址进行地址解析,获取第一目标节点的本地地址和第一目标节点的身份信息。
可选的,本申请提供的方法还包括:
生成多个节点的内存地址与对应本地地址的映射和反映射。
可选的,本申请提供的方法还包括:
根据第一源节点的身份信息获取第一源节点的互联网协议地址信息;
根据第一目标节点的身份信息获取第一目标节点的互联网协议地址信息;
根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过远程直接存储器访问模块中预先设置的协议对第一源节点和第一目标节点执行通信动作。
可选的,本申请提供的方法还包括:
生成多个节点身份信息和对应互联网协议地址信息的映射。
可选的,本申请提供的方法还包括:
根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过远程直接存储器访问模块中预先设置的协议对第一源节点和第一目标节点执行零拷贝动作。
可选的,本申请提供的方法还包括:
根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过远程直接存储器访问模块中预先设置的传输控制协议对第一源节点和第一目标节点执行内存读写动作。
可选的,本申请提供的方法还包括:
根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过远程直接存储器访问模块中预先设置的用户数据报协议对第一源节点和第一目标节点执行内存读写动作。
可选的,本申请提供的方法还包括:
根据拷贝类型调用预先设置在远程直接存储器访问模块中的通信模式;
根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过通信模式对第一源节点和第一目标节点执行通信动作。
可选的,本申请提供的方法还包括:
根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过远程通信模式对第一源节点和第一目标节点执行通信动作。
可选的,本申请提供的方法还包括:
根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过本地通信模式对第一源节点和第一目标节点执行通信动作。
可选的,本申请提供的方法还包括:
对第一源节点和第一目标节点执行读取同步处理。
可选的,本申请提供的方法还包括:
对第一源节点和第一目标节点执行写入同步处理。
可选的,本申请提供的方法还包括:
根据读取同步处理的结果和写入同步处理的结果生成通信完成信号;
当获取通信完成信号后,获取第二源节点和第二目标节点之间的申请描述符。
第二方面,本申请还提供一种装置,应用于一种Kubernetes集群管理系统中,包括:
现场可编程门阵列列表获取模块,用于获取现场可编程门阵列的列表;
节点虚拟化模块,用于根据现场可编程门阵列的列表将现场可编程门阵列虚拟化得到第一源节点和第一目标节点;
第一申请描述获取模块,用于获取第一源节点和第一目标节点之间的申请描述符,其中,所述申请描述符包括所述第一源节点的内存地址和所述第一目标节点的内存地址,第一源节点和第一目标节点为通用计算图形处理单元节点;
身份信息获取模块,用于根据所述第一源节点的内存地址获取所述第一源节点的身份信息,所述第一目标节点的内存地址获取所述第一目标节点的身份信息;
通信动作模块,用于根据所述第一源节点的身份信息和所述第一目标节点的身份信息,通过远程直接存储器访问模块对所述第一源节点和所述第一目标节点执行通信动作。
第三方面,本申请还提供了一种电子设备,该电子设备包括处理器和存储器,存储器存储可在处理器上运行的程序或指令,程序或指令被处理器执行时实现如第一方面的节点间通信方法的步骤。
第四方面,本申请实施例提供了一种非易失性可读存储介质,可读存储介质上存储程序或指令,程序或指令被处理器执行时实现如第一方面的节点间通信方法的步骤。
本申请提供的节点间通信方法中,节点间通信方法通过携带第一源节点的内存信息和第一目标节点的内存信息确定第一源节点的身份信息和第一目标节点的身份信息,根据第一源节点的身份信息和第一目标节点的身份信息,通过RDMA模块对第一源节点和第一目标节点执行通信动作。由于本申请提供的节点间通信方法依赖RDMA模块执行第一源节点和第一目标节点间的通信动作,不需要CPU参与,避免了CPU被节点间通信长期占用的问题,提高了节点间通信效率。
上述说明仅是本申请提供的技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本申请实施例提供的节点间通信方法示意图之一;
图2是本申请提供的一种节点间通信系统硬件框架示例;
图3是本申请实施例提供的节点间通信方法示意图之二;
图4是本申请实施例提供的节点间通信方法示意图之三;
图5是本申请实施例提供的节点间通信方法示意图之四;
图6是本申请实施例提供的节点间通信方法示意图之五;
图7是本申请实施例提供的节点间通信方法示意图之六;
图8是本申请实施例提供的节点间通信方法示意图之七;
图9是本申请实施例提供的节点间通信方法示意图之八;
图10是本申请实施例提供的节点间通信方法示意图之九;
图11是本申请实施例提供的节点间通信方法示意图之十;
图12是本申请实施例提供的节点间通信方法示意图之十一;
图13是本申请实施例提供的节点间通信方法示意图之十二;
图14是本申请实施例提供的节点间通信方法示意图之十三;
图15是本申请实施例提供的节点间通信方法示意图之十四;
图16是本申请实施例提供的节点间通信方法示意图之十五;
图17是本申请实施例提供的节点间通信方法示意图之十六;
图18是本申请实施例提供的节点间通信方法示意图之十七;
图19是本申请实施例提供的节点间通信方法分布式集群搭建示意之一;
图20是本申请实施例提供的节点间通信方法分布式集群搭建示意之二;
图21是本申请实施例提供的节点间通信装置示意图;
图22是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的节点间通信方法进行详细地说明。
本申请的第一实施方式涉及一种节点间通信方法,应用于一种Kubernetes集群管理系统中,如图1所示,包括:
步骤113、获取现场可编程门阵列的列表;
步骤114、根据所述现场可编程门阵列的列表将所述现场可编程门阵列虚拟化得到第一源节点和第一目标节点,其中,第一源节点和第一目标节点为通用计算图形处理单元节点;
步骤101、获取第一源节点和第一目标节点之间的申请描述符,其中,申请描述符包括第一源节点的内存地址和第一目标节点的内存地址;
步骤102、根据第一源节点的内存地址获取第一源节点的身份信息,根据第一目标节点的内存地址获取第一目标节点的身份信息;
步骤103、根据第一源节点的身份信息和第一目标节点的身份信息,通过远程直接存储器访问模块对第一源节点和第一目标节点执行通信动作。
具体的,本申请提供的节点间通信方法中需要在现场可编程门阵列(Field-Programmable Gate Array,FPGA)硬件集群中搭建Kubernetes管理系统。首先需要获取FPGA的列表,举例来说,可以扫描集群网络中的主机节点和FPGA设备,并生成主机和网络GPU的分配信息表;随后根据FPGA的列表完成虚拟网络节点的创建,当用户发起VGPU的资源请求时,根据资源请求中VGPU的资源和需要使用数量创建新的VGPU节点。
随后,从存储申请描述符的描述符表中选取第一源节点和第一目标节点之间的申请描述符,其中,第一源节点和第一目标节点之间的申请描述符包括第一源节点的内存地址信息和第一目标节点的内存地址信息。随后,对申请描述符中的第一目标节点的内存地址和第一目标节点的内存地址分别进行地址解析,得到内存地址对应的第一源节点的身份信息和第一目标节点的身份信息。根据第一源节点的身份信息和第一目标节点的身份信息对第一源节点和第一目标节点执行通信动作,从而实现从第一源节点到第一目标节点的信息交互。
需要强调的是,传统的集群管理系统,例如Kubernetes系统中应用RDMA设备时往往通过device plugin插件机制,便于Kubernetes系统识别与使用RDMA设备,当识别RDMA设备后,利用Kubernetes CNI插件复用单个RDMA网卡构建出完整的容器网络。而本申请涉及的第一源节点和第一目标节点均为通用计算图形处理单元节点(General PurposeComputing on GPU,GPGPU),相比现有在服务器上插入GPU和RDMA网卡的形式,本申请提供的GPGPU独立于服务器之外。采用这种设计,本申请不需要利用现有的device plugin插件机制识别RDMA设备,避免了CPU的参与,节省了大量服务器资源。在此基础上,本申请提供的基于GPGPU节点的RDMA通信机制,例如基于GPGPU统一编址的RDMA通信机制,实现支持网络GPGPU虚拟化的RDMA高速通信。
在上述实施方式的基础上,本申请还提供一种应用本申请节点间通信方法的通信系统实施例。
本申请提供一种基于现场可编程门阵列(Field-Programmable Gate Array,FPGA)的节点间通信系统,系统的硬件框架如图2所示,多个加速模块(Accelerator)之间可以通过以太网(Ethernet)进行数据交互,以加速模块1(Accelerator1)为例,FPGA包括图形处理器或GPU、RDMA模块和直接存储器访问(Direct Memory Access,DMA)引擎(Engine)模块,双倍速率内存(Double Data Rate,DDR)与FPGA进行交互的具体动作为:首先GPU将数据读取或写入整体存储器(globel memory)中;随后GPU将信息,如申请描述符写入申请描述表,如DMA表(DMA table);之后DMA引擎模块激发(trigger)RDMA模块工作,最后RDMA模块读取或写入本地的双倍速率内存,完成信息传递动作,多个加速模块(AcceleratorN)与加速模块1类似,本申请不再赘述。
具体的,本申请提供的节点间通信系统包括:RDMA模块、DMA引擎模块和节点模块,而DMA引擎模块中包括用于根据内存地址获取身份信息的地址解析模块。
本申请提供的节点间通信方法应用于一种分布式集群中,用于实现分布式集群中多个容器之间的节点通信功能。在进行节点间通信前,容器的节点上层应用调用节点通信请求,并将应用层保持阻塞状态。
当节点为多个GPU,本申请还提供一种节点通信请求示例:容器中的VGPU上层应用调用GPU_remote_memcopy远程通信接口,此时触发RDMA模块的通信动作。举例来说,GPU_remote_memcopy函数声明如下:
/*param 1:源GPU内存地址,统一内存地址
param 2:目的GPU内存地址,统一内存地址
param 3:拷贝长度 */
int GPU_remote_memcopy(void* src,void* dst,u32t length)。
DMA引擎模块用于从存储申请描述符的描述符表中选取第一源节点和第一目标节点之间的申请描述符,其中,第一源节点和第一目标节点之间的申请描述符包括第一源节点的内存地址信息和第一目标节点的内存地址信息。随后,DMA引擎模块中的地址解析模块对申请描述符中的第一目标节点的内存地址和第一目标节点的内存地址分别进行地址解析,得到内存地址对应的第一源节点的身份信息和第一目标节点的身份信息。RDMA模块根据第一源节点的身份信息和第一目标节点的身份信息对第一源节点和第一目标节点执行通信动作,从而实现从第一源节点到第一目标节点的信息交互。
而在第一源节点和第一目标节点之间的通信动作完成后,应用层结束阻塞状态,并根据第一目标节点获取的数据进行后续处理。
本申请提供的节点间通信方法中,节点间通信方法通过携带第一源节点的内存信息和第一目标节点的内存信息确定第一源节点的身份信息和第一目标节点的身份信息,根据第一源节点的身份信息和第一目标节点的身份信息,通过RDMA模块对第一源节点和第一目标节点执行通信动作。由于本申请提供的节点间通信方法依赖RDMA模块执行第一源节点和第一目标节点间的通信动作,不需要CPU参与,避免了CPU被节点间通信长期占用的问题,提高了节点间通信效率。
此外,本申请提供的节点间通信方法中,容器之前的数据传输只需要进行一次数据拷贝,有效提升了节点间通信的通信效率。
在上述实施方式的基础上,如图3所示,本申请提供的节点间通信方法中,在步骤101之前,还包括:
步骤104、对多个节点进行身份信息分配,其中,多个节点包括第一源节点和第一目标节点;
步骤105、根据多个节点的身份信息分配顺序对多个节点进行统一内存地址编辑。
具体的,本申请提供的节点间通信方法可以应用但不限于一种基于节点集群的全局内存管理中。在进行多个节点之间的通信前,本申请提供的节点间通信方法还对这些节点进行内存地址编辑。首先,为集群中这些节点进行身份信息(Identity document,ID)分配,为每一个节点分配一个唯一的物理ID,在分配完所有节点的物理ID后,根据ID顺序对这些节点进行统一内存地址的编辑,编辑示例如表1所示:
表1 节点和物理内存编址信息表
ID 0 1 2 ... n
内存地址 0-4G 4-8G 8-16G ... ...
在上述实施方式的基础上,由于本申请提供的节点间通信方法预先对多个节点进行了身份信息分配,当执行第一源节点和第一目标节点之间的通信动作时,用户不需要在意第一源节点和第一目标节点,如GPGPU的拓扑结构和ID信息,只需要考虑内存拷贝的第一源节点的地址和第一目标节点的地址,提高远程内存操作的透明度,便于用户监控节点通信动作的执行情况。
在上述实施方式的基础上,如图4所示,多个节点位于集群中,步骤104包括:
步骤141、对多个节点执行集群动态分配动作,获取对应的身份信息。
具体的,本申请提供的多个节点位于集群中,多个节点的物理ID通过集群动态分配得到,物理ID随着集群的扩容与缩容而变化。
在上述实施方式的基础上,由于本申请提供的节点间通信方法中多个节点的身份信息是集群动态分配的。用户不需要监控进行通信交互的节点具体是哪一个,根据实时的同一内存地址就能判断,操作透明,不用修改源码即可确定转换操作。
在上述实施方式的基础上,如图5所示,本申请提供的节点间通信方法中,步骤101包括:
步骤111、构建多个节点的申请描述表,其中,申请描述表中携带多个节点之间的申请描述符;
步骤112、根据先入先出原则从申请描述表中获取第一源节点和第一目标节点之间的申请描述符。
具体的,本申请提供的节点间通信方法中RDMA模块被多个容器中的节点共享,需要完成多次节点间通信,因此需要对RDMA模块进行调度,例如采用队列的方式,排队申请,先请求的节点间通信动作先执行。
因此,首先构建一张满足先入先出队列(First Input First Output,FIFO)的申请描述表,申请描述表中的每一个条目都是一个多个节点之间的申请描述符,每个申请描述符都携带源节点的内存地址、目标节点的内存地址和拷贝长度。当容器中的VGPU上层应用调用GPU_remote_memcopy远程通信接口后,按照先入先出的原则在申请描述表中调取最早进入的申请描述符,将这个申请描述符的源节点和目标节点分别作为第一源节点和第一目标节点。
在上述实施方式的基础上,由于本申请提供的节点间通信方法将多个申请描述符根据先入先出原则构建申请描述表,当再获取申请描述符时,将新来的申请描述符排在申请描述表中的队尾,确保了先提出申请的通信动作先执行,避免了RDMA同时处理多个不同的通信动作的情况,提高了通信效率,
在上述实施方式的基础上,如图6所示,本申请提供的节点间通信方法中,步骤102包括:
步骤121、对第一源节点的内存地址进行地址解析,获取第一源节点的本地地址和第一源节点的身份信息;
步骤122、对第一目标节点的内存地址进行地址解析,获取第一目标节点的本地地址和第一目标节点的身份信息。
具体的,DMA引擎模块将第一源节点和第一目标节点的内存地址进行地址解析,分别获取第一源节点和第一目标节点的本地地址和身份信息,用于供RDMA模块根据第一源节点的身份信息和第一目标节点的身份信息确定第一源节点和第一目标节点的身份信息地址和硬件地址。
在上述实施方式的基础上,由于本申请提供的节点间通信方法能够根据内存地址解析得到第一源节点的身份信息和第一目标节点的身份信息,便于RDMA模块根据第一源节点和第一目标节点的身份信息获取第一源节点和第一目标节点的IP地址信息,将地址解析动作分配给RDMA模块之外的DMA引擎模块实现,降低了RDMA模块的工作量,提升了RDMA模块的工作效率,进而提升了节点间通信方法的通信效率。
在上述实施方式的基础上,如图7所示,本申请提供的节点间通信方法中,在步骤121之前,还包括:
步骤123、生成多个节点的内存地址与对应本地地址的映射和反映射。
具体的,DMA引擎模块中的地址解析模预先存储了集群中多个节点的内存地址和本地地址的映射和反映射。当DMA引擎模块中的地址解析模块对第一源节点和第一目标节点进行地址解析时,能够根据申请描述符中需要本地通信还是需要远程通信的描述信息进行本地地址和内存地址,例如统一内存地址之间的转换,以满足申请描述符中的通信需求。此外,还可以为上层应用提供本地地址和同一内存地址的转换应用程序接口(ApplicationProgram Interface,API),供用户根据需求进行转换。
在上述实施方式的基础上,由于本申请提供的节点间通信方法中预先设置有多个节点的内存地址与对应本地地址的映射,能够根据用户需求,根据内存地址快速获取对应的本地地址,从而满足用户远程通信或者本地通信的不同需求。
在上述实施方式的基础上,如图8所示,本申请提供的节点间通信方法中,步骤103包括:
步骤131、根据第一源节点的身份信息获取第一源节点的互联网协议地址信息;
步骤132、根据第一目标节点的身份信息获取第一目标节点的互联网协议地址信息;
步骤133、根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过远程直接存储器访问模块中预先设置的协议对第一源节点和第一目标节点执行通信动作。
具体的,DMA引擎模块中的地址解析模块完成根据内存地址获取第一源节点的身份信息和第一目标节点的身份信息后,RDMA模块根据第一源节点的身份信息获取第一源节点的互联网协议(Internet Protocol,IP)地址信息和硬件地址信息,根据第一目标节点的身份信息获取第一目标节点的IP地址信息和硬件地址信息。随后RDMA模块通过预先设置的协议对远端节点进行内存读取动作,实现对第一源节点和第一目标节点的通信动作。
在上述实施方式的基础上,由于本申请提供的节点间通信方法能够根据第一源节点和第一目标节点的IP地址信息,通过RDMA模块中预先设置的协议执行通信动作,保障了RDMA能够顺利完成不同节点中的通信动作,排除了CPU对节点间通信的限制。
在上述实施方式的基础上,如图9所示,本申请提供的节点间通信方法中,步骤131之前,还包括:
步骤134、生成多个节点身份信息和对应互联网协议地址信息的映射。
具体的,RDMA模块内部预先存储有集群中多个节点身份信息和互联网协议信息的映射,例如IP-ID表,当进行第一源节点和第一目标节点间通信时,便于RDMA模块通过IP-ID表查询得到第一源节点和第一目标节点的IP地址信息和硬件地址信息。
在上述实施方式的基础上,由于本申请提供的节点间通信方法中预先设置有多个节点的身份信息与对应的IP地址信息的映射,当进行节点间通信时,RDMA模块能够根据预先设置的映射快速获取身份信息对应的互联网协议信息,提高了节点间通信方法的通信效率。
在上述实施方式的基础上,如图10所示,远程直接存储器访问模块与通用计算图形处理单元节点对应的图形处理单元(Graphics Processing Unit,GPU)共享内存,本申请提供的节点间通信方法中,步骤133包括:
步骤135、根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过远程直接存储器访问模块中预先设置的协议对第一源节点和第一目标节点执行零拷贝动作。
具体的,在本实施方式中,RDMA模块和GPU共享内存,当RDMA模块获取第一源节点的IP地址信息和第一目标节点的IP地址信息后,可以直接访问第一源节点和第一目标节点对应的GPU内存,实现零拷贝。
在上述实施方式的基础上,由于本申请提供的节点间通信方法中RDMA模块与GPU共享内存,RDMA模块能够直接访问GPU内存,实现了零拷贝,缩短了信息交互步骤,提高了节点间通信效率。
在上述实施方式的基础上,如图11所示,预先设置的协议包括传输控制协议,本申请提供的节点间通信方法中,步骤135包括:
步骤136、根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过远程直接存储器访问模块中预先设置的传输控制协议对第一源节点和第一目标节点执行内存读写动作。
具体的,RDMA模块中预先设置的协议包括传输控制协议(Transmission ControlProtocol,TCP)。当RDMA模块获取第一源节点和第一目标节点的IP地址信息后,通过TCP协议读写第一源节点和第一目标节点对应的GPU内存,实现第一源节点和第一目标节点之间的内存读写动作。
在上述实施方式的基础上,由于本申请提供的协议包括TCP协议,提供了一种具体能够实现本申请的通信方式示例,提高了本申请提供的节点间通信方法的泛用性。
在上述实施方式的基础上,如图12所示,预先设置的协议包括用户数据报协议,本申请提供的节点间通信方法中,步骤135还包括:
步骤137、根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过远程直接存储器访问模块中预先设置的用户数据报协议对第一源节点和第一目标节点执行内存读写动作。
具体的,RDMA模块中预先设置的协议包括传输控制协议(User DatagramProtocol,UDP)。当RDMA模块获取第一源节点和第一目标节点的IP地址信息后,通过UDP协议读写第一源节点和第一目标节点对应的GPU内存,实现第一源节点和第一目标节点之间的内存读写动作
在上述实施方式的基础上,由于本申请提供的协议还包括UDP协议,提供了一种具体能够实现本申请的通信方式示例,多个不同协议均能适用,进一步提高了本申请提供的节点间通信方法的泛用性。
在上述实施方式的基础上,如图13所示,申请描述符还包括拷贝类型,本申请提供的节点间通信方法中,步骤133还包括:
步骤138、根据拷贝类型调用预先设置在远程直接存储器访问模块中的通信模式;
步骤139、根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过通信模式对第一源节点和第一目标节点执行通信动作。
具体的,本申请提供的节点间通信方法中申请描述符不仅携带第一源节点的内存地址、第一目标节点的内存地址和拷贝长度,还携带拷贝类型信息。本申请提供的节点间通信方法,能过根据拷贝类型调用预先设置在RDMA模块中对应的通信模式,并执行相应的节点间通信动作。
在上述实施方式的基础上,由于本申请提供的节点间通信方法中申请描述符中还携带拷贝类型,RDMA模块中预先设有对应的通信模式,能够根据用户需求和通信需求启动不同的通信模式,扩展了本申请的使用范围。
在上述实施方式的基础上,如图14所示,拷贝类型包括远程拷贝,通信模式包括远程通信模式,本申请提供的节点间通信方法中,步骤139包括:
步骤140、根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过远程通信模式对第一源节点和第一目标节点执行通信动作。
具体的,拷贝类型包括但不限于远程拷贝,RDMA模块中预先设置有远程通信模式。当申请描述符中的拷贝类型为远程拷贝时,此时申请描述符中的第一源节点的内存地址和第一目标节点的内存地址为统一内存地址,调用RDMA模块的远程通信模式进行通信。
在上述实施方式的基础上,由于本申请提供的RDMA模块设有远程通信模式,本申请提供的节点间通信方法能够实现不同节点间的远程通信,扩展了本申请的使用范围。
在上述实施方式的基础上,如图15所示,拷贝类型还包括本地拷贝,通信模式还包括本地通信模式,本申请提供的节点间通信方法中,步骤139还包括:
步骤142、根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过本地通信模式对第一源节点和第一目标节点执行通信动作。
具体的,拷贝类型还包括但不限于本地拷贝,RDMA模块中预先设置有本地通信模式。当申请描述符中的拷贝类型为本地拷贝时,此时申请描述符中的第一源节点的内存地址和第一目标节点的内存地址为本地内存地址,调用RDMA模块的本地通信模式进行通信。
需要强调的是,本申请提供的节点间通信方法可以根据申请描述符携带的拷贝类型只进行远程通信,可以根据申请描述符携带的拷贝类型只进行本地通信,还可以根据申请描述符携带的拷贝类型进行远程通信和本地通信,其中远程通信和本地通信的先后顺序根据申请描述符获取的先后顺序依次执行,本申请不对其进行限制。
在上述实施方式的基础上,由于本申请提供的RDMA模块设有本地通信模式,本申请提供的节点间通信方法能够实现不同节点间的本地通信,进一步扩展了本申请的使用范围。
在上述实施方式的基础上,如图16所示,通信动作包括读取动作,本申请提供的节点间通信方法中,步骤103之后还包括:
步骤107、对第一源节点和第一目标节点执行读取同步处理。
具体的,本申请提供的节点间通信方法中通信动作包括读取动作,RDMA模块和GPU共享内存,通过直接访问GPU内存的方式完成第一源节点和第一目标节点相应的GPU的读取通信动作。随后,向第一源节点发送通信完成信号,从而实现读取通信的同步处理效果。
在上述实施方式的基础上,由于本申请提供的节点间通信方法能够在完成第一源节点和第一目标节点的通信后进行读取同步处理,保存了节点读取通信结果,增强了本申请提供的节点间通信方法的可用性。
在上述实施方式的基础上,如图17所示,通信动作还包括写入动作,本申请提供的节点间通信方法中,步骤107之后还包括:
步骤108、对第一源节点和第一目标节点执行写入同步处理。
具体的,本申请提供的节点间通信方法中通信动作包括写入动作,RDMA模块通过直接访问GPU内存的方式完成第一源节点和第一目标节点相应的GPU的写入通信动作。随后,控制第一源节点向第一目标节点发送通信完成信号,从而实现写入通信的同步处理效果。
在上述实施方式的基础上,由于本申请提供的节点间通信方法能够在完成第一源节点和第一目标节点的通信后进行写入同步处理,保存了节点写入通信结果,增强了本申请提供的节点间通信方法的可用性。
在上述实施方式的基础上,如图18所示,本申请提供的节点间通信方法中,步骤108之后还包括:
步骤109、根据读取同步处理的结果和写入同步处理的结果生成通信完成信号;
步骤110、当获取通信完成信号后,获取第二源节点和第二目标节点之间的申请描述符。
具体的,在读取通信动作完成后,第一源节点在收到通信完成信号后向预先设置在第一源节点上的同步寄存器写入1,并向节点间通信系统的驱动发送传输完成请求,用于中断应用层阻塞状态;在写入通信动作完成后,第一目标节点在收到通信完成信号后向预先设置在第一目标节点上的同步寄存器写入1,并向节点间通信系统的驱动发送传输完成请求,用于中断应用层阻塞状态。节点间通信系统的驱动在收到第一源节点或第一目标节点发送的传输完成请求后,将传输完成请求对应的节点的同步寄存器写入0置位,并向DMA引擎模块发送指令,获取第二源节点和第二目标节点之间的申请描述符并执行第二源节点和第二目标节点之间的通信动作。
在上述实施方式的基础上,由于本申请提供的节点间通信方法能够根据通信完成信号继续执行第二源节点和第二目标节点间的通信动作,确保了RDMA模块能过对多个不同节点间的通信请求按照顺序分别执行通信动作,提供了基于容器的一对多的通信能力。具体的,在根据第一申请描述符执行第一源节点和第一目标节点之间的通信动作后,生成通信完成信号,再从根据先进先出原则构建的申请描述表中获取第二申请描述符,再进行第二次通信动作,保障了多个不同用于通行的申请描述符按照顺序进行,不会相互干扰,提高了节点间通信方法的稳定性。
在上述实施方式的基础上,本申请还提供一套完整的节点间通信方法。
首先,主机调用第一源节点和第一目标节点的通信请求,系统生成申请描述符。新生成的申请描述符填入申请描述表的最后一行,进入队列等待DMA引擎模块调用。当DMA引擎模块从队列中取出这个申请描述符后,通过DMA引擎模块中的地址解析模块根据申请描述符,将第一源节点和第一目标节点的统一内存地址转换为第一源节点和第一目标节点的ID信息。RDMA模块通过预先设置的ID-IP表查询获取IP地址信息和硬件地址信息,并通过TCP协议或UDP协议读写远端节点内存。对于读取通信动作,当RDMA模块完后通信后,向第一源节点发送完成信号从而完成同步操作;对于写入通信动作,当RDMA模块完后通信后,控制第一源节点向第一目标节点发送完成信号从而完成同步操作。当第一源节点或第一目标节点接收到完成信号后,在节点对应的同步寄存器中写入1,并向系统的驱动发送传输完成信号。驱动接收到传输完成信号后,在节点对应的同步寄存器汇总写入0并向DMA引擎模块发送信号,DMA引擎模块接收到信号后调用申请描述表中第二源节点和第二目标节点之间的申请描述符,继续进行节点间通信动作。
在上述实施方式的基础上,本申请还提供一个能够实现本申请所述节点间通信方法的分布式集群搭建的具体示例,如图19-20所示:
如图19所示,以FPGA硬件为例,在FPGA内部搭建了多个基于精简指令集原则的开源指令集架构,例如RISC-V处理器,并增加并行调度模块,从而扩展得到众核模式GPU。跟现有的CPU-FPGA主机绑定方式不同的是,本申请采用的FPGA设备是不依赖CPU的网络计算节点,在众核RISC-V增加自定义的RDMA协议模块。
在上述FPGA硬件集群的基础上,搭建了基于开源的应用容器引擎,例如docker和kubernets的管理系统。管理系统包括:集群控制节点(Master Node)、多个集群工作节点(Worker Node)和FPGA集束(cluster),其中集群控制节点包括:kube管理模块(kubeAdmin)、应用程序接口服务器(API Server)、调度程序例如Scheduler、命令行工具例如Kubect工具和非标记语言配置文件例如YAML Config File。集群工作节点包括: VGPU守护模块(VGPU Deamon)、VGPU插件模块(VGPU plugin)、节点代理例如Kubelet代理工具和调度单元(Pod),调度单元中包括容器(Container),容器中包括使用者接口(User Interface)和VGPU。FPGA集束包括多个FPGA。图19仅为本申请提供的节点间通信方法搭载的kubernets管理系统示意,本申请不作限制。
kube管理模块是GPU集群的监控管理模块,部署在集群控制节点,用于进行GPU资源列表查询和调度;
VGPU守护模块是GPU资源虚拟化模块,部署在每个工作节点,用于接收kube管理模块发送的FPGA列表并根据列表将网络中的FPGA虚拟化为GPU本地设备节点;
VGPU插件模块是基于kubernetes的设备插件(device plugin),以deamonsets形式部署在所有kubernetes的工作节点,用于上报本节点的GPU虚拟节点状态。
kube管理模块还用于管理集群中FPGA板卡信息:包括FPGA的ID,FPGA IP地址,FPGA MAC地址,FPGA虚拟化GPU所在的主机信息,VGPU Pod信息等。VGPU守护模块用于创建虚拟GPU节点,并且负责将VGPU节点根据用户需求创建新的VGPU节点。它包括驱动程序和用户态程序,运行在所有工作节点。VGPU插件模块运行在工作节点,通过GRPC服务与Kubelet通信,负责告知Pod中的VGPU节点的状态。VGPU插件模块和Kubelet之间通信过程如图20所示:首先VGPU插件模块在节点代理工具例如Kubelet进行登记(Register);其次Kube控制(Master)模块向Kubelet发出请求;然后Kubelet为VFPU插件模块分配请求(AllocateRequest);再次VGPU插件模块为Kubelet分配响应(Allocate Response);最后Kubelet对应用引擎诸如Docker引擎执行节点创建动作。
具体的,基于docker和kubernets的管理系统可以通过但不限于如下方式实现:
首先是网络GPU集群的搭建步骤:FPGA Admin扫描集群网络中的主机节点和FPGA设备,并生成worker主机和网络GPU的分配信息表。
其次是VGPU deamon的部署步骤:向VGPU Admin发送请求获取FPGA列表,随后根据FPGA列表完成虚拟网络GPU节点的创建。
随后通过deamonset的方式部署VGPU plugin:网络GPU节点所在的 worker主机向kubelet注册GRPC服务,上报网络GPU设备列表,并由kubelet反馈给API server。
当用户发起VGPU资源请求时,在kubernetes的配置文件中的limits字段中声明VGPU资源和需要使用的数量。VGPU的最小单位为risc-v的单个物理核,同时需要申请对应的VGPU内存Vmemory,内存申请最小单位为GPU memory/risc-v cores。Kubernetes 调度(scheduler)模块会遍历所有目标节点,筛选出符合要求的候选worker节点。目标节点的kubelet会从自己本地的GPU列表中选择一个满足申请数量的GPU,然后在驱动层生成虚拟VGPU节点,该节点包含申请的risc-v核数和对应的内存。kubelet就以即将分配给该容器的VGPU节点为参数向本机VGPU plugin发起分派(Allocate)请求。VGPU Plugin 收到分配请求(Allocate Request),以分配响应(Allocate Response) 的形式返还给kubelet。Kubelet根据AllocateResponse创建并初始化包含指定VPGU资源的容器。当分布式集群搭建完成后,能够应用于本申请提供的节点间通信方法中。
本申请的第二实施方式涉及一种节点间通信装置,应用于一种Kubernetes集群管理系统中,如图21所示,包括:
现场可编程门阵列列表获取模块213,用于获取现场可编程门阵列的列表;
节点虚拟化模块214,用于根据现场可编程门阵列的列表将现场可编程门阵列虚拟化得到第一源节点和第一目标节点;
第一申请描述获取模块201,用于获取第一源节点和第一目标节点之间的申请描述符,其中,申请描述符包括第一源节点的内存地址和第一目标节点的内存地址,第一源节点和第一目标节点为通用计算图形处理单元节点;
身份信息获取模块202,用于根据第一源节点的内存地址获取第一源节点的身份信息,根据第一目标节点的内存地址获取第一目标节点的身份信息;
通信动作模块203,用于根据第一源节点的身份信息和第一目标节点的身份信息,通过远程直接存储器访问模块对第一源节点和第一目标节点执行通信动作。
在上述实施方式的基础上,本申请提供的节点间通信装置还包括:
身份信息分配模块204,用于对多个节点进行身份信息分配,其中,多个节点包括第一源节点和第一目标节点;
统一内存地址编辑模块205,用于根据多个节点的身份信息分配顺序对多个节点进行统一内存地址编辑。
上述实施方式的基础上,多个节点位于集群中,本申请提供的身份信息分配模块204包括:
集群动态分配单元241,用于对多个节点执行集群动态分配动作,获取对应的身份信息。
上述实施方式的基础上,本申请提供的第一申请描述获取模块201包括:
申请描述表构建单元211,用于构建多个节点的申请描述表,其中,申请描述表中携带多个节点之间的申请描述符;
申请描述符获取单元212,用于根据先入先出原则从申请描述表中获取第一源节点和第一目标节点之间的申请描述符。
上述实施方式的基础上,本申请提供的身份信息获取模块202包括:
源地址解析单元221,用于对第一源节点的内存地址进行地址解析,获取第一源节点的本地地址和第一源节点的身份信息;
目标地址解析单元222,用于对第一目标节点的内存地址进行地址解析,获取第一目标节点的本地地址和本地地址对应的身份信息。
上述实施方式的基础上,本申请提供的身份信息获取模块202还包括:
第一映射单元223,用于生成多个节点的内存地址与对应本地地址的映射和反映射。
上述实施方式的基础上,本申请提供的通信动作模块203包括:
源互联网协议获取单元231,用于根据第一源节点的身份信息获取第一源节点的互联网协议地址信息;
目标互联网协议获取单元232,用于根据第一目标节点的身份信息获取第一目标节点的互联网协议地址信息;
通信单元233,用于根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过远程直接存储器访问模块中预先设置的协议对第一源节点和第一目标节点执行通信动作。
上述实施方式的基础上,本申请提供的通信动作模块203还包括:
第二映射单元234,用于生成多个节点身份信息和对应互联网协议地址信息的映射。
上述实施方式的基础上,节点为GPU,远程直接存储器访问模块与GPU共享内存,本申请提供的通信单元233包括:
零拷贝子单元235,用于根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过远程直接存储器访问模块中预先设置的协议对第一源节点和第一目标节点执行零拷贝动作。
上述实施方式的基础上,预先设置的协议包括传输控制协议,本申请提供的零拷贝子单元235包括:
第一读写子单元236,用于根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过远程直接存储器访问模块中预先设置的传输控制协议对第一源节点和第一目标节点执行内存读写动作。
上述实施方式的基础上,预先设置的协议包括用户数据报协议,本申请提供的零拷贝子单元235还包括:
第二读写子单元237,用于根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过远程直接存储器访问模块中预先设置的用户数据报协议对第一源节点和第一目标节点执行内存读写动作。
上述实施方式的基础上,本申请提供的通信单元233包括:
通信模式调取子单元238,用于根据拷贝类型调用预先设置在远程直接存储器访问模块中的通信模式;
通信动作执行子单元239,用于根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过通信模式对第一源节点和第一目标节点执行通信动作。
上述实施方式的基础上,拷贝类型包括远程拷贝,通信模式包括远程通信模式,本申请提供的通信动作执行子单元239包括:
远程拷贝子单元240,用于根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过远程通信模式对第一源节点和第一目标节点执行通信动作。
上述实施方式的基础上,拷贝类型还包括本地拷贝,通信模式还包括本地通信模式,本申请提供的通信动作执行子单元239还包括:
本地拷贝子单元242,用于根据第一源节点的互联网协议地址信息和第一目标节点的互联网协议地址信息,通过本地通信模式对第一源节点和第一目标节点执行通信动作。
上述实施方式的基础上,本申请提供的节点间通信装置还包括:
读取同步处理模块207,用于对第一源节点和第一目标节点执行读取同步处理。
上述实施方式的基础上,本申请提供的节点间通信装置还包括:
写入同步处理模块208,用于对第一源节点和第一目标节点执行写入同步处理。
上述实施方式的基础上,本申请提供的节点间通信装置还包括:
通信完成信号模块209,用于根据读取同步处理的结果和写入同步处理的结果生成通信完成信号;
第二申请描述获取模块210,用于当获取通信完成信号后,获取第二源节点和第二目标节点之间的申请描述符。
本申请的第三实施方式涉及一种移动终端,如图22所示,包括:
至少一个处理器161;以及,
与所述至少一个处理器161通信连接的存储器162;其中,
所述存储器162存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器161执行,以使所述至少一个处理器161能够实现本申请第一实施方式所述的节点间通信方法。
其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。
处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
本申请第四实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现本申请第一实施方式所述的节点间通信方法。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (20)

1.一种节点间通信方法,应用于一种Kubernetes集群管理系统中,其特征在于,所述方法包括:
获取现场可编程门阵列的列表,其中,所述现场可编程门阵列包括通用计算图形处理单元、远程直接存储器访问模块和直接内存读取DMA引擎模块;
根据所述现场可编程门阵列的列表将所述现场可编程门阵列虚拟化得到第一源节点和第一目标节点,其中,所述第一源节点和所述第一目标节点为通用计算图形处理单元节点,所述通用计算图形处理单元节点为虚拟节点;
通过所述直接内存读取DMA引擎模块获取第一源节点和第一目标节点之间的申请描述符,其中,所述申请描述符包括所述第一源节点的内存地址和所述第一目标节点的内存地址;
通过所述直接内存读取DMA引擎模块根据所述第一源节点的内存地址获取所述第一源节点的身份信息,根据所述第一目标节点的内存地址获取所述第一目标节点的身份信息;
根据所述第一源节点的身份信息和所述第一目标节点的身份信息,通过所述远程直接存储器访问模块对所述第一源节点和所述第一目标节点执行通信动作。
2.根据权利要求1所述的方法,其特征在于,所述通过所述直接内存读取DMA引擎模块获取第一源节点和第一目标节点之间的申请描述符之前,还包括:
对多个节点进行身份信息分配,其中,所述多个节点包括第一源节点和第一目标节点;
根据所述多个节点的身份信息分配顺序对多个所述节点进行统一内存地址编辑。
3.根据权利要求2所述的方法,其特征在于,所述多个节点位于集群中,所述对多个节点进行身份信息分配包括:
对所述多个节点执行集群动态分配动作,获取对应的身份信息。
4.根据权利要求2所述的方法,其特征在于,所述通过所述直接内存读取DMA引擎模块获取第一源节点和第一目标节点之间的申请描述符包括:
构建所述多个节点的申请描述表,其中,所述申请描述表中携带所述多个节点之间的申请描述符;
根据先入先出原则从所述申请描述表中获取所述第一源节点和第一目标节点之间的申请描述符。
5.根据权利要求1所述的方法,其特征在于,所述通过所述直接内存读取DMA引擎模块根据所述第一源节点的内存地址获取所述第一源节点的身份信息,所述第一目标节点的内存地址获取所述第一目标节点的身份信息包括:
对所述第一源节点的内存地址进行地址解析,获取所述第一源节点的本地地址和所述第一源节点的身份信息;
对所述第一目标节点的内存地址进行地址解析,获取所述第一目标节点的本地地址和所述第一目标节点的身份信息。
6.根据权利要求5所述的方法,其特征在于,所述对所述第一源节点的内存地址进行地址解析,获取所述第一源节点的本地地址和所述第一源节点的身份信息之前,还包括:
生成多个节点的内存地址与对应本地地址的映射和反映射。
7.根据权利要求1所述的方法,其特征在于,所述根据所述第一源节点的身份信息和所述第一目标节点的身份信息,通过远程直接存储器访问模块对所述第一源节点和所述第一目标节点执行通信动作包括:
根据所述第一源节点的身份信息获取所述第一源节点的互联网协议地址信息;
根据所述第一目标节点的身份信息获取所述第一目标节点的互联网协议地址信息;
根据所述第一源节点的互联网协议地址信息和所述第一目标节点的互联网协议地址信息,通过所述远程直接存储器访问模块中预先设置的协议对所述第一源节点和所述第一目标节点执行通信动作。
8.根据权利要求7所述的方法,其特征在于,所述根据所述第一源节点的身份信息获取所述第一源节点的互联网协议地址信息之前,还包括:
生成多个所述节点身份信息和对应互联网协议地址信息的映射。
9.根据权利要求7所述的方法,其特征在于,所述远程直接存储器访问模块与所述通用计算图形处理单元节点对应的图形处理单元共享内存,所述根据所述第一源节点的互联网协议地址信息和所述第一目标节点的互联网协议地址信息,通过所述远程直接存储器访问模块中预先设置的协议对所述第一源节点和所述第一目标节点执行通信动作包括:
根据所述第一源节点的互联网协议地址信息和所述第一目标节点的互联网协议地址信息,通过所述远程直接存储器访问模块中预先设置的协议对所述第一源节点和所述第一目标节点执行零拷贝动作。
10.根据权利要求9所述的方法,其特征在于,所述预先设置的协议包括传输控制协议,所述根据所述第一源节点的互联网协议地址信息和所述第一目标节点的互联网协议地址信息,通过所述远程直接存储器访问模块中预先设置的协议对所述第一源节点和所述第一目标节点执行零拷贝动作包括:
根据所述第一源节点的互联网协议地址信息和所述第一目标节点的互联网协议地址信息,通过所述远程直接存储器访问模块中预先设置的所述传输控制协议对所述第一源节点和所述第一目标节点执行内存读写动作。
11.根据权利要求9所述的方法,其特征在于,所述预先设置的协议包括用户数据报协议,所述根据所述第一源节点的互联网协议地址信息和所述第一目标节点的互联网协议地址信息,通过所述远程直接存储器访问模块中预先设置的协议对所述第一源节点和所述第一目标节点执行零拷贝动作包括:
根据所述第一源节点的互联网协议地址信息和所述第一目标节点的互联网协议地址信息,通过所述远程直接存储器访问模块中预先设置的所述用户数据报协议对所述第一源节点和所述第一目标节点执行内存读写动作。
12.根据权利要求7所述的方法,其特征在于,所述申请描述符还包括拷贝类型,所述根据所述第一源节点的互联网协议地址信息和所述第一目标节点的互联网协议地址信息,通过所述远程直接存储器访问模块中预先设置的协议对所述第一源节点和所述第一目标节点执行通信动作包括:
根据拷贝类型调用预先设置在所述远程直接存储器访问模块中的通信模式;
根据所述第一源节点的互联网协议地址信息和所述第一目标节点的互联网协议地址信息,通过所述通信模式对所述第一源节点和所述第一目标节点执行通信动作。
13.根据权利要求12所述的方法,其特征在于,所述拷贝类型包括远程拷贝,所述通信模式包括远程通信模式,所述根据所述第一源节点的互联网协议地址信息和所述第一目标节点的互联网协议地址信息,通过所述通信模式对所述第一源节点和所述第一目标节点执行通信动作包括:
根据所述第一源节点的互联网协议地址信息和所述第一目标节点的互联网协议地址信息,通过所述远程通信模式对所述第一源节点和所述第一目标节点执行通信动作。
14.根据权利要求12所述的方法,其特征在于,所述拷贝类型还包括本地拷贝,所述通信模式还包括本地通信模式,所述根据所述第一源节点的互联网协议地址信息和所述第一目标节点的互联网协议地址信息,通过所述通信模式对所述第一源节点和所述第一目标节点执行通信动作包括:
根据所述第一源节点的互联网协议地址信息和所述第一目标节点的互联网协议地址信息,通过所述本地通信模式对所述第一源节点和所述第一目标节点执行通信动作。
15.根据权利要求1所述的方法,其特征在于,所述通信动作包括读取动作,所述根据所述第一源节点的身份信息和所述第一目标节点的身份信息,通过远程直接存储器访问模块对所述第一源节点和所述第一目标节点执行通信动作之后,还包括:
对所述第一源节点和所述第一目标节点执行读取同步处理。
16.根据权利要求15所述的方法,其特征在于,所述通信动作还包括写入动作,所述根据所述第一源节点的身份信息和所述第一目标节点的身份信息,通过远程直接存储器访问模块对所述第一源节点和所述第一目标节点执行通信动作之后,还包括:
对所述第一源节点和所述第一目标节点执行写入同步处理。
17.根据权利要求16所述的方法,其特征在于,所述对所述第一源节点和所述第一目标节点执行写入同步处理之后,还包括:
根据所述读取同步处理的结果和所述写入同步处理的结果生成通信完成信号;
当获取所述通信完成信号后,获取第二源节点和第二目标节点之间的申请描述符。
18.一种节点间通信装置,其特征在于,应用于一种Kubernetes集群管理系统中,包括:
现场可编程门阵列列表获取模块,用于获取现场可编程门阵列的列表,其中,所述现场可编程门阵列包括通用计算图形处理单元、远程直接存储器访问模块和直接内存读取DMA引擎模块模块;
节点虚拟化模块,用于根据所述现场可编程门阵列的列表将所述现场可编程门阵列虚拟化得到第一源节点和第一目标节点;
第一申请描述获取模块,用于通过所述直接内存读取DMA引擎模块获取第一源节点和第一目标节点之间的申请描述符,其中,所述申请描述符包括所述第一源节点的内存地址和所述第一目标节点的内存地址,第一源节点和第一目标节点为通用计算图形处理单元节点,所述通用计算图形处理单元节点为虚拟节点;
身份信息获取模块,用于通过所述直接内存读取DMA引擎模块根据所述第一源节点的内存地址获取所述第一源节点的身份信息,所述第一目标节点的内存地址获取所述第一目标节点的身份信息;
通信动作模块,用于根据所述第一源节点的身份信息和所述第一目标节点的身份信息,通过远程直接存储器访问模块对所述第一源节点和所述第一目标节点执行通信动作。
19.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1-17任一项所述的节点间通信方法的步骤。
20.一种非易失性可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-17任一项所述的节点间通信方法。
CN202310640711.4A 2023-06-01 2023-06-01 节点间通信方法、装置、电子设备及存储介质 Active CN116383127B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310640711.4A CN116383127B (zh) 2023-06-01 2023-06-01 节点间通信方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310640711.4A CN116383127B (zh) 2023-06-01 2023-06-01 节点间通信方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN116383127A CN116383127A (zh) 2023-07-04
CN116383127B true CN116383127B (zh) 2023-08-18

Family

ID=86971363

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310640711.4A Active CN116383127B (zh) 2023-06-01 2023-06-01 节点间通信方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116383127B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118467453B (zh) * 2024-07-11 2024-09-27 浪潮电子信息产业股份有限公司 一种数据传输方法、装置、设备、介质及计算机程序产品

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150039793A1 (en) * 2012-03-14 2015-02-05 Istituto Nazionale Di Fisica Nucleare Network interface card for a computing node of a parallel computer accelerated by general purpose graphics processing units, and related inter-node communication method
CN110727499A (zh) * 2019-09-18 2020-01-24 平安科技(深圳)有限公司 资源数据获取的方法、装置、计算机设备和存储介质
CN112395040A (zh) * 2019-08-19 2021-02-23 阿里巴巴集团控股有限公司 内存数据传输方法、系统及服务器
CN114445260A (zh) * 2022-01-17 2022-05-06 苏州浪潮智能科技有限公司 基于fpga的分布式gpu通信的方法及装置
CN115037551A (zh) * 2022-06-29 2022-09-09 北京奇艺世纪科技有限公司 连接权限控制方法、装置、电子设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150039793A1 (en) * 2012-03-14 2015-02-05 Istituto Nazionale Di Fisica Nucleare Network interface card for a computing node of a parallel computer accelerated by general purpose graphics processing units, and related inter-node communication method
CN112395040A (zh) * 2019-08-19 2021-02-23 阿里巴巴集团控股有限公司 内存数据传输方法、系统及服务器
CN110727499A (zh) * 2019-09-18 2020-01-24 平安科技(深圳)有限公司 资源数据获取的方法、装置、计算机设备和存储介质
CN114445260A (zh) * 2022-01-17 2022-05-06 苏州浪潮智能科技有限公司 基于fpga的分布式gpu通信的方法及装置
CN115037551A (zh) * 2022-06-29 2022-09-09 北京奇艺世纪科技有限公司 连接权限控制方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN116383127A (zh) 2023-07-04

Similar Documents

Publication Publication Date Title
CN107690622B9 (zh) 实现硬件加速处理的方法、设备和系统
US11861203B2 (en) Method, apparatus and electronic device for cloud service migration
US8161480B2 (en) Performing an allreduce operation using shared memory
JP2016541072A (ja) リソース処理方法、オペレーティング・システム、およびデバイス
CN112416840A (zh) 一种计算资源的远程映射方法、装置、设备及存储介质
JP6498844B2 (ja) コンピュータデバイス及びコンピュータデバイスによりデータを読み取る/書き込むための方法
CN116383127B (zh) 节点间通信方法、装置、电子设备及存储介质
CN116302617A (zh) 共享内存的方法、通信方法、嵌入式系统以及电子设备
WO2022143714A1 (zh) 服务器系统、虚拟机创建方法及装置
WO2018076882A1 (zh) 存储设备的操作方法及物理服务器
CN116886719B (zh) 存储系统的数据处理方法、装置、存储系统、设备及介质
US20180024865A1 (en) Parallel processing apparatus and node-to-node communication method
CN115134281A (zh) 一种网络耗源型组件性能测试优化方法、系统及装置
CN116881191B (zh) 数据处理方法、装置、设备及存储介质
CN109324899B (zh) 基于PCIe池化硬件资源的编址方法、装置及主控节点
CN111580935A (zh) 一种网络通信方法、装置、设备及存储介质
CN219642231U (zh) 一种任务分发装置和基于任务分发装置的多核异构处理器
CN117908772B (zh) 多mb的数据处理方法、装置、设备及介质
WO2023231768A1 (zh) 一种多核处理器及相关核间通信方法
EP4293524A1 (en) Integrated chip and data transfer method
WO2024060228A1 (zh) 获取数据的方法、装置、系统及存储介质
CN117149472B (zh) 通信方法、装置、计算机可读存储介质以及电子设备
RU2638781C2 (ru) Способ организации прямого доступа в память при передаче информации между физическими объектами
CN118708368A (zh) 一种分布式内存计算引擎集群的数据处理方法及装置
JPH0251740A (ja) プロセス割当制御方式

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
GR01 Patent grant
GR01 Patent grant