CN114567520B - 实现集合通信的方法、计算机设备和通信*** - Google Patents
实现集合通信的方法、计算机设备和通信*** Download PDFInfo
- Publication number
- CN114567520B CN114567520B CN202011600044.XA CN202011600044A CN114567520B CN 114567520 B CN114567520 B CN 114567520B CN 202011600044 A CN202011600044 A CN 202011600044A CN 114567520 B CN114567520 B CN 114567520B
- Authority
- CN
- China
- Prior art keywords
- communication
- work request
- request
- work
- computer 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.)
- Active
Links
- 238000004891 communication Methods 0.000 title claims abstract description 485
- 238000000034 method Methods 0.000 title claims abstract description 294
- 230000008569 process Effects 0.000 claims description 204
- 230000005540 biological transmission Effects 0.000 claims description 27
- 230000001419 dependent effect Effects 0.000 claims description 15
- 238000012546 transfer Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 14
- 238000003860 storage Methods 0.000 description 13
- 230000001960 triggered effect Effects 0.000 description 12
- 238000004422 calculation algorithm Methods 0.000 description 8
- 229920002153 Hydroxypropyl cellulose Polymers 0.000 description 7
- 235000010977 hydroxypropyl cellulose Nutrition 0.000 description 7
- 230000008878 coupling Effects 0.000 description 6
- 238000010168 coupling process Methods 0.000 description 6
- 238000005859 coupling reaction Methods 0.000 description 6
- 230000011218 segmentation Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000329 molecular dynamics simulation Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000009509 drug development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000007734 materials engineering Methods 0.000 description 1
- 239000002547 new drug Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000003208 petroleum Substances 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000007704 transition 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40006—Architecture of a communication node
- H04L12/40032—Details regarding a bus interface enhancer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供一种实现集合通信的方法、计算机设备和通信***,以解决现有技术中通信时延高、资源消耗的问题。本申请提供的方法包括标识无通信依赖的工作请求,并在转发工作请求时,对于标识为无通信依赖的工作请求直接转发,对于没有标识为无通信依赖的工作请求,通过队列管控后转发。这样,能够避免无通信依赖的工作请求通过队列管控时所造成的通信时延,并能够降低因执行相关的管控所带来的资源消耗,从整体上提升集合通信的通信性能。
Description
技术领域
本申请涉及信息技术领域,尤其涉及一种实现集合通信的方法、计算机设备和通信***。
背景技术
在集合通信中,对于集合操作的处理通常需要多个进程的参与,每个进程都可能会接收到来自若干个其它不同进程的数据并需要进行相应处理,并将处理后的数据发送给其它进程。
对于不同计算机设备上运行的进程之间的通信,需要通过不同计算机设备上的网卡实现不同进程之间数据的传递。由于受网络影响,进程之间传输的数据包到达接收端计算机设备时是无序的,并且到达的时间也是不确定的。接收端计算机设备中运行的进程接收到数据时会触发中断。当接收端的计算机设备的操作***正在满核处理计算任务时,因接收进程间传输的数据会导致操作***会停下部分核正在处理的计算任务,转向处理中断。然而中断和上下文切换的时间带来了接收端计算机设备操作***处理任务时的时间消耗,影响到接收端计算机设备的性能。
为解决上述中断带来的整体性能下降的问题,一种方式是在网卡发送数据时,通过队列控制进程间数据的传输。但这种方式存在集合通信的时延高、资源消耗的问题。
发明内容
本申请实施例提供一种实现集合通信的方法、计算机设备和通信***,以解决现有技术中通信时延高、资源消耗的问题。
第一方面,本申请实施例提供一种计算机设备,包括处理器、存储器和主机通道适配器;
所述存储器中存储有计算机可执行的程序;
所述处理器用于执行所述计算机可执行的程序,以实现如下操作:
将集合通信的操作请求转换为工作请求,并标识无通信依赖的工作请求;以及,将所述工作请求发送给所述主机通道适配器;
所述主机通道适配器,用于判断接收到的工作请求是否是无通信依赖的工作请求;对于标识为无通信依赖的工作请求直接转发,对于没有标识为无通信依赖的工作请求,基于队列管控后转发。
上述计算机设备通过标识无通信依赖的工作请求,对于无通信依赖的工作请求直接转发,避免了无通信依赖的工作请求通过队列管控时所造成的通信时延,并能够降低因执行相关的管控所带来的资源消耗,能够从整体上提升集合通信的通信性能。
可选的,所述集合通信的操作请求,是跨节点的操作请求。不同的节点之间通过网络实现通信。所述节点包括但不限于具有计算机功能的设备,例如具有计算功能的计算机设备或具有存储功能的计算机设备。
可选的,所述跨节点的集合通信的操作请求可以是需要在多个节点间快速转发和/或需要在多个节点间精确同步的操作请求。
可选的,所述集合通信的操作请求是节点内的操作请求,即同一个节点内不同进程或不同线程间实现的集合操作。
可选的,所述处理器在将集合通信的操作请求转换为工作请求前,还用于根据所述集合通信的通信子模块的数量和每个通信子模块需要执行的任务,进行网格切分。通过网格切分,将实现所述集合通信的操作请求所要执行的任务,分配到处于空闲状态的资源上运行,能够提升资源的利用率。
可选的,所述处理器将所述工作请求发送给所述主机通道适配器包括:
所述处理器将所述工作请求转换为所述主机通道适配器能够识别的格式,并通过所述处理器与所述主机通道适配器之间的接口,将所述工作请求发送给所述主机通道适配器。
可选的,所述标识无通信依赖的工作请求包括:
为无通信依赖的工作请求添加第一标识,所述第一标识用于指示所述工作请求为无通信依赖的工作请求;和/或,
为有通信依赖的工作请求添加第二标识,所述第二标识用于指示所述工作请求为有通信依赖的工作请求。
当为无通信依赖的工作请求添加第一标识时,所述主机通道适配器判断接收到的工作请求是否包括所述第一标识,当接收到的工作请求包括所述第一标识时,确定该工作请求是无通信依赖的工作请求;当接收到的工作请求没有包括所述第一标识时或包括所述第二标识时,确定该工作请求是有通信依赖的工作请求。
为有通信依赖的工作请求添加第二标识时,所述主机通道适配器判断接收到的工作请求是否包括所述第二标识,当接收到的工作请求包括所述第二标识时,确定该工作请求是有通信依赖的工作请求;当接收到的工作请求没有包括所述第二标识时,确定该工作请求是无通信依赖的工作请求。
在一些可能的实现方式中,所述集合通信为下述任一种通信:一个第一通信子模块与多个第二通信子模块之间的通信,多个第一通信子模块与一个第二通信子模块之间的通信,多个第一通信子模块与多个第二通信子模块之间的通信。
在一些可能的实现方式中,所述工作请求是一个所述第一通信子模块与一个所述第二通信子模块之间的通信请求。
在一些可能的实现方式中,所述无通信依赖是一个所述第一通信子模块与一个所述第二通信子模块之间的通信不需要依赖其它通信子模块。
在一些可能的实现方式中,所述处理器还用于执行所述计算机可执行的程序,以实现如下操作:
基于所述工作请求中不同通信子模块之间的通信方式,识别一个工作请求是否是无通信依赖的工作请求。
在一些可能的实现方式中,所述通信方式包括一个工作请求中两个通信子模块之间传输数据的方式,以及所述两个通信子模块之间传输数据是否依赖其它通信子模块发送的数据。
可选的,所述一个工作请求中两个通信子模块之间传输数据的方式,是一个工作请求中作为数据发送方的通信子模块与作为数据接收方的通信子模块之间传输数据的方式。相应的,所述两个通信子模块之间传输数据是否依赖其它通信子模块发送的数据包括:作为数据发送方的通信子模块向作为数据接收方的通信子模块发送数据是否依赖其它通信子模块发送的数据。
在一些可能的实现方式中,所述通信方式是根据所述不同通信子模块间通信的接口确定的。
在一些可能的实现方式中,所述第一通信子模块通过所述计算机设备运行,所述第二通信子模块通过另一计算机设备运行,所述计算机设备与所述另一计算机设备通过网络通信;
所述主机通道适配器,还用于对标识为无通信依赖的工作请求直接通过所述网络转发,对于没有标识为无通信依赖的工作请求,基于队列管控后通过所述网络转发。
可选的,所述网络是基于Infiniband的网络。
在一些可能的实现方式中,所述主机通道适配器对于没有标识为无通信依赖的工作请求,基于队列管控后转发包括:
所述主机通道适配器将没有标识为无通信依赖的工作请求载入队列,并判断所述队列中记录的触发所述没有标识为无通信依赖的工作请求的条件是否已满足;
当所述条件已满足时,发送所述没有标识为无通信依赖的工作请求。
可选的,所述条件包括是否已经接收到向所述工作请求中接收数据的通信子模块发送的数据。当已经接收到向所述工作请求中接收数据的通信子模块发送的数据时,触发所述没有携带所述第一标识的工作请求的条件已满足。
或者,所述条件包括触发所述工作请求的其它工作请求是否已经在所述队列中。当触发所述工作请求的其它工作请求已经在所述队列中,则所述条件已满足。当触发所述工作请求的其它工作请求不在所述队列中,则所述条件未满足,所述处理器等待所述条件满足时再触发所述工作请求。
在一些可能的实现方式中,所述工作请求包括多个工作请求;
所述多个工作请求中包括一个或多个标识为无通信依赖的工作请求,以及,一个或多个没有标识为无通信依赖的工作请求。
在一些可能的实现方式中,所述处理器还用于执行所述计算机可执行的程序,以实现如下操作:
接收所述计算机设备中运行的应用程序发起的所述集合通信的操作请求;
获取所述集合通信的通信子模块的数量、每个通信子模块需要执行的任务以及不同通信子模块之间传递的数据和传递方式的信息。
可选的,所述应用程序可以是高性能计算(high performance computing,HPC)行业应用、HPC-人工智能(artificial intelligence,AI)行业应用以及大数据行业应用。
可选的,所述应用程序可以通过发起集合操作的命令以发起所述集合通信的操作请求。
在一些可能的实现方式中,所述处理器将集合通信的操作请求转换为工作请求包括:
将集合通信的操作请求转换为工作请求和执行所述工作请求的控制命令;其中,所述控制命令用于控制所述工作请求以实现集合操作。
在一些可能的实现方式中,所述集合通信是基于信息传递接口标准(message-passing interface,MPI)的集合通信。
可选的,所述处理器将集合通信的操作请求转换为工作请求,是根据所述存储器中存储的MPI库,并结合从集合通信的操作请求中获取到的信息实现。在一种实现方式中,所述处理器从所述MPI库中选择用于所述通信子模块间通信的MPI集合通信接口,根据选择的MPI集合通信接口确定所述工作请求中不同通信子模块之间的通信方式。不同的MPI集合通信接口会基于网络的拓扑、通信子模块的数量、传输的数据大小等因素选择不同的算法。所述处理器根据不同MPI集合通信接口对应的算法确定不同通信子模块间通信的方式。在一些可能的实现方式中,所述主机通道适配器通过网络接口卡(network interface card,NIC)、独立的芯片或芯片组实现。
在一些可能的实现方式中,所述通信子模块为进程或线程。
第二方面,本申请实施例提供一种通信***,所述通信***包括至少一个第二计算机设备,所述至少一个第二计算机设备通过网络与第一方面任意一项的计算机设备通信。
第三方面,本申请实施例提供一种实现集合通信的方法,所述方法包括:
获取集合通信的操作请求;
将所述集合通信的操作请求转换为工作请求,并标识无通信依赖的工作请求;
直接转发标识为无通信依赖的工作请求;
对于没有标识为无通信依赖的工作请求,基于队列管控后转发。
上述方法通过标识无通信依赖的工作请求,对于无通信依赖的工作请求直接转发,避免了无通信依赖的工作请求通过队列管控时所造成的通信时延,并能够降低因执行相关的管控所带来的资源消耗,能够从整体上提升集合通信的通信性能。
可选的,所述集合通信的操作请求,是跨节点的操作请求。不同的节点之间通过网络实现通信。所述节点包括但不限于具有计算机功能的设备,例如具有计算功能的计算机设备或具有存储功能的计算机设备。
可选的,所述跨节点的集合通信的操作请求可以是需要在多个节点间快速转发和/或需要在多个节点间精确同步的操作请求。
可选的,所述集合通信的操作请求是节点内的操作请求,即同一个节点内不同进程或不同线程间实现的集合操作。
可选的,在将集合通信的操作请求转换为工作请求前,所述方法还包括:
根据所述集合通信的通信子模块的数量和每个通信子模块需要执行的任务,进行网格切分。通过网格切分,将实现所述集合通信的操作请求所要执行的任务,分配到处于空闲状态的资源上运行,能够提升资源的利用率。
可选的,所述标识无通信依赖的工作请求包括:
为无通信依赖的工作请求添加第一标识,所述第一标识用于指示所述工作请求为无通信依赖的工作请求;和/或,
为有通信依赖的工作请求添加第二标识,所述第二标识用于指示所述工作请求为有通信依赖的工作请求。
当为无通信依赖的工作请求添加第一标识时,通过判断接收到的工作请求是否包括所述第一标识,当接收到的工作请求包括所述第一标识时,确定该工作请求是无通信依赖的工作请求;当接收到的工作请求没有包括所述第一标识时或包括所述第二标识时,确定该工作请求是有通信依赖的工作请求。
为有通信依赖的工作请求添加第二标识时,通过判断接收到的工作请求是否包括所述第二标识,当接收到的工作请求包括所述第二标识时,确定该工作请求是有通信依赖的工作请求;当接收到的工作请求没有包括所述第二标识时,确定该工作请求是无通信依赖的工作请求。
在一些可能的实现方式中,所述集合通信为下述任一种通信:一个第一通信子模块与多个第二通信子模块之间的通信,多个第一通信子模块与一个第二通信子模块之间的通信,多个第一通信子模块与多个第二通信子模块之间的通信。
在一些可能的实现方式中,所述工作请求是一个所述第一通信子模块与一个所述第二通信子模块之间的通信请求。
在一些可能的实现方式中,所述无通信依赖是一个所述第一通信子模块与一个所述第二通信子模块之间的通信不需要依赖其它通信子模块。
在一些可能的实现方式中,所述方法还包括:
基于所述工作请求中不同通信子模块之间的通信方式,识别一个工作请求是否是无通信依赖的工作请求。
在一些可能的实现方式中,所述通信方式包括一个工作请求中两个通信子模块之间传输数据的方式,以及所述两个通信子模块之间传输数据是否依赖其它通信子模块发送的数据。
可选的,所述一个工作请求中两个通信子模块之间传输数据的方式,是一个工作请求中作为数据发送方的通信子模块与作为数据接收方的通信子模块之间传输数据的方式。相应的,所述两个通信子模块之间传输数据是否依赖其它通信子模块发送的数据包括:作为数据发送方的通信子模块向作为数据接收方的通信子模块发送数据是否依赖其它通信子模块发送的数据。
在一些可能的实现方式中,所述通信方式是根据所述不同通信子模块间通信的接口确定的。
在一些可能的实现方式中,所述第一通信子模块通过第一计算机设备运行,所述第二通信子模块通过第二计算机设备运行,所述第一计算机设备与所述第二计算机设备通过网络通信;
所述方法还包括:对标识为无通信依赖的工作请求直接通过所述网络转发,对于没有标识为无通信依赖的工作请求,基于队列管控后通过所述网络转发。
可选的,所述网络是基于Infiniband的网络。
在一些可能的实现方式中,所述对于没有标识为无通信依赖的工作请求,基于队列管控后转发包括:
将没有标识为无通信依赖的工作请求载入队列,并判断所述队列中记录的触发所述没有标识为无通信依赖的工作请求的条件是否已满足;
当所述条件已满足时,发送所述没有标识为无通信依赖的工作请求。
可选的,所述条件包括是否已经接收到向所述工作请求中接收数据的通信子模块发送的数据。当已经接收到向所述工作请求中接收数据的通信子模块发送的数据时,触发所述没有携带所述第一标识的工作请求的条件已满足。
或者,所述条件包括触发所述工作请求的其它工作请求是否已经在所述队列中。当触发所述工作请求的其它工作请求已经在所述队列中,则所述条件已满足。当触发所述工作请求的其它工作请求不在所述队列中,则所述条件未满足,所述处理器等待所述条件满足时再触发所述工作请求。
在一些可能的实现方式中,所述工作请求包括多个工作请求;
所述多个工作请求中包括一个或多个标识为无通信依赖的工作请求,以及,一个或多个没有标识为无通信依赖的工作请求。
在一些可能的实现方式中,所述方法还包括:
根据获取到的所述集合通信的操作请求,获取所述集合通信的通信子模块的数量、每个通信子模块需要执行的任务以及不同通信子模块之间传递的数据和传递方式的信息。
在一些可能的实现方式中,所述将所述集合通信的操作请求转换为工作请求包括:
将所述集合操作转换为工作请求和执行所述工作请求的控制命令;其中,所述控制命令用于控制所述工作请求以实现集合操作。
在一些可能的实现方式中,所述集合通信是基于MPI的集合通信。
在一些可能的实现方式中,所述主机通道适配器通过NIC、独立的芯片或芯片组实现。
在一些可能的实现方式中,所述通信子模块为进程或线程。
第四方面,本申请实施例提供一种包含指令的计算机程序产品,当所述计算机程序产品在计算机设备上运行时,使得计算机设备执行上述第三方面任意一项所述的方法。
第五方面,本申请实施例提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,所述指令指示计算机设备执行上述第三方面任意一项所述的方法。
附图说明
下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种实现集合通信的结构示意图;
图2为本申请实施例提供的8个进程间通信时一种数据流的逻辑示意图;
图3A为本申请实施例提供的一种计算机设备300的结构示意图;
图3B为本申请实施例提供的一种***的结构示意图;
图4为本申请实施例中处理器301需要执行的程序或指令的逻辑结构示意图;
图5A为本申请实施例提供的标识无通信依赖的工作请求的方法流程示意图;
图5B为本申请实施例提供的控制模块3021识别无通信依赖的工作请求过程的流程示意图;
图6为本申请实施例提供的主机通道适配器303的一种具体结构示意图;
图7为本申请实施例提供的一种计算机设备700的结构示意图;
图8为本申请实施例提供的一种通信***的结构示意图;
图9为本申请实施例提供的一种实现集合通信的方法的流程示意图。
具体实施方式
下面结合附图,对本发明的实施例进行描述。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
本申请说明书和权利要求书中,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。在本申请中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间/逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。本申请中所出现的单元的划分,是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式,例如多个单元可以结合成或集成在另一个***中,或一些特征可以忽略,或不执行,另外,所显示的或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元之间的间接耦合或通信连接可以是电性或其他类似的形式,本申请中均不作限定。并且,作为分离部件说明的单元或子单元可以是也可以不是物理上的分离,可以是也可以不是物理单元,或者可以分布到多个电路单元中,可以根据实际的需要选择其中的部分或全部单元来实现本申请方案的目的。
应理解,在本申请说明书和权利要求书中对各种所述示例的描述中所使用的术语只是为了描述特定示例,而并非旨在进行限制。如在对各种所述示例的描述和所附权利要求书中所使用的那样,单数形式“一个(“a”,“an”)”和“该”旨在也包括复数形式,除非上下文另外明确地指示。
还应理解,本申请说明书和权利要求书中所使用的术语“和/或”是指并且涵盖相关联的所列出的项目中的一个或多个项目的任何和全部可能的组合。术语“和/或”,是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本申请中的字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
还应理解,术语“包括”(也称“includes”、“including”、“comprises”和/或“comprising”)当在本说明书中使用时指定存在所陈述的特征、整数、步骤、操作、元素、和/或部件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元素、部件、和/或其分组。
还应理解,术语“如果”可被解释为意指“当...时”(“when”或“upon”)或“响应于确定”或“响应于检测到”。类似地,根据上下文,短语“如果确定...”或“如果检测到[所陈述的条件或事件]”可被解释为意指“在确定...时”或“响应于确定...”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”。
应理解,说明书通篇中提到的“一个实施例”、“一实施例”、“一种可能的实现方式”意味着与实施例或实现方式有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”、“一种可能的实现方式”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
首选,对本申请中涉及的部分术语及相关技术进行解释说明,以方便理解:
并行计算:并行计算是建立在这样一个思想之上:大的问题可以分成一些较小的问题,而这些较小的问题是可以利用现有的资源能力同时(并行)被解决的,这些小问题的解决最终导致大问题的解决。并行计算是相对于串行计算来说的,串行计算的特点是处理器按照指令顺序依次运行计算算法。并行计算的并行分为两种,时间上的并行和空间上的并行。时间上的并行指的是计算机的中央处理器中采用的流水线技术,将每一条指令分成多个步骤来完成,而这些步骤之间在时间上可以交叠执行。空间上的并行是指用多个处理器并发的执行计算机指令,从而加快解决问题的速度。并行计算的优势在于,可以突破串行计算机计算能力的限制,提高计算速度,在更短的时间内完成计算任务,更好地发挥硬件的计算能力,节约计算成本。
HPC:是指运算能力能够达到一定级别的一整套计算机***。因为单一的处理器很难实现如此强大的计算能力,因此HPC需要多颗中央处理器(central processing unit,CPU)或多台主机(例如多台计算机设备)来共同协作实现。构建高性能计算***的主要目的就是提高运算速度,要达到每秒万亿次级的计算速度,对***的处理器、内存带宽、运算方式、***的输入输出(input/output,I/O)、存储等方面的要求都十分高,这其中的每一个环节都将直接影响到***的运算速度。HPC主要用于快速完成科学研究、工程设计、金融、工业以及社会管理等领域内具有数据密集型、计算密集型和I/O密集型的计算。典型应用包括:生物工程、新药研制、石油物探、运载器设计(航空航天、舰船、汽车)、材料工程、核爆模拟、尖端武器制造、密码研究和各类大规模信息处理等。高性能计算的目标是:最大限度地降低完成特殊计算问题的运算时间,最大限度地提高在可指定时间内完成的问题规模,处理以前无法实现的大量复杂问题,提高性价比,扩展解决中等规模的问题和预算等。
MPI:是一个消息传递接口的标准,用于开发基于消息传递的并行程序,其目的是为用户提供一个实际可用的、可移植的、高效的和灵活的消息传递接口。MPI可应用于多种***架构中,如分布式/共享内存的多核处理器,高性能网络,以及这些架构的组合。MPI也是一个并行编程函数库,其编译运行需要和具体的编程语言相结合。MPI在主流的操作***上都得到了实现,包括Windows和Linux***。MPI可以是进程级并行的软件中间件,MPI框架把所有的计算进程管理起来形成一个***,然后提供丰富的进程间通信的函数。进程是程序的一个运行实例,除包含程序代码外,同时包含它的执行环境(内存、寄存器、程序计数器等),是操作***中独立存在的可执行的基本程序单位。MPI可以支持多种不同的通信协议,例如Infiniband或传输控制协议(transmission control protocol,TCP)等。MPI对这些协议进行了封装,提供一套统一的通信接口,屏蔽底层的通信细节。MPI管理框架会为每一个进程分配一个进程标识号(rank号),rank从0开始依次往后排。MPI程序的每一个进程到底完成哪一部分工作,是通过其进程标识号来决定的。MPI进程需要在通信域内进行通信,通信域是进程间的通信环境,包含了进程组、上下文、虚拟拓扑等。MPI在启动时,***会建立一个全局的通信域,每个进程都在这个全局通信域内,进程间通信需要指定通信域的参数。
集合通信:也叫组通信,其与点对点通信的一个重要区别在于,多个进程同时参加通信,区别于点对点通信只涉及发送方和接收方两个进程。集合通信由哪些进程参加以及集合通信的上下文,都是由该集合通信调用的通信域限定的。集合通信一般包括三个功能:通信、同步和计算。其中,通信功能主要完成集合内部数据的传输,同步功能实现集合内所有进程在特定的点上执行进度的一致,计算功能是对特定数据的操作。MPI集合通信是一种常见的集合通信。
InfiniBand(缩写为IB):也称为“无限带宽”技术,是一个用于高性能计算的计算机网络通信标准,具有极高的吞吐量和极低的延迟,用于计算机与计算机之间的数据互连。InfiniBand也用作服务器与存储***之间的直接互联或交换互连,以及存储***之间的互连。
网格:由多个独立的计算机组成以提供在线计算和存储能力,这些计算机资源分布在一个较为广的范围之内。通过利用网格中闲置的计算资源,可以创造出一个虚拟的强大的计算平台,这个高性能的计算机为处理大规模的生物、数学、化学等领域内的计算问题提供了可能性。网格将相互连接的计算机组织起来,它将整个连接在网络中的各类资源和服务整合在一起,成为一个能力巨大的虚拟计算机。对于用户而言,网格给其提供包括各种服务、资源在内的基础设施,用户面对的是一个远远超过任何一个单个超级计算机容量的资源。不但可以利用其强大的计算能力解决难题,而且可以使用在网格内的任何一个节点所提供的服务,无论该节点的物理位置在何处。
图1为一种实现集合通信的结构示意图。如图1所示,计算机设备1中运行的4个进程(例如进程1、进程2、进程3和进程4,图中未示出),分别通过网络向计算机设备2发送数据。计算机设备2通过队列接收计算机设备1中4个进程发送的数据,将每个进程发送的载荷(payload)写入接收队列中。计算机设备2中的一个进程(例如进程0,图中未示出)接收到4个进程的载荷后,进行相关的处理(例如求和、取最大值或取最小值等)并发送处理后的数据。
在执行上述操作时,由于受网络影响,运行在计算机设备1中的每个进程发送的数据到达计算机设备2是无序的,到达的时间也是不确定的。计算机设备2无法预测每个中断的生成时间,所述中断是计算机设备1中运行的4个进程中任意一个进程通过网络传输数据到达计算机设备2时产生的中断。计算机设备2每接收一个进程发送的载荷后,就会触发中断任务给操作***。当计算机设备2的操作***正在满核执行计算任务时,产生的中断会使操作***停下部分核正在执行的计算任务,转向处理中断,并在处理完中断任务之后再返回执行计算任务。计算机设备2的操作***在处理中断时要保存当前计算任务的上下文,整体的开销比较大。这样,计算机设备2的操作***调度程序受到干扰,产生“操作***噪声”,即接收消息时产生的中断开销。这种***噪声造成了大量进程的等待,以及大量的处理器循环(例如CPU cycle)损失。在大多数情况下,数据的处理很简单,然而中断和上下文切换的时间开销比计算机设备2处理数据的时间开销还要大。因此,实现此类操作时,计算机设备2的执行效率很低。
一种解决上述问题的方式是引入一个用于控制的队列,并通过队列对不同进程发送的数据进行统一的管理。例如,图1中4个不同进程的数据通过队列进行管控时,会等到4个接收队列的完成信息都到达后,统一触发中断,这样就能够避免“操作***噪声”的产生。
但是,通过队列实现管控时,由于未区分不同的进程,对不需要管控的进程也纳入队列管理的范围,造成通信效率的低下和资源的占用。
以集合通信中广播通信为例,8个进程间的数据流如图2所示。图2为8个进程间通信时一种数据流的逻辑示意图。图2中,每个圆圈中的数字代表进程的标号,圆圈之间的连线代表进程之间存在通信关系。
在没有通过队列管理的方式实现通信时,图2中8个进程间通信的队列对的结构如表1所示:
表1
其中表1中P0代表图2中的进程0,以此类推,P7代表图2中的进程7。队列对(queuepairs,QP)是一个队列对的标号。以进程0向进程4发送数据为例,“Send QP 4”代表进程0向进程4的QP发送数据,“Send disable”代表取消发送使能。
在通过队列对图2所示的进程间通信进行管控时,图2所示的8个进程间通信的队列对的结构如表2所示:
表2
基于表2可以看出,通过队列实现进程间通信的管控时,将没有通信依赖的进程间通信也纳入管控,这些进程间的通信可以不用通过队列管控,导致通信时延长、资源被浪费的问题。例如,图2中0号进程发送给4号进程、2号进程、1号进程的数据可以直接发送,可以不用再通过队列管理中的send enable去控制表1中的send disable以实现数据的发送。通过队列的方式实现管控,需要将0号进程与4号进程、2号进程、1号进程之间的通信载入队列,并使能发送功能。这不仅造成0号进程与4号进程、2号进程、1号进程之间通信的时延的增加,还消耗了网卡执行这些管控时的处理资源。
在实际实现时,进行集合通信的一些进程相互之间通信是没有依赖关系的。通过队列管控没有依赖关系的进程之间的通信进行管控,不仅会带来通信时延的增加,还会因处理这部分管控对网络适配器中处理器资源的占用,带来处理器性能的消耗。
本申请实施例提供一种实现集合通信的方法,当在进行集合通信的操作时,对于无通信依赖的进程,可以不用通过队列进行管控。这样,可以加速集合通信中无通信依赖的进程间通信的性能,能够降低集合通信的整体时延,并能够避免对无通信依赖的进程间通信的管理所带来的资源的占用和消耗。以通过MPI的集合通信为例,当上层应用(HPC应用、大数据应用等等)通信组件选用了MPI时,可以端到端加速整体的上层应用的性能。例如HPC行业分子动力学领域的典型应用,其MPI集合通信的时间在整个端到端的运行时间占比为40%,如果加速了MPI集合通信的性能,可以加速应用整体端到端的性能。
首先,对实现本申请实施例提供的实现集合通信的方法的设备进行描述。
图3A为本申请实施例提供的一种计算机设备300的结构示意图。如图3A所示,计算机设备300包括处理器301、存储器302、主机通道适配器(host channel adapter,HCA)303和总线304。处理器301、存储器302和主机通道适配器303之间通过总线304通信。总线304可以是外设部件互连标准(peripheral component interconnect,PCI)总线、快捷外设部件互连标准(peripheral component interconnect express,PCIe)或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等,为便于表示,图3A中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。主机通道适配器303通过网络与其它计算机设备实现连接。
图3A中,处理器301可以为CPU、图形处理器(Graphics Processing Unit,GPU)、通用图形处理器(general-purpose GPU,GPGPU)、张量处理器(Tensor Processing Unit,TPU)、数据处理器(Data Processing Unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等具有计算能力的芯片。
存储器302可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM);也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器,HDD或SSD。存储器302中存储有程序或指令,例如包含至少一个进程的程序代码或至少一个线程的程序代码。当然,存储器302中还可以存储数据,包括但不限于所述计算机设备300需要存储的数据。
主机通道适配器303包括控制单元3031、第一接口3032和第二接口3033。其中,第一接口3032是主机通道适配器303与处理器301通信的接口,其通过总线304接收处理器301发送的请求,将接收到的请求转换为主机通道适配器303可以识别的格式;或将主机通道适配器303发送给处理器301的数据或报文转换为处理器301可以识别的格式。控制单元3031通过第一接口3032接收处理器301发送的请求,对接收到的请求进行相应的处理。第二接口3033是计算机设备300与网络连接的接口,主机通道适配器303通过第二接口3033接收其它计算机设备通过网络发送的请求或数据,或通过网络向其它计算机设备发送请求或数据。可选的,第二接口3033可以包含多个端口并通过多个端口与网络连接,以实现多条路径的同步传输。
在一种实现方式中,主机通道适配器303可以通过NIC实现。在另一种实现方式中,主机通道适配器303也可以通过一个芯片组或一个独立的芯片来实现。
需要说明的是,图3A只是为方便描述本申请实施例,显示了部分的硬件组件和软件组件。在具体实现时,计算机设备300还可以包括其它硬件组件,例如硬盘等;也可以包括其它软件,例如应用程序、操作***等。图3A所示的结构组成不应作为对本申请实施例的限制。
图3B为本申请实施例提供的一种***的结构示意图。如图3B所示,所述***包括计算机设备300和计算机设备400,计算机设备300和计算机设备400通过网络N100连接。计算机设备300与计算机设备400之间的网络N100可以是基于Infiniband的网络。示例性的,计算机设备300与计算机设备400之间通过Infiniband架构作为互联的解决方案。可选的,计算机设备300与计算机设备400之间的网络N100也可以是以太网络(Ethernet)或基于融合以太的远程内存直接访问协议(Remote Direct Memory Access over ConvergedEthernet,RoCE)网络等。
计算机设备400的组成与计算机设备300的组成类似,包括处理器401、存储器402、主机通道适配器403和总线404。处理器401、存储器402和主机通道适配器403之间通过总线404通信。存储器402中存储有程序或指令,例如包含至少一个进程的程序代码。主机通道适配器403包括控制单元4031、第一接口4032和第二接口4033。
计算机设备300中运行的进程发起的请求,例如向计算机设备400中运行的进程发送数据的请求,通过网络N100传输到计算机设备400。计算机设备400中运行的相关进程根据接收到的请求进行相应的处理。在一种实现方式中,计算机设备300中的一个或多个进程,通过网络N100与计算机设备400中的一个或多个进程实现MPI集合通信。
下面以计算机设备300中运行的一个应用程序发起MPI集合操作,与计算机设备400之间实现通信为例,对本申请实施例提供的集合通信方法做进一步的说明。
计算机设备300中的处理器301通过读取存储器302中的程序或指令,以实现MPI集合通信的相应功能。图4为处理器301需要执行的程序或指令的逻辑结构示意图。如图4所示,存储器302中包括应用程序3025、应用接口模块3023、控制模块3021、传输模块3022和转发模块3024。其中,应用接口模块3023、控制模块3021和传输模块3022构成MPI层,该MPI层是基于MPI标准实现的统一通信框架。
应用程序3025,可以是实现集合通信的任何应用,包括但不限制于HPC行业应用、HPC-AI行业应用以及大数据行业应用等。这些应用通常需要大量的计算任务,执行这些大量的计算任务通常会启动多个进程或线程,就需要调用MPI的集合通信接口用于数据计算以及进程间信息交互。示例性的,应用程序3025可以是气象领域的应用WRF(WeatherResearch and Forecasting)、计算流体力学的应用OpenFoam或分子动力学领域的应用VASP(Vienna Ab initio Simulation Package)等等。
应用接口模块3023,是MPI应用层与应用程序3025之间的接口,用于从应用程序3025接收需要执行的任务。例如,应用接口模块3023可以接收应用程序3025触发的集合通信的操作请求。
控制模块3021,用于基于应用程序3025下发的操作请求,将所述操作请求转换为工作请求(work request,WR)。示例性的,所述控制模块3021转换包括但不限于:根据要计算的算例进行网格切分,确定需要执行的进程以及每个进程需要执行的任务,进程之间通信的通信方式等。示例性的,控制模块3021可以是集合通信组(unified communicationgroup,UCG)。
传输模块3022,用于抽象不同硬件(例如不同的网卡)架构之间的差异,提供底层应用编程接口(application programming interface,API),该底层API用于实现集合通信。示例性的,传输模块3022可以是集合通信传输(unified communication transport,UCT)。
转发模块3024,用于实现API层与主机通道适配器303之间的消息或数据的转发。示例性的,转发模块3024可以是开放结构企业分布(open fabrics enterprisedistribution,OFED)。当控制模块3021调用传输模块3022的接口通知传输模块3022需要执行的WR后,传输模块3022通过调用所述OFED对外暴露的接口敲硬件的doorbell通知主机通道适配器303,将所述WR发送给主机通道适配器303进行解析并处理。在一种实现方式中,OFED可以是远程直接内存访问(remote direct memory access,RDMA)和内核直通(kernelbypass)的开源实现。
图5A为本申请实施例提供的标识无通信依赖的工作请求的方法流程示意图。如图5A所示,结合图4中所示的软件模块,所述方法包括:
步骤500:应用程序3025发起集合通信的操作请求。
一种实现方式中,所述集合通信的操作请求是跨节点的集合操作请求,不同的节点间通过网络通信以实现集合通信。示例性的,所述跨节点的集合通信的操作请求可以是需要在多个节点间快速转发和/或需要在多个节点间精确同步的操作请求。其中,所述节点可以是计算机设备,包括但不限于实现计算功能的计算机设备或存储功能的计算机设备。
在另一种实现方式中,所述集合通信的操作请求是节点内的操作请求,即同一个节点内不同进程或不同线程间实现的集合操作。
具体的,应用程序3025可以通过发起集合操作的命令以发起所述集合通信的操作请求。可选的,所述集合操作的命令可以是MPI命令或共享内存命令。以MPI命令为例,MPI命令包括但不限于:MPI_max、MPI_min、MPI_sum、MPI_scatter或MPI_reduce等。
步骤501:应用接口模块3023接收应用程序3025发起的操作请求,并转发给控制模块3021。
应用接口模块3023接收到应用程序3025发起的操作请求后,可以对接收到的操作请求进行通用的处理,并将获取到的信息发送给控制模块3021。其中,应用接口模块3023对所述操作请求的处理包括但不限于:获取集合通信的进程数、每个进程需要执行的任务、进程间传递数据的大小或通信域等信息。
应用接口模块3023获取到这些信息后,将这些信息发送或传递给控制模块3021。可以理解,在应用接口模块3023与控制模块3021之间还可以存在其它的软件模块。例如基于MPI通信协议实现MPI通信的软件模块,应用接口模块3023可以通过这些软件模块将获取到的所述信息发送或传递给控制模块3021。本申请实施例从简洁描述的角度,只描述应用接口模块3023将获取到的信息发送或传递给控制模块3021。
步骤502:控制模块3021根据从应用接口模块3023获取到的信息,将所述集合通信的操作请求转换为工作请求。
在一种实现方式中,控制模块3021根据从应用接口模块3023获取到的信息,将所述集合通信的操作请求转换为工作请求。
在另一种实现方式中,所述控制模块3021根据从应用接口模块3023获取到的信息,可以将所述集合操作转换为工作请求和执行所述工作请求的控制命令。其中,所述控制命令用于控制所述工作请求以实现集合操作。
在具体实现时,控制模块3021可以基于存储器302中存储的MPI库,结合从应用接口模块3023获取到的信息,将所述集合操转换为工作请求,或者转换为工作请求和执行所述工作请求的控制命令。
示例性的,根据从应用接口模块3023获取到的信息,将所述集合操作转换为工作请求和执行所述工作请求的控制命令包括下述步骤:
步骤S1:控制模块3021根据集合通信的进程数和每个进程需要执行的任务,进行网格切分,分配运行所述集合通信的进程的计算机设备。
如果实现集合通信的进程需要通过网络通信,则需要分配通过网络通信的不同计算机设备分别用于执行本次集合通信的任务。以图3B所示的***为例,计算机设备300和计算机设备400分别用于运行相关的进程,以通过网络实现集合通信。示例性的,一种集合通信是根进程0与3个子进程(子进程1、子进程2和子进程3)之间的通信。根进程0需要从子进程1、子进程2和子进程3接收数据并执行归约操作后,将归约操作后的数据发送给子进程1、子进程2和子进程3。控制模块3021可以分配计算机设备300运行根进程0,分配计算机设备400运行子进程1、子进程2和子进程3。根进程0通过网络N100与子进程1、子进程2和子进程3实现集合通信。
如果实现集合通信的进程不需要通过网络实现通信,可以只分配计算机设备300用于执行本次集合通信的任务。仍以上述根进程0与3个子进程(子进程1、子进程2和子进程3)之间的通信为例,根进程0,以及子进程1、子进程2和子进程3都运行在计算机设备300上,根进程0可以通过主机通道适配器303,实现与子进程1、子进程2和子进程3间的通信。
步骤S2:控制模块3021确定进程间实现集合通信的方式。
具体的,控制模块3021可以先从MPI库中选择用于进程间通信的MPI集合通信接口。所述MPI集合通信接口包括但不限于:MPI_Bcast、MPI_Allreduce或MPI_Alltoall等。不同的MPI集合通信接口会针对网络的拓扑、进程的数量、传输的数据大小等因素选择不同的算法。其中,常用的算法包括但不限于Binomial Tree、K-nomial Tree或Recursivedoubling等。所述算法具体用于确定进程间通信的方式。
控制模块3021通过选择不同的MPI集合通信接口,并基于每种通信接口所适用的算法确定进程间实现集合通信的方式。
步骤503:控制模块3021识别无通信依赖的工作请求,为无通信依赖的工作请求添加标识。
其中,控制模块3021识别无通信依赖的工作请求的过程,参见图5B所示的流程。
控制模块3021识别出无通信依赖的工作请求后,可以在无通信依赖的工作请求中添加标识信息,以标识该工作请求是无通信依赖的工作请求。所添加的标识信息可以是任何形式,所添加的标识信息可以位于工作请求的任意位置。
示例性的,可以在工作请求的Opcode增加扩展属性,以添加标识信息。例如,工作请求的构成可以如表3所示:
wr_id | *next | … | Opcode | Send_flags | … |
表3
控制模块3021可以在表3所示的工作请求中的Opcode中增加标识:SEND_DIRECTLY,以标识该工作请求为无通信依赖的工作请求。
步骤504:将控制模块3021转换后的工作请求发送给主机通道适配器303。
具体的,传输模块3022将控制模块3021转换后的工作请求传输给转发模块3024,转发模块3024将所述工作请求发送给主机通道适配器303。即处理器301通过执行传输模块3022的程序将控制模块3021转换后的工作请求传输给转发模块3022,并通过执行转发模块3024的程序将所述工作请求发送给主机通道适配器303。一种实现方式中,处理器301可以通过执行转发模块3024的程序将所述工作请求转换为主机通道适配器303可以识别的格式,并通过第一接口3032将转换格式后的所述工作请求发送给主机通道适配器303。
可以理解,控制模块3021转换集合通信的操作请求后,会得到多个工作请求。其中部分工作请求是有通信依赖的工作请求,部分工作请求是无通信依赖的工作请求。处理器301发送给主机通道适配器的工作请求,包括添加了标识的无通信依赖的工作请求,也包括有通信依赖的工作请求。这样,主机通道适配器就能够根据标识,识别出无通信依赖的工作请求,进而直接转发这部分工作请求。
针对任意一个工作请求,控制模块3021判断其是否是无通信依赖的工作请求,可以基于一个工作请求中进程间的通信方式来判断。图5B为本申请实施例提供的识别一个工作请求是否是无通信依赖的工作请求的方法的流程示意图。以如图5B所示,所述方法包括:
步骤5031:控制模块3021确定有进程间通信的工作请求。
上述步骤502中,控制模块3021转换集合操作后的工作请求为一个或多个工作请求。控制模块3021需要先确定一个工作请求,再判断该一个工作请求是否是无通信依赖的工作请求。判断一个工作请求是否是无通信依赖的工作请求,是判断该工作请求中有通信关系的进程之间的通信,是否需要依赖其它进程。
下文以一个工作请求中本端进程为进程A,对端进程为进程B为例进行说明。
步骤5032:控制模块3021判断本端进程(进程A)是否需要向对端进程(进程B)发送数据。
如果本端进程(进程A)需要向对端进程(进程B)发送数据,则执行步骤5033;如果本端进程(进程A)不需要向对端进程(进程B)发送数据,说明本端进程(进程A)需要接收对端进程(进程B)发送数据,则执行步骤5034。
步骤5033:控制模块3021判断本端进程(进程A)向对端进程(进程B)发送的数据是否是从其它进程(例如进程C,下文以进程C代表其它进程进行说明)获取的;如果不是从其它进程(进程C)获取的,则执行步骤5035;如果是从其它进程(进程C)获取的,则执行步骤5036。
步骤5034:控制模块3021判断对端进程(进程B)向本端进程(进程A)发送的数据是否是从其它进程(进程C)获取的;如果不是从其它进程(进程C)获取的,则执行步骤5035;如果是从其它进程(进程C)获取的,则执行步骤5036。
步骤5035:控制模块3021标识该工作请求是无通信依赖的进程;
如果本端进程(进程A)向对端进程(进程B)发送的数据不是从其它进程(进程C)获取的,说明本端进程(进程A)与对端进程(进程B)之间的通信不需要依赖其它进程,本端进程(进程A)向对端进程(进程B)发送数据的工作请求就是无通信依赖的工作请求。
控制模块3021识别出无通信依赖的工作请求后,标识该无通信依赖的工作请求。一种实现方式中,可以通过增加第一标识以标识该无通信依赖的工作请求。其中,该第一标识用于指示该工作请求是无通信依赖的工作请求。
可选的,可以通过在工作请求的Opcode字段增加第一标识,例如增加的第一标识为IBV_SEND_DIRECTLY。
步骤5036:控制模块3021标识该工作请求为有通信依赖的工作请求或不做标识处理。
如果本端进程(进程A)向对端进程(进程B)发送的数据是从其它进程(进程C)获取的,说明本端进程(进程A)与对端进程(进程B)之间的通信需要依赖与其它进程的通信,则本端进程(进程A)向对端进程(进程B)发送数据的工作请求就是有通信依赖的工作请求。
控制模块3021识别出有通信依赖的工作请求后,可以标识该有通信依赖的工作请求,也可以不做标识处理。不做标识处理,即表明该工作请求不同于无通信依赖的工作请求。
一种实现方式中,标识该有通信依赖的工作请求可以通过增加第二标识以标识该有通信依赖的工作请求。其中,该第二标识用于指示该工作请求是有通信依赖的工作请求。
可选的,可以通过在工作请求的Opcode字段增加第二标识,例如增加的第二标识可以为IBV_SEND。
需要说明的是,上述图5A和图5B虽然是各个软件模块执行相应的步骤,在具体实现时,是处理器301通过执行这些软件模块的程序实现相应的功能。即处理器通过执行存储在存储器302中的相应程序,实现图5A和图5B所示的方法流程。
图6为本申请实施例提供的主机通道适配器303的一种具体结构示意图。如图6所示,主机通道适配器303还包括队列3035和存储单元3034。
存储单元3034与控制单元3031连接,用于存储实现控制单元3031相应功能的程序或代码,并存储控制单元3031需要处理的数据。
队列3035包括多个工作队列(work queue,WQ),每个工作队列包含多个工作队列条目(work queue entries,WQEs),每个WQE包含网络事件相关的信息,例如可以是通过网络向其它节点发送消息的信息或从其它节点通过网络接收消息的信息。工作队列通过至少一个QP实现。每个QP包括一个接收队列(receive queue,RQ)和一个发送队列(send queue,SQ)。一个QP通常与一个对端节点中的QP对应,这样能够实现点对点的传输。接收队列主要用于接收WQEs,发送队列主要用于发送相关的WQEs。队列3035中还包括完成队列(completion queue,CQ),完成队列记录了WQE的完成状态。完成队列中的每一个条目对应一个WQE。示例性的,完成队列可以关联预设的一组接收队列,该组接收队列用于接收等待接收的消息。一个生产者标识(producer index,PI)用于指示完成队列中最近完成的一个条目。可选的,所述PI也可以用于指示工作队列中最近一个处理的WQE。示例性的,当完成队列关联预设的一组接收队列,该组接收队列用于接收等待接收的消息时,控制单元3031通过标识完成队列中的PI以指示接收到所述等待接收的消息。图6只是为简洁显示各种队列,只分别示出了一个SQ、RQ和CQ,但这并不代表队列3035只包括这些队列,在具体实现时,队列3035还可以包括多个SQ、多个RQ或多个CQ,不再赘述。
在另一种实现方式中,控制单元3031也可以判断载入队列3035的工作请求是数据的工作请求还是管理的工作请求。如果接收到的是数据工作请求,则判断队列3035中是否已经有触发该数据工作请求的管理工作请求。在队列3035中已经有触发该数据工作请求的管理工作请求时,基于该管理工作请求触发该数据工作请求。在队列3035中没有触发该数据工作请求的管理工作请求时,在接收队列中存储该数据工作请求,并等待触发该数据工作请求的管理工作请求。如果接收到的是管理工作请求,则判断队列3035中是否已经有该管理工作请求要触发的数据工作请求。在队列3035中已经有该管理工作请求要触发的数据工作请求时,基于该管理工作请求触发该数据工作请求。在队列3035中没有该管理工作请求要触发的数据工作请求时,在接收队列中存储该管理工作请求,并等待该管理工作请求要触发的数据工作请求。
本申请实施例中,队列3035和存储单元3034可以通过RAM实现,例如可以是通过静态随机存取存储器(static random access memory,SRAM)或者动态随机存取存储器(dynamic random access memory,DRAM)实现。队列3035和存储单元3034可以内嵌于控制单元3031或者是独立于主机通道适配器303。
可选的,控制单元3031还可以包括一个计算子单元(图6未示出),用于执行工作请求中相关的计算任务。示例性的,计算子单元可以是算数逻辑单元(arithmetic logicalunit,ALU)。计算子单元可以内嵌于控制单元3031中,也可以是主机通道适配器303中独立于控制单元3031的子单元,并由控制单元3031控制。
在一种实现方式中,控制单元3031和/或计算子单元可以通过现场可编程门阵列(field programmable gate array,FPGA)和/或专用集成电路(application-specificintegrated circuit,ASIC)实现。
如图6所示,当第一接口3032接收到处理器301发送的工作请求后,将接收到的工作请求发送给控制单元3031。本申请实施例中,控制单元3031判断接收到的工作请求是否是无通信依赖的标识。
一种实现方式中,控制单元3031可以通过判断接收到的工作请求中是否包含所述第一标识,以判断接收到的工作请求是否是无通信依赖的工作请求。当接收到的工作请求中包含所述第一标识时,确认该工作请求是无通信依赖的工作请求;当接收到的工作请求中没有包含所述第一标识时,确认该工作请求是有通信依赖的工作请求。例如,控制单元3031接收到第一接口3032转发的工作请求后,先解析接收到的工作请求中Opcode字段是否包含IBV_SEND_DIRECTLY。如果包含IBV_SEND_DIRECTLY,确认该工作请求是无通信依赖的工作请求。如果没有包含IBV_SEND_DIRECTLY,确认该工作请求有无通信依赖的工作请求。
另一种实现方式中,控制单元3031可以通过判断接收到的工作请求中是否包含所述第二标识,以判断接收到的工作请求是否是无通信依赖的工作请求。当接收到的工作请求中没有包含所述第二标识时,确认该工作请求是无通信依赖的工作请求;当接收到的工作请求中包含所述第二标识时,确认该工作请求是有通信依赖的工作请求。
控制单元3031对于无通信依赖的工作请求,直接发送到第二接口3033以通过网络发送该工作请求。对于有通信依赖的工作请求,控制单元3031将该工作请求载入队列3035,并通过队列对该工作请求的发送进行管控,并在该工作请求被执行的条件满足时,经第二接口3033将该工作请求通过网络发送。
示例性的,控制单元3031通过队列对该工作请求的发送进行管控可以包括下述方式:
控制单元3031先判断与该工作请求有通信依赖的工作请求被触发的条件是否满足。如果条件未满足,将该工作请求存储到接收队列中进行等待。如果条件已满足,则触发对该工作请求的,经第二接口3033通过网络发送该工作请求。例如上述示例中,进程A向进程B发送的数据,需要等待进程C向进程A发送数据。当控制单元3031接收到进程A向进程B发送数据的工作请求后,将该工作请求载入队列3035中的接收队列,并判断进程A是否接收到进程C发送的数据,即判断队列3035的完成队列中是否有进程C向进程A发送数据的完成记录。如果进程A还未接收到进程C发送的数据,控制单元3031将该进程A向进程B发送数据的工作请求存储到接收队列中。当进程C向进程A发送数据的工作请求执行完成后,在完成队列中会记录该完成的WQE,当PI指示的条目显示进程C已经向进程A发送数据时,进程A向进程B发送数据的工作请求的条件已经满足,控制单元3031从接收队列中取出进程A向进程B发送数据的工作请求,并经第二接口3033通过网络发送该工作请求。
通过本申请实施例提供的上述实现方式,处理器301标识出无通信依赖的工作请求,主机通道适配器403接收到处理器301发送的集合操作的工作请求后,对于无通信依赖的工作请求直接通过网络发送,避免了无通信依赖的工作请求通过队列管控时造成的通信时延,并能够降低主机通道适配器303因执行相关的管控所带来的资源消耗。虽然无通信依赖的工作请求直接通过网络发送,会因未进行队列管理多触发一些中断,但这些中断所造成的时延与资源消耗,远小于通过队列管理所造成的时延和资源消耗。因此,通过本申请实施例提供的实现方式,能够从整体上提升集合通信的通信性能。
上述实施例是以通过MPI实现集合操作为例描述本申请实施例提供的方案,但本申请实施例不限定于此,对于通过其它方式实现的集合操作,也可以参照上述实现方式来实现,不再赘述。
图7为本申请实施例提供的一种计算机设备700的结构示意图。如图7所示,计算机设备700包括处理器701、存储器702和主机通道适配器703。处理器701、存储器702和主机通道适配器703通过总线相互连接。
所述存储器702中存储有计算机可执行的程序,所述处理器701用于执行所述计算机可执行的程序,以实现如下操作:
将集合通信的操作请求转换为工作请求,并标识无通信依赖的工作请求;以及,将所述工作请求发送给所述主机通道适配器703;
所述主机通道适配器703,用于判断接收到的工作请求是否是无通信依赖的工作请求;对于标识为无通信依赖的工作请求直接转发,对于没有标识为无通信依赖的工作请求,基于队列管控后转发。
图7所示的计算机设备700的具体实现方式,可以参考上述图3A所示的计算机设备300的实现方式以及参考上述图5A和图5B所示的实现方式来实现;例如,上述通信子模块可以是上述图5A和图5B中描述的进程等,不再赘述。
通过图7所示的计算机设备700,处理器701标识出无通信依赖的工作请求,主机通道适配器703接收到处理器701发送的集合操作的工作请求后,对于无通信依赖的工作请求直接通过网络发送,避免了无通信依赖的工作请求通过队列管控时造成的通信时延,并能够降低主机通道适配器703因执行相关的管控所带来的资源消耗,能够从整体上提升集合通信的通信性能。
图8为本申请实施例提供的一种通信***的结构示意图。如图8所示,所述通信***包括至少一个第二计算机设备800,所述至少一个第二计算机设备800通过网络708与图7中的计算机设备700通信。
图8所示的实施例可以参考上述图3B所示的***的实现方式来实现。具体的,第二计算机设备800可以参考图3B中计算机设备400的实现方式来实现。图8中,第二计算机设备800可以为一个或多个,计算机设备700可以通过网络708与一个或多个第二计算机设备800通信。
图8中计算机设备700与第二计算机设备800之间通信的实现方式,可以参考上述图3B以及图5A和图5B所示的实现方式来实现,不再赘述。
图9为本申请实施例提供的一种实现集合通信的方法的流程示意图。如图9所示,所述方法包括:
步骤900:获取集合通信的操作请求;
步骤901:将所述集合通信的操作请求转换为工作请求,并标识无通信依赖的工作请求;
步骤902:直接转发标识为无通信依赖的工作请求;对于没有标识为无通信依赖的工作请求,基于队列管控后转发。
图9所示的方法,可以通过一个计算机设备实现,例如可以通过上述图3A的计算机设备300来实现;并且,图9所示的方法,还可以参考上述图5A和图5B所示的实现方式来实现,不再赘述。
图9所示的方法,通过标识出无通信依赖的工作请求,对于无通信依赖的工作请求直接通过网络发送,避免了无通信依赖的工作请求通过队列管控时造成的通信时延,并能够降低因执行相关的管控所带来的资源消耗,能够从整体上提升集合通信的通信性能。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、设备和方法,可以通过其它的方式实现。例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接。
所述集成的模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (30)
1.一种计算机设备,其特征在于,包括处理器、存储器和主机通道适配器;
所述存储器中存储有计算机可执行的程序;
所述处理器用于执行所述计算机可执行的程序,以实现如下操作:
将集合通信的操作请求转换为工作请求,并标识无通信依赖的工作请求;以及将所述工作请求发送给所述主机通道适配器;
所述主机通道适配器,用于判断接收到的工作请求是否是无通信依赖的工作请求;对于标识为无通信依赖的工作请求直接转发,对于没有标识为无通信依赖的工作请求,基于队列管控后转发。
2.根据权利要求1所述的计算机设备,其特征在于,所述集合通信为下述任一种通信:一个第一通信子模块与多个第二通信子模块之间的通信,多个第一通信子模块与一个第二通信子模块之间的通信,多个第一通信子模块与多个第二通信子模块之间的通信。
3.根据权利要求2所述的计算机设备,其特征在于,所述工作请求是一个所述第一通信子模块与一个所述第二通信子模块之间的通信请求。
4.根据权利要求3所述的计算机设备,其特征在于,所述无通信依赖是一个所述第一通信子模块与一个所述第二通信子模块之间的通信不需要依赖其它通信子模块。
5.根据权利要求2-4中任意一项所述的计算机设备,其特征在于,所述处理器还用于执行所述计算机可执行的程序,以实现如下操作:
基于所述工作请求中不同通信子模块之间的通信方式,识别一个工作请求是否是无通信依赖的工作请求。
6.根据权利要求5所述的计算机设备,其特征在于,所述通信方式包括一个工作请求中两个通信子模块之间传输数据的方式,以及所述两个通信子模块之间传输数据是否依赖其它通信子模块发送的数据。
7.根据权利要求5所述的计算机设备,其特征在于,所述通信方式是根据所述不同通信子模块间通信的接口确定的。
8.根据权利要求3、4、6或7所述的计算机设备,其特征在于,所述第一通信子模块通过所述计算机设备运行,所述第二通信子模块通过另一计算机设备运行,所述计算机设备与所述另一计算机设备通过网络通信;
所述主机通道适配器,还用于对标识为无通信依赖的工作请求直接通过所述网络转发,对于没有标识为无通信依赖的工作请求,基于队列管控后通过所述网络转发。
9.根据权利要求1-4中任意一项所述的计算机设备,其特征在于,所述主机通道适配器对于没有标识为无通信依赖的工作请求,基于队列管控后转发包括:
所述主机通道适配器将没有标识为无通信依赖的工作请求载入队列,并判断所述队列中记录的触发所述没有标识为无通信依赖的工作请求的条件是否已满足;
当所述条件已满足时,发送所述没有标识为无通信依赖的工作请求。
10.根据权利要求1-4中任意一项所述的计算机设备,其特征在于,所述工作请求包括多个工作请求;
所述多个工作请求中包括一个或多个标识为无通信依赖的工作请求,以及,一个或多个没有标识为无通信依赖的工作请求。
11.根据权利要求1-4中任意一项所述的计算机设备,其特征在于,所述处理器还用于执行所述计算机可执行的程序,以实现如下操作:
接收所述计算机设备中运行的应用程序发起的所述集合通信的操作请求;
获取所述集合通信的通信子模块的数量、每个通信子模块需要执行的任务以及不同通信子模块之间传递的数据和传递方式的信息。
12.根据权利要求1-4中任意一项所述的计算机设备,其特征在于,所述处理器将集合通信的操作请求转换为工作请求包括:
将集合通信的操作请求转换为工作请求和执行所述工作请求的控制命令;其中,所述控制命令用于控制所述工作请求以实现集合操作。
13.根据权利要求1-4中任意一项所述的计算机设备,其特征在于,所述集合通信是基于信息传递接口标准MPI的集合通信。
14.根据权利要求1-4中任意一项所述的计算机设备,其特征在于,所述主机通道适配器通过网络接口卡NIC、独立的芯片或芯片组实现。
15.根据权利要求2-4中任意一项所述的计算机设备,其特征在于,所述通信子模块为进程或线程。
16.一种通信***,其特征在于,所述通信***包括至少一个第二计算机设备,所述至少一个第二计算机设备通过网络与权利要求1-15中任意一项的计算机设备通信。
17.一种实现集合通信的方法,其特征在于,所述方法包括:
获取集合通信的操作请求;
将所述集合通信的操作请求转换为工作请求,并标识无通信依赖的工作请求;
直接转发标识为无通信依赖的工作请求;
对于没有标识为无通信依赖的工作请求,基于队列管控后转发。
18.根据权利要求17所述的方法,其特征在于,所述集合通信为下述任一种通信:一个第一通信子模块与多个第二通信子模块之间的通信,多个第一通信子模块与一个第二通信子模块之间的通信,多个第一通信子模块与多个第二通信子模块之间的通信。
19.根据权利要求18所述的方法,其特征在于,所述工作请求是一个所述第一通信子模块与一个所述第二通信子模块之间的通信请求。
20.根据权利要求19所述的方法,其特征在于,所述无通信依赖是一个所述第一通信子模块与一个所述第二通信子模块之间的通信不需要依赖其它通信子模块。
21.根据权利要求18-20中任意一项所述的方法,其特征在于,所述方法还包括:
基于所述工作请求中不同通信子模块之间的通信方式,识别一个工作请求是否是无通信依赖的工作请求。
22.根据权利要求21所述的方法,其特征在于,所述通信方式包括一个工作请求中两个通信子模块之间传输数据的方式,以及所述两个通信子模块之间传输数据是否依赖其它通信子模块发送的数据。
23.根据权利要求21所述的方法,其特征在于,所述通信方式是根据所述不同通信子模块间通信的接口确定的。
24.根据权利要求19、22或23所述的方法,其特征在于,所述第一通信子模块通过第一计算机设备运行,所述第二通信子模块通过第二计算机设备运行,所述第一计算机设备与所述第二计算机设备通过网络通信;
所述方法还包括:对标识为无通信依赖的工作请求直接通过所述网络转发,对于没有标识为无通信依赖的工作请求,基于队列管控后通过所述网络转发。
25.根据权利要求17-20中任意一项所述的方法,其特征在于,所述对于没有标识为无通信依赖的工作请求,基于队列管控后转发包括:
将没有标识为无通信依赖的工作请求载入队列,并判断所述队列中记录的触发所述没有标识为无通信依赖的工作请求的条件是否已满足;
当所述条件已满足时,发送所述没有标识为无通信依赖的工作请求。
26.根据权利要求17-20中任意一项所述的方法,其特征在于,所述工作请求包括多个工作请求;
所述多个工作请求中包括一个或多个标识为无通信依赖的工作请求,以及,一个或多个没有标识为无通信依赖的工作请求。
27.根据权利要求17-20中任意一项所述的方法,其特征在于,所述方法还包括:
根据获取到的所述集合通信的操作请求,获取所述集合通信的通信子模块的数量、每个通信子模块需要执行的任务以及不同通信子模块之间传递的数据和传递方式的信息。
28.根据权利要求17-20中任意一项所述的方法,其特征在于,所述将所述集合通信的操作请求转换为工作请求包括:
将集合通信的操作请求转换为工作请求和执行所述工作请求的控制命令;其中,所述控制命令用于控制所述工作请求以实现集合操作。
29.根据权利要求17-20中任意一项所述的方法,其特征在于,所述集合通信是基于信息传递接口标准MPI的集合通信。
30.根据权利要求18-20中任意一项所述的方法,其特征在于,所述通信子模块为进程或线程。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP21896313.0A EP4236125A4 (en) | 2020-11-26 | 2021-06-30 | METHOD FOR IMPLEMENTING COLLECTIVE COMMUNICATION, COMPUTER DEVICE AND COMMUNICATION SYSTEM |
PCT/CN2021/103616 WO2022110805A1 (zh) | 2020-11-26 | 2021-06-30 | 实现集合通信的方法、计算机设备和通信*** |
US18/324,742 US20230300080A1 (en) | 2020-11-26 | 2023-05-26 | Method for implementing collective communication, computer device, and communication system |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011345108 | 2020-11-26 | ||
CN2020113451086 | 2020-11-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114567520A CN114567520A (zh) | 2022-05-31 |
CN114567520B true CN114567520B (zh) | 2023-06-02 |
Family
ID=81712659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011600044.XA Active CN114567520B (zh) | 2020-11-26 | 2020-12-29 | 实现集合通信的方法、计算机设备和通信*** |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230300080A1 (zh) |
EP (1) | EP4236125A4 (zh) |
CN (1) | CN114567520B (zh) |
WO (1) | WO2022110805A1 (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455380A (zh) * | 2012-06-05 | 2013-12-18 | 上海斐讯数据通信技术有限公司 | 多进程通信***及其建立和通信方法 |
CN106375329A (zh) * | 2016-09-20 | 2017-02-01 | 腾讯科技(深圳)有限公司 | 一种数据推送方法和时序控制器以及数据推送*** |
CN107209688A (zh) * | 2015-01-26 | 2017-09-26 | 高通股份有限公司 | 用于加速任务控制流的方法和*** |
CN107924330A (zh) * | 2015-09-25 | 2018-04-17 | 英特尔公司 | 用于集成的线程调度的技术 |
CN108694080A (zh) * | 2017-04-09 | 2018-10-23 | 英特尔公司 | 高效线程组调度 |
CN110096378A (zh) * | 2019-04-29 | 2019-08-06 | 杭州涂鸦信息技术有限公司 | 一种线程间通信方法及相关装置 |
WO2020122750A1 (en) * | 2018-12-13 | 2020-06-18 | Huawei Technologies Co., Ltd. | Apparatus, method and computer program product for performing a collective communication operation in a data communications network |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7086062B1 (en) * | 1999-10-11 | 2006-08-01 | I2 Technologies Us, Inc. | System and method for handling a unit of work |
US7895601B2 (en) * | 2007-01-10 | 2011-02-22 | International Business Machines Corporation | Collective send operations on a system area network |
US10158702B2 (en) * | 2009-11-15 | 2018-12-18 | Mellanox Technologies, Ltd. | Network operation offloading for collective operations |
US8811417B2 (en) * | 2009-11-15 | 2014-08-19 | Mellanox Technologies Ltd. | Cross-channel network operation offloading for collective operations |
US10372642B2 (en) * | 2016-09-29 | 2019-08-06 | Intel Corporation | System, apparatus and method for performing distributed arbitration |
WO2018107331A1 (zh) * | 2016-12-12 | 2018-06-21 | 华为技术有限公司 | 计算机***及内存访问技术 |
CN107819855B (zh) * | 2017-11-14 | 2020-07-28 | 成都路行通信息技术有限公司 | 一种消息分发方法及装置 |
CN111694675B (zh) * | 2019-03-15 | 2022-03-08 | 上海商汤智能科技有限公司 | 任务调度方法及装置、存储介质 |
-
2020
- 2020-12-29 CN CN202011600044.XA patent/CN114567520B/zh active Active
-
2021
- 2021-06-30 WO PCT/CN2021/103616 patent/WO2022110805A1/zh unknown
- 2021-06-30 EP EP21896313.0A patent/EP4236125A4/en active Pending
-
2023
- 2023-05-26 US US18/324,742 patent/US20230300080A1/en active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455380A (zh) * | 2012-06-05 | 2013-12-18 | 上海斐讯数据通信技术有限公司 | 多进程通信***及其建立和通信方法 |
CN107209688A (zh) * | 2015-01-26 | 2017-09-26 | 高通股份有限公司 | 用于加速任务控制流的方法和*** |
CN107924330A (zh) * | 2015-09-25 | 2018-04-17 | 英特尔公司 | 用于集成的线程调度的技术 |
CN106375329A (zh) * | 2016-09-20 | 2017-02-01 | 腾讯科技(深圳)有限公司 | 一种数据推送方法和时序控制器以及数据推送*** |
CN108694080A (zh) * | 2017-04-09 | 2018-10-23 | 英特尔公司 | 高效线程组调度 |
WO2020122750A1 (en) * | 2018-12-13 | 2020-06-18 | Huawei Technologies Co., Ltd. | Apparatus, method and computer program product for performing a collective communication operation in a data communications network |
CN110096378A (zh) * | 2019-04-29 | 2019-08-06 | 杭州涂鸦信息技术有限公司 | 一种线程间通信方法及相关装置 |
Non-Patent Citations (2)
Title |
---|
Message-passing interprocess communication design in seL4;Zhoujian Yu;《2016 5th International Conference on Computer Science and Network Technology (ICCSNT)》;20171019;全文 * |
异构多核处理器的微内核操作***通信机制的研究与设计;潘燕萍;《中国优秀硕士学位论文全文数据库 信息科技辑》;20200515;全文 * |
Also Published As
Publication number | Publication date |
---|---|
WO2022110805A1 (zh) | 2022-06-02 |
EP4236125A4 (en) | 2024-03-06 |
EP4236125A1 (en) | 2023-08-30 |
CN114567520A (zh) | 2022-05-31 |
US20230300080A1 (en) | 2023-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8108467B2 (en) | Load balanced data processing performed on an application message transmitted between compute nodes of a parallel computer | |
US8018951B2 (en) | Pacing a data transfer operation between compute nodes on a parallel computer | |
US7984450B2 (en) | Dispatching packets on a global combining network of a parallel computer | |
US8296430B2 (en) | Administering an epoch initiated for remote memory access | |
US7827024B2 (en) | Low latency, high bandwidth data communications between compute nodes in a parallel computer | |
US7958274B2 (en) | Heuristic status polling | |
US10109030B1 (en) | Queue-based GPU virtualization and management system | |
US8949577B2 (en) | Performing a deterministic reduction operation in a parallel computer | |
US7836143B2 (en) | Message communications of particular message types between compute nodes using DMA shadow buffers | |
US7797445B2 (en) | Dynamic network link selection for transmitting a message between compute nodes of a parallel computer | |
US9544261B2 (en) | Data communications in a distributed computing environment | |
CN102109997A (zh) | 通过利用虚拟OpenCL设备作为与计算云的接口来加速OpenCL应用 | |
US8959172B2 (en) | Self-pacing direct memory access data transfer operations for compute nodes in a parallel computer | |
US7966618B2 (en) | Controlling data transfers from an origin compute node to a target compute node | |
US7921428B2 (en) | Multi-registration of software library resources | |
US10277547B2 (en) | Data communications in a distributed computing environment | |
US9253107B2 (en) | Data communications in a distributed computing environment | |
US11556382B1 (en) | Hardware accelerated compute kernels for heterogeneous compute environments | |
CN114567520B (zh) | 实现集合通信的方法、计算机设备和通信*** | |
US7765337B2 (en) | Direct memory access transfer completion notification | |
US11797342B2 (en) | Method and supporting node for supporting process scheduling in a cloud system | |
Li et al. | Resources-conscious asynchronous high-speed data transfer in multicore systems: Design, optimizations, and evaluation | |
US20240184624A1 (en) | Method and system for sequencing artificial intelligence (ai) jobs for execution at ai accelerators | |
US20230077147A1 (en) | Data copy acceleration for service meshes | |
CN116662008A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |