CN116126549A - 通信方法及相关的通信系统和存储介质 - Google Patents
通信方法及相关的通信系统和存储介质 Download PDFInfo
- Publication number
- CN116126549A CN116126549A CN202111349680.4A CN202111349680A CN116126549A CN 116126549 A CN116126549 A CN 116126549A CN 202111349680 A CN202111349680 A CN 202111349680A CN 116126549 A CN116126549 A CN 116126549A
- Authority
- CN
- China
- Prior art keywords
- module
- gpu
- computing device
- communication channel
- modules
- 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
- 238000000034 method Methods 0.000 title claims abstract description 179
- 238000004891 communication Methods 0.000 title claims abstract description 117
- 230000008569 process Effects 0.000 claims abstract description 126
- 230000004044 response Effects 0.000 claims abstract description 12
- 230000015654 memory Effects 0.000 claims description 45
- 238000012545 processing Methods 0.000 claims description 14
- 230000005540 biological transmission Effects 0.000 claims 1
- 238000012546 transfer Methods 0.000 description 19
- 238000007726 management method Methods 0.000 description 16
- 238000005516 engineering process Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 238000002955 isolation Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- 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/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
-
- 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Small-Scale Networks (AREA)
Abstract
本公开涉及通信方法及相关的通信系统和存储介质。提供一种用于运行至少一个进程的计算系统的通信方法,所述至少一个进程包括多个模块,所述方法包括:获取所述多个模块的属性信息,其中所述多个模块至少包括第一模块和第二模块;响应于要将数据从第一模块传输给第二模块,比较第一模块的属性信息和第二模块的属性信息;以及根据所述比较,为所述第一模块和所述第二模块选择通信通道以便通过所选择的通信通道将所述数据从所述第一模块传输给所述第二模块。
Description
技术领域
本公开涉及通信方法,特别涉及一种机器人操作系统的通信方法及相关的通信系统和存储介质。
背景技术
机器人操作系统(ROS)的进程由多个模块组成,每个模块完成相对独立的功能,模块与模块之间相互通信传递数据。出于性能和隔离方面的考虑,模块有不同的组织形式,如一些模块分布在不同的进程中,一些模块运行在不同的计算设备上,而且有些模块是由中央处理单元(CPU)运行的,有些是由图形处理单元(GPU)运行的。如何在不同模块之间有效传输数据是一个挑战。
发明内容
本公开提供一种用于运行至少一个进程的计算系统的通信方法,以及相关的通信系统和存储介质,该进程包括多个模块,在不同模块之间能够有效传输数据。
本公开一方面提供一种用于运行至少一个进程的计算系统的通信方法,所述至少一个进程包括多个模块,所述方法包括:
获取所述多个模块的属性信息,其中所述多个模块至少包括第一模块和第二模块;
响应于要将数据从第一模块传输给第二模块,比较第一模块的属性信息和第二模块的属性信息;以及
根据所述比较,为所述第一模块和所述第二模块选择通信通道以便通过所选择的通信通道将所述数据从所述第一模块传输给所述第二模块。
本公开另一方面提供一种用于运行至少一个进程的计算系统,所述至少一个进程包括多个模块,所述计算系统包括:
至少一个计算设备,所述至少一个计算设备包括主存储器和运行所述多个模块的多个处理器,
其中,所述处理器包括中央处理单元CPU和图形处理单元GPU,,
所述至少一个计算设备被配置为:
获取所述多个模块的属性信息,其中所述多个模块至少包括第一模块和第二模块;
响应于要将数据从第一模块传输给第二模块,比较第一模块的属性信息和第二模块的属性信息;以及
根据所述比较,为所述第一模块和所述第二模块选择通信通道以便通过所选择的通信通道将所述数据从所述第一模块传输给所述第二模块。
本公开另一方面提供一种计算系统,包括:
处理器,和
存储器,所述存储器存储有程序指令,所述指令在由所述处理器执行时使所述系统执行根据本公开的方法。
本公开另一方面提供一种存储有程序的计算机可读存储介质,所述程序包括程序指令,所述指令在由计算系统的一个或者多个处理器执行时,使所述系统执行根据本公开的方法。
根据本公开的计算系统的通信方法,要将数据在不同模块间传输时,比较这些模块的属性信息,根据比较结果,为模块选择通信通道以便通过所选择的通信通道传输数据。这样可以根据模块的组织形式而差异化的选择通信通道,从而提高模块间通信的效率。
附图说明
附图示例性地示出了实施例并且构成说明书的一部分,与说明书的文字描述一起用于讲解实施例的示例性实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在所有附图中,相同的附图标记指代类似但不一定相同的要素。
图1是根据本申请示例实施例的计算系统的示意图;
图2A-图2C是根据本申请示例实施例的模块间通信通道的示意图;
图3是根据本申请的示例实施例的通信方法的过程的流程图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本公开中,术语“多个”是指两个或两个以上,除非另有说明。在本公开中,术语“和/或”,描述关联对象的关联关系,涵盖所列出的对象中的任何一个以及全部可能的组合方式。字符“/”一般表示前后关联对象是一种“或”的关系。
在本公开中,除非另有说明,否则使用术语“第一”、“第二”等是用于区别类似的对象,而不意图限定其位置关系、时序关系或重要性关系。应该理解这样使用的术语在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的方式实施。
此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、系统、产品或设备固有的其它步骤或单元。
如上所述,机器人操作系统(ROS)的进程由多个模块组成,出于性能和隔离方面的考虑,模块有不同的组织形式,并且计算设备之间存在不同的网络连通形式。传统的机器人操作系统中没有明确地划分出通信通道,并且不会根据模块的组织形式而差异化的选择通信通道。
图1示出了根据本申请示例实施例的计算系统100的框图。计算系统100包括可以作为独立设备操作的单个计算设备,或者被相互连接(例如联网)的多个计算设备,被相互连接的多个计算设备可以提供分布式计算环境。例如,在图1的实施例中,计算系统100包括计算设备101、计算设备102和计算设备103。本领域的技术人员可以理解,虽然图1中示出的计算系统100包括三个计算设备,计算系统100可以包括更多或更少的计算设备,例如,计算系统100可以只包括计算设备101。计算设备101、102和103每个均可以是服务器、个人计算机(PC)、膝上型计算机、平板计算机、个人数字助理(PDA)、蜂窝电话、智能电话或其他任何类似的设备。每个计算设备可以包括一个或多个存储器和一个或多个处理器(或处理单元)。处理器可以包括中央处理单元(CPU)和图形处理单元(GPU)。
如图1所示,计算设备101包括经由总线190相互通信的CPU 110、主存储器140以及GPU 120和130。CPU 110的数目可以是一个或多个。CPU可以被体现为单核或多核处理器、数字信号处理器、微控制器、或其他处理器或处理/控制电路。主存储器112可以被体现为能够执行本文所描述的功能的任何类型的易失性或非易失性存储器或数据存储装置。
本领域的技术人员可以理解,虽然图1中示出计算设备101包括两个GPU,计算设备101可以包括更多或更少的GPU。在一些实施例中,计算设备101可以没有GPU。当计算设备101包括多个GPU时,该多个GPU中的一些或者全部可以通过GPU-GPU链路相互通信。GPU-GPU链路的一个示例是英伟达(Nvidia)的NV链路(NVLink)。例如,在图1的示例中,GPU 120、130通过NV链路123相互通信。GPU可以包括处理器核心的阵列或并行处理器,其中的每一个都可以执行多个并行和并发的线程以处理特定类型的GPU任务。每个GPU还可以包括GPU存储器。例如,如图1所示,GPU 120包括GPU存储器170,GPU 130包括GPU存储器180。需要说明的是,虽然图1中示出GPU存储器位于GPU中,在其他实施例中,GPU存储器可以独立于GPU,并通过数据线与GPU通信。例如,GPU存储器和GPU可以是位于显卡上的不同元件。
计算设备101还可以包括各种输入/输出设备或接口150(诸如触摸屏显示器、音频插孔、语音接口)和网络接口160。在示例实施例中,网络接口160可以包括一个或多个无线电收发器,其被配置成与任何一个或多个标准无线和/或蜂窝协议或接入技术(例如蜂窝系统的第二代(2G)、2.5代、第三代(3G)、第四代(4G)和下一代无线电接入、全球移动通信系统(GSM)、通用分组无线电服务(GPRS)、增强型数据GSM环境(EDGE)、宽带码分多址(WCDMA)、LTE、CDMA2000、WLAN、无线路由器(WR)网格等)一起使用。网络接口160还可以被配置成与各种其他有线和/或无线通信协议(包括TCP/IP、UDP、SIP、SMS、RTP、WAP、CDMA、TDMA、UMTS、UWB、WiFi、WiMax、IEEE802.11x等)一起使用。本质上,网络接口160可以实际上包括或支持任何有线和/或无线通信和数据处理机构,通过该机构,信息/数据可以经由网络105在计算设备101与其他设备(例如计算设备102和103)之间传播。网络105例如可以是有线或者无线网络。
在一些实施例中,计算设备101可以具有远程直接存储器访问(Remote DirectMemory Access,RDMA)功能或者说是支持RDMA。例如,可以在网络接口160中包括模块RDMA161。
计算设备102和103可以具有与上文描述的计算设备101相同或类似的结构。
一个或多个软件程序(例如机器人操作系统(ROS))的指令(也称作处理器可执行指令、计算机可读指令或软件代码)存储在存储设备(图1中未示出)中。在软件程序由计算系统100的单个计算设备(例如计算设备101)执行时,在计算设备101的操作期间,软件程序的指令被加载到计算设备101的存储器(例如主存储器140)中,并由处理器执行。软件程序的指令可以只由CPU 110执行,或者由CPU 110以及一个或多个GPU(例如GPU 120和GPU130)共同执行。在软件程序由计算系统100的多个计算设备(例如计算设备101、计算设备102以及计算设备103,这些计算设备可以提供分布式计算环境)共同执行时,软件程序的指令被加载到计算设备101、计算设备102以及计算设备103的存储器(例如主存储器)中,并由处理器执行。
在计算系统100的计算设备上执行的软件程序可以包括一个或多个进程。图2A-图2C示出了计算系统100的计算设备上运行的多个进行,例如进程11、进程12、进程13、进程14、进程21、进程22、进程31、进程32。每个进程可以包括一个或多个模块。如图2A所示,进程11在计算设备101的CPU 110、GPU 120和GPU 130上运行,并且包括模块111、112、113和114。具体的,进程11的模块111和112在计算设备101的CPU 110上运行,进程11的模块113在计算设备101的GPU 120上运行,进程11的模块114在计算设备101的GPU 130上运行。进程12包括模块121,在计算设备101的CPU 110上运行。进程13包括模块131和132,在计算设备101的GPU 120上运行。进程14包括模块141,在计算设备101的GPU 130上运行。进程21包括模块211,由计算设备102的CPU 210运行。如图2B和图2C所示,进程22包括模块221,由计算设备102的GPU 230运行,进程31包括模块311,由计算设备103的CPU 310运行。进程32包括模块321,由计算设备103的GPU 320运行。
尽管图2A-图2C示出了计算设备101上运行四个进程,计算设备102上运行两个进程,计算设备103上运行两个进程,但是本领域技术人员应当理解,可以在任何时间在计算设备101、102以及103上并行执行任何数量的进程。
一个模块可能会与另一个模块进行通信。如果要通信的两个模块属于相同进程这种通信称为进程内通信。如果要通信的两个模块属于同一计算设备运行的不同进程,这种通信称为单设备进程间通信(interprocess communication,IPC)。如果要通信的两个模块在不同计算设备上运行这种通信称为跨设备通信。
根据本申请实施例,可以设置一个进程为管理节点(也称管理进程),管理节点可以是上文所述的计算系统100上运行的多个进程中的任一进程,也可以是计算系统100上运行的其他任一进程。管理节点在启动时可以加载计算系统中各个计算设备的配置信息。
每个模块加载时,会向管理节点进行注册,将其属性信息、发送主题集合和接收主题集合提供给管理节点。管理节点接收到属性信息、发送主题集合和接收主题集合后,将模块的属性信息、发送主题集合和接收主题集合存入数据库。
模块加载时,还会根据其属性信息来建立通信通道。在一些实施例中,每个模块加载时,会根据其属性信息和其所在计算设备(即运行该模块的计算设备)的配置信息来建立通信通道。
模块的属性信息包括模块所属进程的进程标识符、资源标识符、模块所在计算设备(即运行该模块的计算设备)的设备标识符。进程标识符(符号是Pid)用于区分不同进程。设备标识符(符号是Hid)用于区分不同计算设备,设备标识符的一个示例是计算设备的网络地址或设备名称。资源标识符(符号是Rid),用于标识运行模块所需的计算设备中的计算资源,例如运行该模块的处理器或处理器运行该模块时访问的存储器。资源标识符可以区分不同处理器并指示处理器类型(例如是GPU还是CPU),和/或区分不同存储器并指示存储器类型(例如是GPU存储器还是主存储器)。作为一个示例,图2A中的模块111的资源标识符Rid=CPU,即该模块是在CPU 110上运行的。模块131的资源标识符Rid=GPU1,GPU1是GPU120的代码,数字1表示GPU的序号,即该模块是在计算设备101的第一个GPU(即GPU120)上运行的。模块141的资源标识符Rid=GPU2,GPU2是GPU130的代码,数字2表示GPU的序号,即该模块是在计算设备101的第二个GPU(即GPU130)上运行的。
同时由于模块在处理器上运行时处理器会访问相应的存储器,因此,可以代替或附加使用存储器的代码作为资源标识符。例如模块111的资源标识符Rid=主存储器,即该模块是在CPU 110上运行的,CPU 110运行模块111时会访问主存储器140。模块131的资源标识符Rid=GPUMemory1,Memory1是GPU存储器170的代码,即该模块是在GPU 120上运行的,GPU 120运行模块131时会访问GPU存储器170。模块141的资源标识符Rid=GPUMemory2,Memory2是GPU存储器180的代码,即该模块是在GPU130上运行的,GPU 130运行模块141时会访问GPU存储器180。
计算设备的配置信息,包括:该计算设备的设备标识符;该计算设备包括的处理器类型和/或数目(和/或该计算设备包括的存储器类型和/或数目,特别是GPU和/或GPU存储器的数目);该计算设备的网络配置(例如RDMA配置,用于指示该计算设备是否具有RDMA功能);该计算设备的处理器链路配置(例如GPU-GPU链路配置,用于指示该计算设备是否具有GPU-GPU链路)。
作为一个示例,模块加载时,当根据属性信息中的资源标识符确定处理器运行该模块时会访问主存储器或者该模块是在CPU上运行时,该模块可以建立如下通信通道中的一个或多个:
通道A:CPU进程内通信通道,该通信通道可以利用指针传递技术来传输数据;
通道B:单设备CPU进程间通信通道,该通信通道利用共享主存储器技术来传输数据;
通道C:跨设备套接字(socket)通信通道,该通信通道利用套接字技术在计算设备之间传输数据。
通道D:跨设备RDMA通信通道,该通信通道利用RDMA技术在计算设备之间传输数据(当根据运行该模块的计算设备的配置信息判断该计算设备具有RDMA功能时,建立跨设备RDMA通信通道);
通道E:CPU-GPU通信通道,该通信通道利用GPU中的存储器拷贝功能(例如cudamemcopy函数)来传输数据(当根据运行该模块的计算设备的配置信息判断该计算设备具有GPU时,建立CPU-GPU通信通道)。
作为一个示例,模块加载时,当根据模块的属性信息中的资源标识符确定处理器运行该模块时会访问GPU存储器或者该模块是在GPU上运行时,该模块可以建立如下通信通道中的一个或多个:
通道F:单GPU进程内通信通道,该通信通道利用指针(GPU上的指针)传递技术在单个GPU内传输数据;
通道G:单GPU进程间通信通道,该通信通道利用共享GPU存储器技术在单个GPU内传输数据
通道E:CPU-GPU通信通道,该通信通道利用GPU中的存储器拷贝功能(例如cudamemcopy函数)来传输数据;
通道C:跨设备套接字通信通道,该通信通道利用套接字技术在计算设备之间传输数据;
通道H:跨GPU的通信通道,该通信通道利用GPU间的存储器拷贝方式来传输数据(当根据运行该模块的计算设备的配置信息判断该计算设备不具有GPU-GPU链路时,建立跨GPU的通信通道。在GPU-GPU链路为NV链路的示例中,当根据运行该模块的计算设备的配置信息判断该计算设备不具NV链路链路时,建立跨GPU的通信通道);
通道I:跨GPU的GPU-GPU链路通信通道,该通信通道利用GPU间的GPU-GPU链路传输数据(当根据运行该模块的计算设备的配置信息判断该计算设备具有GPU-GPU链路时,建立跨GPU的GPU-GPU链路通信通道。在GPU-GPU链路为NV链路的示例中,当根据运行该模块的计算设备的配置信息判断该计算设备具有NV链路时,建立跨GPU的NV链路通信通道);
通道D:跨设备RDMA通信通道,该通信通道利用RDMA技术在计算设备之间传输数据(当根据运行该模块的计算设备的配置信息判断该计算设备具有RDMA功能时,建立跨设备RDMA通信通道)。
由上文可知,无论模块是在CPU上运行还是在GPU上运行,该模块都可以建立上述通道中的D、C和E。下面参照图2A-图2C说明上述通道的建立。
参考图2A,模块111和112都属于进程11,在计算设备101的CPU 110上运行。为了与模块111通信,模块112可以建立通道A,即CPU进程内通信通道,利用指针传递技术来传输数据。同样,为了与模块112通信,模块111也可以建立通道A。模块112属于进程11,模块121属于进程12,模块112和模块121都在计算设备101的CPU 110上运行,因此,为了与模块121通信,模块112可以建立通道B,即单设备CPU进程间通信通道,利用共享主存储器技术来传输数据。同样,为了与模块112通信,模块121也可以建立通道B。
模块111属于进程11,在计算设备101的CPU 110上运行,模块211属于进程21在计算设备102的CPU 210上运行,计算设备101具有RDMA功能,但是计算设备102不具有RDMA功能。为了和模块211通信,模块111可以建立通道C,即跨设备套接字(socket)通信通道,利用套接字技术在计算设备之间传输数据。同样,为了和模块111通信,模块211也可以建立通道C。
模块112属于进程11,在计算设备101的CPU 110上运行,模块113也属于进程11,但在计算设备101的GPU 120上运行,因此,为了和模块113通信,模块112可以建立通道E,即CPU-GPU通信通道,利用GPU中的存储器拷贝功能(例如cudamemcopy)来传输数据。同样,为了和模块112通信,模块113也可以建立通道E。
模块113属于进程11,在计算设备101的GPU 120上运行,模块141属于进程14,但在计算设备101的GPU 130上运行,GPU120和GPU 130之间具有NV链路123,因此,为了和模块141通信,模块113可以建立通道I,即跨GPU的NV链路通信通道,利用GPU间的NV链路传输数据。同样,为了和模块113通信,模块141也可以建立通道I。
如果,GPU120和GPU130之间不存在GPU-GPU链路(例如不存在NV链路123),为了和模块141通信,模块113可以建立通道H(如图2A中虚线所示),即跨GPU的通信通道,利用GPU间的存储器拷贝方式来传输数据。同样,为了和模块113通信,模块141也可以建立通道H。
模块113属于进程11,在计算设备101的GPU 120上运行,模块114都属于进程11,在计算设备101的GPU 130上运行,GPU120和GPU 130之间具有NV链路123,因此,为了和模块114通信,模块113可以建立通道I,即跨GPU的NV链路通信通道,利用GPU间的NV链路传输数据。同样,为了和模块113通信,模块114也可以建立通道I。
如果,GPU120和GPU130之间不存在GPU-GPU链路(例如不存在NV链路123),为了和模块114通信,模块113可以建立通道H(如图2A中虚线所示),即跨GPU的通信通道,利用GPU间的存储器拷贝方式来传输数据。同样,为了和模块113通信,模块114也可以建立通道H。
模块113属于进程11,在计算设备101的GPU 120上运行,模块131属于进程13,在计算设备101的GPU 120上运行,因此,为了和模块131通信,模块113可以建立通道G,即单GPU进程间通信通道,利用共享GPU存储器技术来传输数据。同样,为了和模块113通信,模块131也可以建立通道G。
模块131和模块132都属于进程13,在计算设备101的GPU 120上运行,为了和模块132通信,模块131可以建立通道F,即单GPU进程内通信通道,利用指针传递技术来传输数据。同样,为了和模块131通信,模块132也可以建立通道F。
参考图2B,模块111属于进程11,在计算设备101的CPU 110上运行,模块221属于进程22,在计算设备102的GPU 230上运行。图2B中还示出了CPU110中的套接字缓存(socketbuffer)116以及CPU210中的套接字缓存216。如上所述计算设备101具有RDMA功能,但是计算设备102不具有RDMA功能。为了和模块221通信,模块111可以建立通道C。为了和模块111通信,模块221可以建立通道C以及通道E。
模块121属于进程12,在计算设备101的CPU 110上运行,模块311属于进程31,在计算设备103的CPU 310上运行,计算设备101和103都具有RDMA功能,图2B中还示出了模块RDMA161中的RDMA缓存(RDMA buffer)162以及模块RDMA 361中的RDMA缓存362。因此,为了和模块311通信,模块121可以建立通道D,即跨设备RDMA通信通道,利用RDMA在计算设备间传输数据。同样,为了和模块121通信,模块311也可以建立通道D。
模块121属于进程12,在计算设备101的CPU 110上运行,模块321属于进程32,在计算设备103的GPU 320上运行。因此,为了和模块321通信,模块121建立通道D。为了和模块121通信,模块321建立通道D以及通道E。
如图2C所示,模块114属于进程11,在计算设备101的GPU 130上运行,模块211属于进程21,在计算设备102的CPU 210上运行,图2C中还示出了CPU 110中的套接字缓存(socket buffer)116以及CPU 210中的套接字缓存216。如上所述,计算设备101具有RDMA功能,但是计算设备102不具有RDMA功能。为了和模块211通信,模块114可以建立通道C以及通道E。为了和模块114通信,模块211可以建立通道C。
模块114属于进程11,在计算设备101的GPU 130上运行,模块221属于进程22,在计算设备102的GPU 230上运行。因此,为了和模块221通信,模块114可以建立通道C以及通道E。为了和模块114通信,模块221也可以建立通道C以及通道E。
模块141属于进程14,在计算设备101的GPU 130上运行,模块311属于进程31,在计算设备103的CPU 310上运行,计算设备101和103都具有RDMA功能,图2C中还示出了模块RDMA161中的RDMA缓存(RDMA buffer)162以及模块RDMA 361中的RDMA缓存362。为了和模块311通信,模块141可以建立通道D以及通道E。为了和模块141通信,模块311可以建立通道D。
模块141属于进程14,在计算设备101的GPU 130上运行,模块321属于进程32,在计算设备103的GPU 320上运行。为了和模块321通信,模块141建立通道D以及通道E。为了和模块141通信,针对模块321也建立通道D以及通道E。
图3是根据本申请实施例的用于通信系统的通信方法。该通信系统例如是图1所示的通信系统。该通信系统运行有图2A-图2C所示的多个进程中的一个或多个,以及图2-图2C所示的多个模块中的一个或多个。
在一些实施例中,通信系统中运行机器人操作系统(ROS),机器人操作系统可以包括图2所示的各个进程(也称节点)。机器人操作系统中,节点之间传输的数据也称作消息,节点之间通过传送消息进行通信,消息以一种发布/订阅的方式传递,一个或多个节点可以在一个给定的主题(topic)中发布消息,一个或多个节点可以订阅同一个主题。也就是说,ROS中进程(即节点)之间通过主题传递消息数据。
在301,管理节点获取多个模块的属性信息。
如上所述,管理节点在启动时可以加载计算系统中各个计算设备的配置信息。每个模块加载时,将其属性信息、发送主题集合和接收主题集合提供给管理节点。管理节点接收到属性信息、发送主题集合和接收主题集合后,将模块的属性信息、发送主题集合和接收主题集合存入数据库。
在302,管理节点响应于要在模块之间传输数据,比较这些模块的属性信息。例如,如果要将数据从多个模块中的第一模块传输给第二模块,则比较第一模块的属性信息和第二模块的属性信息。
如上所述,机器人操作系统中,节点之间传输的数据也称作消息。当一个模块(即第一模块)的发送主题集合中和另一模块(即第二模块)的接收主题集合都包括相同的主题,确定要在这些模块之间传输数据,即要将数据从第一模块发送给第二模块。本领域的技术人员可以理解,一个模块的发送主题集合可以和多个模块的接收主题集合都包括相同的主题,同样,一个模块的接收主题集合可以和多个模块的发送主题集合都包括相同的主题。
在303,管理节点根据属性信息的比较,为模块选择通信通道以便通过所选择的通信通道传输数据。例如,为上文所述的第一模块和第二模块选择通信通道以便通过所选择的通信通道将数据从第一模块传输给第二模块。
如上文所述,一些通信通道的建立还考虑了计算设备的配置信息,因此,管理节点除了根据属性信息的比较,还根据运行模块的计算设备的配置信息,为模块选择通信通道以便通过所选择的通信通道传输数据。
管理节点会将选择的通信通道通知相关的模块,模块收到管理节点的通知之后,按照通知,使用对应通信通道发送和接收数据。
在一些实施例中,为第一模块和第二模块选择通信通道以便通过所选择的通信通道将数据从第一模块传输给第二模块,包括:
比较第一模块属性信息与第二模块属性信息;
响应于第一模块属性信息中的设备标识符与第二模块属性信息中的设备标识符相同,第一模块属性信息中的资源标识符与第二模块属性信息中的资源标识符相同,但是第一模块属性信息中的进程标识符与第二模块属性信息中的进程标识符不同,为所述第一模块和所述第二模块选择单设备CPU进程间通信通道或单GPU进程间通信通道;或者
响应于第一模块属性信息中的设备标识符与第二模块属性信息中的设备标识符相同,第一模块属性信息中的进程标识符与第二模块属性信息中的进程标识符不同,第一模块属性信息中的资源标识符指示第一模块是在CPU上运行的,第二模块属性信息中的资源标识符指示第二模块是在GPU上运行的,为第一模块选择单设备CPU进程间通信通道,为第二模块选择单设备CPU进程间通信通道以及CPU-GPU通信通道;或者
响应于第一模块属性信息中的设备标识符与第二模块属性信息中的设备标识符相同,第一模块属性信息中的进程标识符与第二模块属性信息中的进程标识符不同,第一模块属性信息中的资源标识符与第二模块属性信息中的资源标识符不同,第一模块属性信息中的资源标识符指示第一模块是在GPU上运行的,第二模块属性信息中的资源标识符指示第二模块也是在GPU上运行的,同时响应于第一模块和与第二模块属性信息中的设备标识符对应的计算设备(即第一模块和与第二模块在该计算设备上运行)的配置信息,指示该计算设备存在GPU-GPU链路,则为第一模块和第二模块选择跨GPU的GPU-GPU链路通信通道,在GPU-GPU链路为NV链路时为第一模块和第二模块选择跨GPU的NV链路通信通道。如果配置信息指示该计算设备不存在GPU-GPU链路,则为第一模块和第二模块选择跨GPU的通信通道。
下面的表1-表3给出了通道选择的更多示例。表1-表3中,模块a属于进程a,在计算设备a上运行,进程a的进程标识符是Pid_a,计算设备a的设备标识符是Hid_a,模块a的资源标识符是Rid_a。模块b属于进程b,在计算设备b上运行,进程b的进程标识符是Pid_b,计算设备b的设备标识符是Hid_b,模块b的资源标识符是Rid_b。需要说明的是,表1-表3中,GPU[n]是计算设备中GPU的代码,数字n表示GPU的序号,即计算设备的第n个GPU,n例如可以是i,j,x,y。例如,Rid_a=GPU[i],表示相应模块是在第i个GPU上运行的。还需要说明的是,为例便于理解,表1-表3中,以GPU-GPU链路为NV链路为例进行说明。
当计算设备a的设备标识符Hid_a与计算设备b的设备标识符Hid_b相等,即Hid_a=Hid_b(这表示计算设备a与计算设备b是同一计算设备),并且进程a的进程标识符Pid_a与进程b的进程标识符Pid_b相等,即Pid_a=Pid_b(这表示进程a与进程b是同一进程)时,按照下述表1为模块a和模块b选择通信通道(即同进程内模块通道选择)。
表1
当计算设备a的设备标识符Hid_a与计算设备b的设备标识符Hid_b相等,即Hid_a=Hid_b(这表示计算设备a与计算设备b是同一计算设备),并且进程a的进程标识符Pid_a与进程b的进程标识符Pid_b不相等,即Pid_a!=Pid_b(这表示进程a与进程b是不同进程)时,按照下述表2为模块a和模块b选择通信通道(即单设备不同进程内模块通道选择)。
表2
当计算设备a的设备标识符Hid_a与计算设备b的设备标识符Hid_b不同,即Hid_a!=Hid_b(这表示计算设备a与计算设备b是不同计算设备)时,按照下述表3为模块a和模块b选择通信通道(即跨设备模块通道选择)。
表3
表3续
本文描述的一些实施例是在方法或过程的一般上下文中所描述的,其在一个实施例中可以由包括在计算机可读介质中的计算机程序产品来实施,该计算机程序产品可以包括计算机可执行指令(如程序代码),计算机可执行指令例如可以由联网环境中的计算机执行。计算机可读介质可以包括可移动和不可移动存储设备,包括但不限于只读存储器(ROM)、随机存取存储器(RAM)、光盘(CD)、数字多功能盘(DVD)等。因此,计算机可读介质可以包括非暂态存储介质。通常,程序模块可以包括例程、程序、对象、部件、数据结构等,其执行特定任务或实施特定抽象数据类型。计算机或处理器可执行指令、相关联的数据结构和程序模块表示用于执行本文所公开的方法的步骤的程序代码的示例。这样的可执行指令或相关联的数据结构的特定序列表示用于实现在这些步骤或过程中描述的功能的对应动作的示例。
所公开的实施例中的一些实施例可以使用硬件电路、软件或其组合来实现为设备或模块。举例来说,硬件电路实施可以包括离散模拟和/或数字部件,其例如可以集成为印刷电路板的部分。备选地或附加地,所公开的部件或模块可以被实施为专用集成电路(ASIC)和/或现场可编程门阵列(FPGA)设备。附加地或备选地,一些实施可以包括数字信号处理器(DSP),其是具有针对与本申请的所公开功能性相关联的数字信号处理的操作需要而优化的架构的专用微处理器。类似地,每个模块内的各种部件或子组件可以用软件、硬件或固件来实施。可以使用本领域已知的任何一种连接方法和介质来提供模块和/或模块内部件之间的连接,包括但不限于通过因特网、有线网络或使用适当协议的无线网络的通信。
虽然已经参照附图描述了本公开的示例性实施例或示例,但应理解,上文的示例性论述并非旨在是穷尽的或将本发明限制为所公开的具体形式。根据以上教导内容,很多修改和变型都是可能的。因此,所公开的主题不应当限于本文所述的任何单个实施例或示例,而应当根据所附权利要求书的广度和范围来解释。
Claims (17)
1.一种用于计算系统的通信方法,所述计算系统具有至少一个进程,所述至少一个进程包括多个模块,所述方法包括:
获取所述多个模块的属性信息,其中所述多个模块至少包括第一模块和第二模块;
响应于要将数据从第一模块传输给第二模块,比较第一模块的属性信息和第二模块的属性信息;以及
根据所述比较,为所述第一模块和所述第二模块选择通信通道以便通过所选择的通信通道将所述数据从所述第一模块传输给所述第二模块。
2.如权利要求1所述的方法,还包括:
获取所述多个模块中每个模块的发送主题集合和接收主题集合。
3.如权利要求2所述的方法,还包括:
响应于所述第一模块的发送主题集合和所述第二模块的接收主题集合包括相同的主题,确定要将数据从所述第一模块传输给所述第二模块。
4.如权利要求1所述的方法,其中至少一个进程是机器人操作系统中的进程。
5.如权利要求1所述的方法,其中,所述计算系统包括至少一个计算设备,所述计算设备包括运行所述多个模块的多个处理器,所述处理器包括中央处理单元CPU和图形处理单元GPU。
6.如权利要求5所述的方法,其中,所述计算设备还包括主存储器,所述GPU包括GPU存储器。
7.如权利要求5所述的方法,还包括:
获取所述至少一个计算设备中每个计算设备的配置信息,所述配置信息包括下述至少一项:
该计算设备包括的处理器类型和数目;
该计算设备的网络配置;
该计算设备的处理器链路配置。
8.如权利要求7所述的方法,其中,根据所述比较,为所述第一模块和所述第二模块选择通信通道包括:
根据所述比较,并依据所述配置信息,为所述第一模块和所述第二模块选择通信通道。
9.如权利要求5所述的方法,其中由所述CPU运行所述第一模块,为所述第一模块所选择的通信通道包括以下至少一个:
CPU进程内通信通道;
单设备CPU进程间通信通道;
跨设备套接字通信通道;
跨设备RDMA通信通道;
CPU-GPU通信通道。
10.如权利要求5所述的方法,其中由所述GPU运行所述第一模块,为所述第一模块所选择的通信通道包括以下至少一个:
单GPU进程内通信通道;
单GPU进程间通信通道;
跨设备套接字通信通道;
跨设备RDMA通信通道;
跨GPU的通信通道;
CPU-GPU通信通道
跨GPU的GPU-GPU链路通信通道。
11.如权利要求5所述的方法,其中,每个模块的属性信息包括下述至少一项:
该模块所属进程的进程标识符;
用于标识运行该模块所需的计算资源的资源标识符;以及
运行该模块的计算设备的设备标识符。
12.如权利要求1所述的方法,其中,所述至少一个进程包括管理进程,所述方法由所述管理进程执行。
13.一种用于运行至少一个进程的计算系统,所述至少一个进程包括多个模块,所述计算系统包括:
至少一个计算设备,所述至少一个计算设备包括主存储器和运行所述多个模块的多个处理器,
其中所述处理器包括中央处理单元CPU和图形处理单元GPU,
所述至少一个计算设备被配置为:
获取所述多个模块的属性信息,其中所述多个模块至少包括第一模块和第二模块;
响应于要将数据从第一模块传输给第二模块,比较第一模块的属性信息和第二模块的属性信息;以及
根据所述比较,为所述第一模块和所述第二模块选择通信通道以便通过所选择的通信通道将所述数据从所述第一模块传输给所述第二模块。
14.如权利要求13所述的计算系统,所述至少一个计算设备还被配置为:
响应于所述第一模块的发送主题集合和所述第二模块的接收主题集合包括相同的主题,确定要将数据从所述第一模块传输给所述第二模块。
15.如权利要求13所述的计算系统,其中,每个模块的属性信息包括下述至少一项:
该模块所属进程的进程标识符;
用于标识运行该模块所需的计算资源的资源标识符;以及
运行该模块的计算设备的设备标识符。
16.一种计算系统,包括:
处理器,和
存储器,所述存储器存储有程序指令,所述指令在由所述处理器执行时使所述系统执行根据权利要求1至12中任一项所述的方法。
17.一种存储有程序的计算机可读存储介质,所述程序包括程序指令,所述指令在由计算系统的一个或者多个处理器执行时,使所述系统执行根据权利要求1-12中任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111349680.4A CN116126549A (zh) | 2021-11-15 | 2021-11-15 | 通信方法及相关的通信系统和存储介质 |
AU2022263583A AU2022263583A1 (en) | 2021-11-15 | 2022-11-04 | Communication method, related computing system and storage medium |
US17/986,731 US20230153254A1 (en) | 2021-11-15 | 2022-11-14 | Communication method, related computing system and storage medium |
JP2022181598A JP2023073227A (ja) | 2021-11-15 | 2022-11-14 | 通信方法及び関連するコンピューティングシステムと記憶媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111349680.4A CN116126549A (zh) | 2021-11-15 | 2021-11-15 | 通信方法及相关的通信系统和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116126549A true CN116126549A (zh) | 2023-05-16 |
Family
ID=86310549
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111349680.4A Pending CN116126549A (zh) | 2021-11-15 | 2021-11-15 | 通信方法及相关的通信系统和存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230153254A1 (zh) |
JP (1) | JP2023073227A (zh) |
CN (1) | CN116126549A (zh) |
AU (1) | AU2022263583A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102469035B (zh) * | 2010-11-05 | 2016-01-20 | 腾讯科技(深圳)有限公司 | 跨进程通信的方法和装置 |
CN103810124A (zh) * | 2012-11-09 | 2014-05-21 | 辉达公司 | 用于数据传输的系统及方法 |
US11093161B1 (en) * | 2020-06-01 | 2021-08-17 | EMC IP Holding Company LLC | Storage system with module affinity link selection for synchronous replication of logical storage volumes |
GB2586913B (en) * | 2020-06-05 | 2021-11-10 | Iotech Systems Ltd | Data processing |
-
2021
- 2021-11-15 CN CN202111349680.4A patent/CN116126549A/zh active Pending
-
2022
- 2022-11-04 AU AU2022263583A patent/AU2022263583A1/en active Pending
- 2022-11-14 JP JP2022181598A patent/JP2023073227A/ja active Pending
- 2022-11-14 US US17/986,731 patent/US20230153254A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230153254A1 (en) | 2023-05-18 |
AU2022263583A1 (en) | 2023-06-01 |
JP2023073227A (ja) | 2023-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11611863B2 (en) | Method and apparatus for low energy discovery | |
US20180285053A1 (en) | Screenshot method and apparatus | |
US20150347305A1 (en) | Method and apparatus for outputting log information | |
CN112565443A (zh) | 物联网数据解析方法、装置、设备及存储介质 | |
CN112261094B (zh) | 一种报文处理方法及代理服务器 | |
CN109542758B (zh) | 应用程序容错能力测试方法、装置、计算机可读存储介质 | |
US20230300030A1 (en) | K8s-based service deployment method and apparatus, device, and medium | |
EP3091712B1 (en) | Smart device for realizing multiple-device collaboration and working method for multiple-device collaboration | |
CN113709200A (zh) | 一种建立通信连接的方法及装置 | |
CN111190854A (zh) | 通信数据处理方法、装置、设备、系统和存储介质 | |
EP3962030A1 (en) | Communication method and related device | |
CN116126549A (zh) | 通信方法及相关的通信系统和存储介质 | |
US20230098159A1 (en) | Network migration method, network migration apparatus, communication device, and communication system | |
CN115580667A (zh) | 数据传输方法、装置、设备及存储介质 | |
US20140056309A1 (en) | Method and apparatus for frame transfer using virtual buffer | |
CN114449113A (zh) | 数据拨号方法、装置、计算机设备和计算机可读存储介质 | |
CN113961194A (zh) | 基于Flutter跨应用的工程构建方法、系统、终端及介质 | |
CN114595080A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
Shiraz et al. | A distributed and elastic application processing model for mobile cloud computing | |
CN111314272B (zh) | 一种任务处理方法及装置 | |
CN111416852A (zh) | 在多个负载均衡器之间进行会话同步的方法和负载均衡器 | |
WO2024027681A1 (zh) | Ue能力控制方法、装置、终端及网络侧设备 | |
US10158704B2 (en) | Method and system for clustering distributed objects to use them as if they were one object | |
CN115314376B (zh) | 集群中网络插件部署方法和装置、电子设备和存储介质 | |
WO2023246756A1 (zh) | 算力服务方法、装置、终端及核心网设备 |
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 |