CN113556242B - 一种基于多处理节点来进行节点间通信的方法和设备 - Google Patents
一种基于多处理节点来进行节点间通信的方法和设备 Download PDFInfo
- Publication number
- CN113556242B CN113556242B CN202010334759.9A CN202010334759A CN113556242B CN 113556242 B CN113556242 B CN 113556242B CN 202010334759 A CN202010334759 A CN 202010334759A CN 113556242 B CN113556242 B CN 113556242B
- Authority
- CN
- China
- Prior art keywords
- node
- information
- processing
- communication
- processing nodes
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 381
- 238000004891 communication Methods 0.000 title claims abstract description 149
- 238000000034 method Methods 0.000 title claims abstract description 89
- 238000004364 calculation method Methods 0.000 claims abstract description 57
- 238000003860 storage Methods 0.000 claims abstract description 22
- 238000011144 upstream manufacturing Methods 0.000 claims description 56
- 230000006870 function Effects 0.000 claims description 49
- 230000015654 memory Effects 0.000 claims description 28
- 239000000126 substance Substances 0.000 claims 3
- 238000010586 diagram Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 18
- 230000005540 biological transmission Effects 0.000 description 7
- 238000013528 artificial neural network Methods 0.000 description 5
- 238000012549 training Methods 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011143 downstream manufacturing Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000005406 washing Methods 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/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0806—Configuration setting for initial configuration or provisioning, e.g. plug-and-play
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/16—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using machine learning or artificial intelligence
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Neurology (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本公开涉及基于多处理节点来进行节点间通信的方法、设备和通信配置装置,其中通信配置装置可以包括在组合处理装置中,该组合处理装置还可以包括互联接口和其他处理装置。所述通信配置装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与通信配置装置和其他处理装置连接,用于通信配置装置和其他处理装置的数据。本公开的技术方案能够提高节点间通信的效率。
Description
技术领域
本公开涉及人工智能领域,更具体地,涉及多处理器的片间通信领域。
背景技术
在神经网络的训练中,如果单机训练规模为X的神经网络耗时T,那么当有N台相同机器训练该神经网络时,理想状态下,训练耗时应该为T/N,这也被称为理想线性加速比。但是,理想线性加速是不现实的,因为引入了通信开销。虽然计算部分是可以线性加速的;但是通信部分(如AllReduce算法)是客观存在且无法消除的。
为了接近理想线性加速比,存在多种方法。一种是对通信时间进行优化,例如缩短通信时间;另一种是进行操作的重叠,例如把通信时间掩盖在计算时间之中(通信融合、异步更新等)。
对通信时间进行优化可以有多种方式,例如采用高速通信技术、采用优化的通信算法等。
在多机多卡的神经网络训练过程中,为确保多机多卡的数据并行训练结果收敛,参与分布式训练的每个节点需要将当前节点反向传递(BP)的梯度信息△Wi传递给其他节点,最终使得每个节点都能获得全部梯度信息,即∑△Wi。梯度信息被传播和累加计算的方法被称为AllReduce算法。
AllReduce算法可以在不同的网络拓扑结构上实现,其中在环形拓扑(Ring)中优化实现的AllReduce算法采用了Ring AllReduce算法。
从单卡角度看,AllReduce所需实现的核心过程为:收(Receive,简记为R),算(Compute,简记为C),发(Send,简记为S)。在Ring AllReduce算法中,R部分对应于接收上游节点发来的梯度信息△Wi-1,C部分对应于计算△Wi=Add(△Wi-1,△Wi),S部分对应于计算向下游发送梯度信息△Wi。
但是,现有技术不能完全支持在处理设备的接收、运算和发送过程,或者处理设备即使能完全支持接收、运算和发送过程,也会引入计算资源的浪费或线程管理带来的芯片面积增大、能耗增加等的问题。
此外,在现有技术中,处理节点之间的通信需要主机的参与和管理,这也将导致主机和处理节点之间频繁的通信,导致通信效率和运算效率的降低。因此本公开所要解决的问题是,如何在高效能利用计算资源和不引入芯片线程管理能力前提下,支持完全在处理设备处进行的R-C-S过程。
发明内容
本公开的目的是解决现有技术中计算资源被不合理占用,计算资源被浪费的缺点。
根据本公开的第一方面,提供一种基于多处理节点来进行节点间通信的方法,其中,所述多个处理节点中的至少两个形成通信拓扑结构,所述方法包括:构建任务描述信息,所述任务描述信息包括下列中的至少一种:接收地址信息、计算任务信息和发送地址信息;向所述至少两个处理节点发送所述任务描述信息,以使得接收到所述任务描述信息的处理节点根据所述任务描述信息来进行节点间通信。
根据本公开的第二方面,提供一种基于多处理节点来进行节点间通信的设备,其中,所述多个处理节点中的至少两个形成通信拓扑结构,所述方法包括:第三装置,用于构建任务描述信息,所述任务描述信息包括下列中的至少一种:接收地址信息、计算任务信息和发送地址信息;第四装置,用于向所述至少两个处理节点发送所述任务描述信息,以使得接收到所述任务描述信息的处理节点根据所述任务描述信息来进行节点间通信。
根据本公开的第三方面,提供一种基于多处理节点来进行节点间通信的系统,包括:多个处理节点,所述多个处理节点中的至少两个形成通信拓扑结构;以及主机,所述主机包括第二构建模块,所述第二构建模块包括:第三装置,用于构建任务描述信息,所述任务描述信息包括下列中的至少一种:接收地址信息、计算任务信息和发送地址信息;第四装置,用于向所述至少两个处理节点发送所述任务描述信息,以使得接收到所述任务描述信息的处理节点根据所述任务描述信息来进行节点间通信。
根据本公开的第四方面,提供一种电子设备,包括:一个或多个处理器;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如上所述的方法。
根据本公开的第五方面,提供一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如上所述的方法。
本公开中预申请资源的方法解决了分布式场景下多节点资源的一致化占用,减缓了处理设备部分节点资源申请不足带来的资源死锁现象;此外,还解决了处理设备数据接收、计算、发送的自动路由,而无需主机Host主动干预处理设备执行过程;对用户较为友好,无需用户了解硬件底层的硬件结构、描述符或者模板复杂配置过程,降低分布式任务(例如AllReduce)的开发复杂度。
本公开的另一个有益效果在于,将计算和通信任务拆分为接收、计算和发送三个部分,用户可以通过分别对接收、计算和发送这三个部分独立地进行配置和编程,从而能够实现复杂的多对一,一对多等通信场景。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1示出了根据本公开的一个实施方式的处理节点的示意性结构图;
图2示出了根据本公开一个实施方式的一个处理节点与其他处理节点的连接关系示意图;
图3示出了根据本公开的方法所能应用的系统环境示意图;
图4a示出了根据本公开的一个实施方式的基于多处理节点来构建通信拓扑结构的方法的流程图;
图4b示出了根据本公开的一个实施方式的基于多处理节点来构建通信拓扑结构的多处理节点系统的示意图;
图5a-图5c示出了根据本公开的一个实施方式的为单个节点设置多个节点配置信息的示意图,其中图5a示出了单个节点具有多个输入的情形;图5b示出了单个节点具有多个输出的情形;以及图5c示出了单个节点具有多个输入和多个输出的情形;
图6a至图6c分别示例性地示出了链式拓扑结构,环形拓扑结构和树形拓扑结构的示意图;
图7示出了根据本公开的一个实施方式的基于多处理节点来构建通信拓扑结构的设备;
图8a示出了根据本公开一个实施方式的基于多处理节点来进行节点间通信的方法;
图8b示出了根据本公开的一个实施方式的基于多处理节点来进行节点间通信的系统的示意图;
图9示出了根据本公开的一个实施方式的基于多处理节点来进行节点间通信的设备的框图;
图10示出了一种组合处理装置的示意性框图;以及
图11示出了一种板卡的示意性框图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
在本文中,处理设备可以是处理器、芯片、电路等任何能够对数据进行接收、计算和发送的装置、模块、设备和单元等。
图1示出了根据本公开的一个实施方式的处理节点的示意性结构图。
该处理节点可以是、可以包含或者可以包含于上述的处理设备。该处理节点可以包括通信装置100,该通信装置可以包括接收装置110、任务处理装置130、发送装置120以及存储器140;任务处理装置130一端连接接收装置110,另一端连接发送装置120;接收装置110、所述发送装置120分别与所述存储器140相连。
接收装置110可以从其他处理节点或者从上层的驱动接收数据,并将接收到的数据发送给任务处理装置130以进行计算得到待发送数据;存储器140用于存储所述通信所接收到的以及计算过程中的各种数据;发送装置130用于将这些数据发送出去。
需要理解的是,上面对每个处理节点的解释,仅仅是为了便于理解。在本公开的技术方案中,用户无需了解底层的硬件结构,也无需了解底层信号的解析过程。
图2示出了根据本公开一个实施方式的一个处理节点与其他处理节点的连接关系示意图。
在图2中,Z可以视为一个处理节点,该处理节点可以有多个端口,例如端口a-f,该处理节点Z可以通过这些端口分别连接到其他的处理节点A-F。处理节点Z与其他节点A-F之间的连接可以使能也可以禁用,从而形成不同的拓扑结构。例如,图2示出了处理节点Z与处理节点A和C之间的连接是使能的(以实线表示),而与其他处理节点B、D、E和F之间虽然也存在物理上的连接关系,但并不发生实际的通信(以虚线表示),由此形成的拓扑结构为(A,Z,C)。可以理解的是,处理节点Z也可以形成任何其他类型的拓扑结构,例如(F,Z,B)、(E,Z、A)、(A,Z,(B,C))等。对于拓扑结构(A,Z,(B,C)),其表示处理节点Z与处理A之间的连接是使能的,并且节点Z与节点B以及节点C之间的连接是使能的。
由上文中可以看出,通过改变每个处理节点与其他处理节点之间的连接的使能关系,可以方便地形成所需的拓扑结构。
图3示出了根据本公开的方法所能应用的系统环境示意图。
如图3所示,该系统可以包括主机和处理设备,处理设备可以与处理节点等同或者互相包含,因此,上下文中二者可以互换。需要理解的是,处理设备可以与主机结合起来形成一个系统,也可以是分立式的系统。用户可以在主机中进行编辑以对处理设备进行管理。主机中可以是采用通用计算机或专用计算机实现的,其中可以包含有集合通信原语,例如上文所述的AllReduce以及Allgather等;多种用户应用;以及节点间通信驱动。在处理设备中,可以包括节点间通信模块,节点间通信模块下为多种通信介质以及对应的端口,例如RoCE,Interlaken等。
在主机中,还包括了本公开的用户通信接口,可以通过该用户通信接口来对处理节点的通信进行管理,而无需每次都修改驱动程序。用户无需知道底层的硬件结构,也无需了解底层信号的解析过程。通过用户通信接口向内核层发送相应的信息,可以构建所需的拓扑结构,并且也可以在所构建的拓扑结构上进行节点间通信以及计算。
图8a示出了根据本公开一个实施方式的基于多处理节点来进行节点间通信的方法,其中,所述多个处理节点中的至少两个形成通信拓扑结构,所述方法包括:在操作S810,构建任务描述信息,所述任务描述信息包括下列中的至少一种:接收地址信息、计算任务信息和发送地址信息;以及,在操作S820,向所述至少两个处理节点发送所述任务描述信息,以使得接收到所述任务描述信息的处理节点根据所述任务描述信息来进行节点间通信。
图8b示出了根据本公开的一个实施方式的基于多处理节点来进行节点间通信的系统的示意图。
在图8b中,任务描述信息被发送给处理节点1、处理节点2……处理节点n等等。处理节点在接收到这些任务描述信息之后,根据这些任务描述信息进行通信和计算。从图8b中可以看出,用户可以在主机构建任务描述信息,并将任务描述信息发送给底层的处理节点,在此过程中,用户无需了解硬件底层的硬件结构、描述符或者模板复杂的配置过程,降低分布式任务(例如AllReduce)的开发复杂度。
首先,我们来描述拓扑结构,拓扑结构的类型可以包括任何类型,例如链式拓扑,环形拓扑,树形拓扑等等。
如图2所示,由于通过改变(使能或禁用)每个处理节点的连接关系,就能够形成不同的拓扑结构,因此,可以通过各种已知或者未来出现的方法来将多个处理节点形成所需的拓扑结构,例如可以通过改变每个处理节点之间的硬连接来建立不同的拓扑结构,也可以通过软件的方式来控制多个处理节点之间的路由关系,从而形成不同的拓扑结构。
图4a示出了根据本公开的一个实施方式的基于多处理节点来构建通信拓扑结构的方法的流程图;图4b示出了根据本公开的一个实施方式的基于多处理节点来构建通信拓扑结构的多处理节点系统的示意图。
如图4a所示,该方法包括:在操作S410,构建节点配置信息,所述节点配置信息包括上游节点信息、当前节点信息和下游节点信息;在操作S420,向至少两个处理节点发送所述节点配置信息,以构建所述通信拓扑结构。
首先可以在主机建立节点配置信息,该节点配置信息可以指示将要如何配置处理节点或者每个处理节点与其他处理节点之间的关系。在主机建立节点配置信息可以通过并行编程来实现。
根据本公开的一个实施方式,这里所述的“其他处理节点”可以是与一个处理节点具有连接关系的处理节点。假设将某个处理节点称为当前节点,那么向该当前节点发送数据或信息的处理节点则为该当前节点的上游节点,而从该当前节点接收数据或信息的处理节点则为该当前节点的下游节点,由此,具有上游节点信息、当前节点信息和下游节点信息的节点配置信息可以完整地描述某一个节点以及与该节点相邻的其他节点。
在两个处理节点的情况下,例如处理节点A和处理节点B并且处理节点A向B发送数据,数据在处理节点B处进行处理,则处理节点B为当前节点,处理节点A为处理节点B的上游节点,而处理节点B的下游节点为空。
可以理解的是,在上面两个处理节点A和B的情况下,如果以处理节点A为当前节点,那么处理节点B则为处理节点A的下游节点,而处理节点A的上游节点为空。
此外,还需要理解的是,“向至少两个处理节点发送”并不必然意味着直接向处理节点发送节点配置信息,而是例如可以发送给驱动,再由驱动直接或间接地发送给处理节点。任何能够使得节点配置信息能够到达处理节点的直接或间接的方式都属于本公开的保护范围之内。
当构建好该节点配置信息之后,如图4a和图4b所示,可以将节点配置信息发送到至少两个处理节点,从而通过多个处理节点来形成不同的拓扑网络。在图4b中,所构建的节点配置信息可以被发送给处理节点1、处理节点2……处理节点n等等。处理节点在接收到这些节点配置信息之后,形成不同的拓扑网络,并基于这些拓扑网络进行通信和处理数据。
在上面的方案中,只要在主机设置好了处理设备中处理节点的运行规则,则后续主机无需再参与处理节点间通信和数据的处理,从而减少了主机与设备之间的交互,提升了运行效率。
需要理解的是,图4b仅仅是主机和处理设备的一种示例,二者并不必须是如图4b所示的那样。例如,多个处理节点可以处于一个处理设备中,也可以处于多个处理设备中,并由一个或多个主机来进行控制;每个主机可以控制一个或多个处理节点,主机对处理节点的控制可以是串行的方式,也可以是并行的方式,例如可以逐个地对每个处理节点进行配置,也可以同时对多个处理节点进行配置。主机与处理节点的任何组合方式都在本公开的保护范围之内。
根据本公开的一个实施方式,所述上游节点信息用于指示向当前节点传送数据的处理节点,所述当前节点信息用于指示对所接收到的数据进行计算的处理节点,以及所述下游节点信息用于指示从所述当前节点接收计算后数据的处理节点。
以三个相互连接的处理节点A、B和C为例,其中处理节点A是处理节点B的上游节点,并向处理节点B发送数据;处理节点B发挥计算功能,在接收到来自于处理节点A的数据之后进行计算和处理;处理节点C为处理节点B的下游节点,在处理节点B对数据处理完毕之后,将处理后的数据发送给处理节点C。由此,可以向处理节点B发送节点配置信息,处理节点B在接收到该节点配置信息之后进行解析,从而获知向其发送数据的上游节点为处理节点A,其对接收到的数据进行计算和处理之后,要将这些数据发送给其下游的处理节点C。通过向每个处理节点发送这样的节点配置信息,则接收到该节点配置信息的处理节点将知晓其扮演的角色以及上下游节点的具体信息。由此,通过修改节点配置信息的内容,则可以布设出不同的网络拓扑,提升了网络拓扑设置的效率,降低了难度。
节点配置信息的形式可以有多种,根据本公开的一个实施方式,节点配置信息可以为队列元组的形式<上游节点,当前节点,下游节点>。如上所述,当将节点配置信息发送到每个处理节点时,该元组中包含的信息可以让接收到该节点配置信息的处理节点将知晓其扮演的角色以及上下游节点的具体信息。
根据本公开的另一个实施方式,节点配置信息可以为队列元组的形式<上游节点,下游节点>。在该实施方式中,省略了元素“当前节点”,这是因为可以将当前节点设置为默认,即节点配置信息发送到哪个处理节点,那么接收到该节点配置信息的处理节点就被默认为当前节点。
根据本公开的一个实施方式,针对单个处理节点的节点配置信息可以为多个,并且可以具有多个不同的上游节点信息和/或多个不同的下游节点信息。
图5a-图5c示出了根据本公开的一个实施方式的为单个节点设置多个节点配置信息的示意图,其中图5a示出了单个节点具有多个输入的情形;图5b示出了单个节点具有多个输出的情形;以及图5c示出了单个节点具有多个输入和多个输出的情形。
如图5a所示,节点Z为当前节点,其具有两个上游节点A和B,具有一个下游节点C,由此,为了实现这样的配置,发送给该处理节点Z的节点配置信息可以包括:以及其中符号表示空。在此实施方式中,处理节点Z可以从处理节点A和B接收数据,在该处理节点Z处进行计算和处理之后,将处理后的数据发送到处理节点C。此外,在图5a中,还示例性地以方框表示了对来自处理节点A和处理节点B的数据进行处理和计算的任务处理部分,这可以对应于图1中的任务处理装置,下文中将不再赘述。
如图5b所示,节点Z为当前节点,其具有一个上游节点A,具有两个下游节点C和D,由此,为了实现这样的配置,发送给该处理节点Z的节点配置信息可以包括:以及其中符号表示空。在此实施方式中,处理节点Z可以从处理节点A接收数据,在该处理节点Z处进行计算和处理之后,将处理后的数据发送到处理节点C和D。
如图5c所示,节点Z为当前节点,其具有两个上游节点A和B,具有两个下游节点C和D,由此,为了实现这样的配置,发送给该处理节点Z的节点配置信息可以包括:以及 其中符号表示空。在此实施方式中,处理节点Z可以从处理节点A和B接收数据,在该处理节点Z处进行计算和处理之后,将处理后的数据发送到处理节点C和D。
需要理解的是,上面举例说明的上游节点和下游节点为两个,但只要端口数量允许,本领域技术人员可以将上游节点和下游节点扩展为任意数量。此外,元组的形式也可以仅包括上游节点和下游节点而无需包括当前节点。
根据本公开的一个实施方式,所述上游节点信息和下游节点信息中的一个可以为空。
除了上述情况中上游节点或下游节点为空之外,还存在其他情形,例如当某个处理节点为拓扑结构中的端点时,则存在上游节点或下游节点为空的情况,这将在下文中进行更详细的描述。
根据本公开的一个实施方式,其中,向至少两个处理节点发送所述节点配置信息,以构建通信拓扑结构包括:向所有处理节点中的至少一部分处理节点发送不同的节点配置信息,以将所述至少一部分处理节点构建为不同的通信拓扑结构。
从上面的描述中可以看到,通过向每个处理节点发送不同的节点配置信息,可以使得接收到节点配置信息的处理节点形成不同的连接关系,由此,通过向多个处理节点发送节点配置信息,可以形成更为复杂和多样的拓扑结构。
图6a至图6c分别示例性地示出了链式拓扑结构,环形拓扑结构和树形拓扑结构的示意图。
如图6a所示,处理节点A、B和C构成了一种链式拓扑结构。这三个处理节点A、B和C依次串行连接,其中对于处理节点A是一个端点,其节点配置信息为这表示处理节点A为当前节点,其上游节点为空,下游节点为处理节点B;类似地,对于处理节点B,其节点配置信息为<A,B,C>,这表示处理点B为当前节点,其上游节点为处理节点A,下游节点为处理节点C;类似地,对于处理节点C,其节点配置信息为这表示处理点C为当前节点,其上游节点为处理节点B,下游节点为空。
如图6b所示,处理节点A、B、C构成了一种环形拓扑结构。这三个处理节点A、B和C依次串行连接,并且处理节点A和C连接,从而形成环形结构。其中对于处理节点A的节点配置信息为<C,A,B>,这表示处理节点A为当前节点,其上游节点为处理节点C,下游节点为处理节点B;类似地,对于处理节点B,其节点配置信息为<A,B,C>,这表示处理点B为当前节点,其上游节点为处理节点A,下游节点为处理节点C;类似地,对于处理节点C,其节点配置信息为<B,C,A>,这表示处理点C为当前节点,其上游节点为处理节点B,下游节点为处理节点A。
如图6c所示,处理节点A、B、C、D构成了一种树形拓扑结构。其中处理节点A、B分别与处理节点C相连接,并且处理节点D与处理节点C相连接。其中对于处理节点A的节点配置信息为这表示处理节点A为当前节点,其上游节点为空,下游节点为处理节点C。类似地,对于处理节点B,其节点配置信息为这表示处理点B为当前节点,其上游节点为空,下游节点为处理节点C。
对于处理节点C,由于其具有两个输入和一个输出,因此需要有三组节点配置信息,分别为以及其中节点配置信息表示当前节点为C,其具有上游节点A;节点配置信息表示当前节点为C,其具有上游节点B;节点配置信息 表示当前节点为C,其具有下游节点D。
需要理解的是,上面的图6a-图6c仅仅是多种拓扑结构中的几种示例,本领域技术人员可以通过修改节点配置信息并将这些节点配置信息下发给不同的节点而构建出各种所需的拓扑结构。此外,为简洁起见,图6a至图6c中省略了图5a-图5c中的任务处理部分。
这样的配置方式,便于用户通过简单的方式来构建出不同的拓扑结构,从而简化了操作,提升了效率。
根据本公开的一个实施方式,构建通信拓扑结构可以包括使得所述通信拓扑结构中的处理节点预留资源。
在根据上面的方式构建了通信拓扑结构后,可以为构建好的拓扑结构中的所有处理节点预留资源,例如通信资源和/或寄存器资源。这些资源可用于处理节点后续所进行的通信、存储、计算等等,使得处理节点无需在处理过程中临时申请资源,从而使得后续的处理效率更高。
上文所述的通信资源可以包括:节点间通信所需的端口和/或信道。通信端口就是两个处理节点间物理连线的网络介质端口模块。通信信道是两个处理节点所匹配的发送和接收装置中间的虚拟通信链路,通俗讲是从一大组DMA中选择了哪个发送DMA模块,哪个接收DMA模块。
寄存器资源可以包括用于存储任务描述信息的存储空间,所述任务描述信息用于指示所构建的通信拓扑结构中每个处理节点所要执行的操作。任务描述信息例如可以是规定每个处理节点应当执行什么操作(发送、计算还是接收等),如何执行操作,何时执行操作等。
图7示出了根据本公开的一个实施方式的基于多处理节点来构建通信拓扑结构的设备,包括:第一装置M710,配置为构建节点配置信息,所述节点配置信息包括上游节点信息、当前节点信息和下游节点信息;以及第二装置M720,配置为向至少两个处理节点发送所述节点配置信息,以构建通信拓扑结构。
上述的设备,可以通过软件、硬件或者固件等来实现,以实现如图4所示的功能。该设备可以设置或集成在任何其他设备中,例如主机或者服务器中。
由此,本公开还提供了一种基于多处理节点来构建通信拓扑结构的系统,包括:多个处理节点;以及主机,所述主机包括构建模块,所述构建模块包括:第一装置M710,用于构建节点配置信息,所述节点配置信息包括上游节点信息、当前节点信息和下游节点信息;第二装置M720,向至少两个处理节点发送所述节点配置信息,以构建通信拓扑结构。
当需要向某个处理节点发送多个任务描述信息时,主机可以将下发至同一处理节点的多个任务描述信息打包形成一个工作请求(Work Request,WR),作为一个任务下发至处理设备的处理节点,对于不同的处理节点,可以下发不同的工作请求。一旦处理节点接收到任务描述信息,则所有的R-C-S过程将全部在处理设备进行,从而无需主机的参与即可实现通信。
上面的内容介绍了如何构建不同的拓扑结构,下面将详细描述如何在构建好的拓扑结构中进行节点间通信。
如图4-图7所示,构建好的拓扑结构中的每个处理节点都会知晓其上游节点和下游节点的信息,接下来,可以对这些处理节点(上游节点,当前节点和下游节点)的任务描述信息进行配置,以使得这些构建好的处理节点能够开始进行通信和计算。
构建任务描述信息可以是构建上游节点的信息,当前节点的信息以及下游节点的信息,即R-C-S信息。R表示接收地址信息,其用于描述负责接收数据的处理节点,C表示计算任务信息,其用于描述负责计算任务的处理节点,以及,S表示发送节点信息,其用于描述负责发送数据的处理节点。
需要理解的是,上述的信息可以仅是其中一种或多种,可以仅包括接收地址信息,可以仅仅包括计算任务信息,或者可以仅仅包括发送地址信息。例如,发送地址信息可以是默认的,因此无需每次都包括新的发送地址信息;又例如,接收地址信息也可以是默认的,由此无需包括接收地址信息。因此,任务描述信息可以有多种多样,可以是<R>、<C>、<S>、<R,C>、<R,S>、<C,S>、<R,C,S>等。
接收地址信息R用于指示当前处理节点在接收到数据后将所述数据存放的内存地址和大小。每个处理节点在接收到该接收地址信息R之后,可以知晓从上游节点接收到的数据应当存储的具体地址,从而便于后续的计算操作从适合的存储空间获取相应的数据。
类似地,所述发送地址信息S用于指示待发送数据的内存地址和大小。每个处理节点在接收到发送地址信息S之后,可以知晓将要向下游节点发送的数据存储的具体地址,从而在发送数据的时候寻址到具体的存储空间。
计算任务信息C用于指示计算函数入口地址和计算函数参数。这里所述的计算函数,可以是加法函数、减法函数、乘法函数、除法函数、最大值函数、最小值函数、逻辑与或非函数中的任意一种。需要理解的是,上面的函数类型仅仅是一种示例性说明,并非是穷举,任何类型的计算函数都包含在本公开的范围之内。
计算函数参数包括下列中的至少一种:待计算数据的地址、计算结果的输出地址以及计算操作的数据类型。以加法函数为例,待计算数据的地址可以是两个加数的输入地址,计算结果的输出地址为加法所得之和的输出地址,计算操作的输出类型例如可以是浮点型、整型等等,包括但不限于Float8,Float16,Float32,Fix8,Fix16,Fix32等等。
根据本公开的一个实施方式,所述计算函数参数进一步包括调度信息,以对处理节点的计算操作进行管理和调度。
根据本公开的一个实施方式,所述调度信息包括下列中的至少一种:计算资源被占用的数量、计算资源被使用的优先级以及多任务中每个任务的优先级。计算资源可以是计算核等任何能够对数据进行计算的装置。
例如,在多计算资源(例如多处理器或多核处理器)的环境下,该调度信息可以指示参与计算的计算资源的数量,在较高工作负载的情况下,可以使得更多的计算资源参与工作,而在较低工作负载的情况下,减少计算资源的使用数量。
计算资源被占用的优先级可以是指接收到计算任务时,优先为该计算任务分配哪个计算资源,可以根据计算资源的负担以及计算资源将要完成上一任务的时长来确定计算资源的优先级,例如可以优先分配计算负担较小的计算资源,并且可以将在较短时间内完成上一计算任务的计算资源作为优先级较高的计算资源。
多任务中每个任务的优先级可以是指示每个任务被处理的先后顺序,例如可以将计算时间相似的任务在多个计算资源中进行优先计算,以增加数据的并行计算能力,缩短计算时长。
向所述至少两个处理节点发送所述任务描述信息包括,以队列的形式向所述至少两个处理节点发送所述任务描述信息,以便于所述任务描述信息被保序地执行。
以队列的形式发送任务描述信息,处理节点可以按照队列的顺序来执行。此外,将不同用户的任务描述信息设置在不同的队列中,每个队列按照相应的顺序执行,而不同队列又可以并行执行,这样就会避免不同用户的任务被串行执行导致的互相干扰,也会避免了通信效率降低。
任务描述信息,例如R-C-S,是更高层次的通信描述方式,指导了底层发送、接收、控制装置如何配置,并且隐式告知了底层装置的相互触发关系。R和S部分可以展开为接收装置和发送装置所需的通信描述符,C部分可以展开为任务处理装置的运算控制信息,运算控制信息又可以包含通信控制指令和运算控制指令。
R、S部分的地址信息,可以转换成硬件可以识别的通信描述符。具体来讲,R部分可以是上游节点通信描述符的目的地址。S部分是当前节点通信描述符的源地址。
C部分可以包含大部分任务处理装置所需运算控制信息的运算控制指令,例如指导一个加法函数在哪里执行、怎么执行、加法所需输入的数据地址和数据写回的地址。
根据本公开的一个实施方式,所述任务描述信息进一步包括同步信息,用于使得处理节点在接收到至少两个参与计算的数据之后再进行计算操作。
R-C-S描述方法还能进一步通过前述拓扑结构信息隐式分析出额外的运算控制信息。例如在树形结构的示例(如图6c所示),2个输入1个输出的情况中,可以额外分析出:两个不同的上游节点的数据到达后,由于到达顺序和时机不同,接收到数据后直接执行计算操作(例如加法运算操作)将导致输入数据缺失。例如处理节点A和处理节点B同时将数据发送给处理节点C,并且在处理节点C处进行计算操作。当处理节点A的数据块x到达处理节点C后,处理节点B的数据块y很大概率还没有到达处理节点C,此时执行计算操作会引起错误。因此,通过拓扑结构信息隐式分析出这类多对一的情形后,将在计算操作执行前自动加入额外的同步操作运算控制信息,只有当处理节点A的数据块x和处理节点B的数据y均到达处理节点后,计算操作才会被执行。该同步操作运算控制信息可以加入到任务描述信息中(例如在主机编程时),例如可以通过条件语句的方式,及当前节点的上游节点为多个时,则自动加入同步操作运算控制信息;或者,可以手动地为每个多输入情况加入同步操作运算控制信息。需要理解的是,上文中“接收到参与计算的数据之后”可以有多种情况:第一,如果参与计算的是两个数据,那么需要接收到参与计算的全部数据才进行计算;第二,如果参与计算的是两个以上的数据,那么可以是在接收都参与计算的全部数据之后再进行计算,也可以是在接收到参与计算的部分数据之后即开始进行计算,例如对于连加操作A+B+C+D,如果某一时刻接收到了数据B和数据D,但尚未接收到数据A和数据C,那么可以首先开始进行数据B和数据D的加法操作,并将结果进行缓存,当接收到数据A和/或数据C时,再进行进一步的加法操作,从而得到最终的结果。第二种方式有利于减少等待时间,提升运算效率。
图9示出了根据本公开的一个实施方式的基于多处理节点来进行节点间通信的设备的框图,其中,所述多个处理节点中的至少两个形成通信拓扑结构,所述设备包括:第三装置M910,用于构建任务描述信息,所述任务描述信息包括下列中的至少一种:接收地址信息、计算任务信息和发送地址信息;第四装置M920,用于向所述至少两个处理节点发送所述任务描述信息,以使得接收到所述任务描述信息的处理节点根据所述任务描述信息来进行节点间通信。
第三装置M910和第四装置M920可以实现在如图8b所述的系统中,分别执行操作S810和S820。
由此,本公开还提供一种基于多处理节点来进行节点间通信的系统,其中,所述多个处理节点中的至少两个形成通信拓扑结构,所述系统包括:多个处理节点,所述多个处理节点中的至少两个形成通信拓扑结构;以及主机,所述主机包括第二构建模块,所述第二构建模块包括:第三装置M910,用于构建任务描述信息,所述任务描述信息包括下列中的至少一种:接收地址信息、计算任务信息和发送地址信息;第四装置M920,用于向所述至少两个处理节点发送所述任务描述信息,以使得接收到所述任务描述信息的处理节点根据所述任务描述信息来进行节点间通信。
需要理解的是,该主机还可以进一步包括第一装置M710和第二装置M720,从而通过第一装置和第二装置来建立所需的拓扑结构,然后通过第三装置M910和第四装置M920来进行节点间通信。
根据本公开的另一个方面,还提供一种电子设备,包括:一个或多个处理器;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如上所述的方法。
根据本公开的又一个方面,还提供一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如上所述的方法。
本公开中预申请资源的方法解决了分布式场景下多节点资源的一致化占用,减缓了处理设备部分节点资源申请不足带来的资源死锁现象;此外,还解决了处理设备数据接收、计算、发送的自动路由,而无需主机Host主动干预处理设备执行过程;对用户较为友好,无需用户了解硬件底层的硬件结构、描述符或者模板复杂的过程,降低分布式任务(例如AllReduce)的开发复杂度。
本公开的技术方案可应用于人工智能领域,实现在主机中、服务器中,或者实现为或者实现在人工智能芯片中。该芯片可以单独存在,也可以包含在通信配置装置1002中。
图10示出了一种组合处理装置1000,其包括上述的通信配置装置1002,互联接口1004,和其他处理装置1006。根据本公开的通信配置装置与其他处理装置进行交互,共同完成用户指定的操作。图10为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习通信配置装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习通信配置装置的开启、停止等基本控制;其他处理装置也可以和机器学习通信配置装置协作共同完成计算任务。
互联接口,用于在通信配置装置(包括例如机器学习通信配置装置)与其他处理装置间传输数据和控制指令。该通信配置装置从其他处理装置中获取所需的输入数据,写入该通信配置装置片上的存储装置;可以从其他处理装置中获取控制指令,写入通信配置装置片上的控制缓存;也可以读取通信配置装置的存储模块中的数据并传输给其他处理装置。
可选的,该结构还可以包括存储装置1008,存储装置分别与所述通信配置装置和所述其他处理装置连接。存储装置用于保存在所述通信配置装置和所述其他处理装置的数据,尤其适用于所需要计算的数据在本通信配置装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,本披露还公开了一种板卡,其包括了芯片封装结构。参阅图11,其提供了一种示例性的板卡,上述板卡除了包括芯片1102以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件1104、接口装置1106和控制器件1108。
所述存储器件与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元1110。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备912(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。在另一个实施例中,所述接口装置还可以是其他的接口,本披露并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
在一些实施例里,本披露还公开了一种电子设备或装置,其包括了上述板卡。
电子设备或装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本披露所提供的几个实施例中,应该理解到,所披露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、光学、声学、磁性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本披露各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,当本披露的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。
依据以下条款可更好地理解前述内容:
条款1.一种基于多处理节点来进行节点间通信的方法,其中,所述多个处理节点中的至少两个形成通信拓扑结构,所述方法包括:
构建任务描述信息,所述任务描述信息包括下列中的至少一种:接收地址信息、计算任务信息和发送地址信息;
向所述至少两个处理节点发送所述任务描述信息,以使得接收到所述任务描述信息的处理节点根据所述任务描述信息来进行节点间通信。
条款2.根据条款1所述的方法,其中,
所述接收地址信息用于指示所述处理节点在接收到数据后将所述数据存放的内存地址和大小;
所述计算任务信息用于指示计算函数入口地址和计算函数参数;以及
所述发送地址信息用于指示待发送数据的内存地址和大小。
条款3.根据条款2所述的方法,其中,所述计算函数入口地址包括如下函数入口地址的至少一种:加法函数、减法函数、乘法函数、除法函数、最大值函数、最小值函数、逻辑与或非函数。
条款4.根据条款2所述的方法,其中,所述计算函数参数包括下列中的至少一种:待计算数据的地址、计算结果的输出地址以及计算操作的数据类型。
条款5.根据条款2-4中任意一项所述的方法,其中,所述计算函数参数进一步包括调度信息。
条款6.根据条款5所述的方法,其中,所述调度信息包括下列中的至少一种:计算资源被占用的数量、计算资源被使用的优先级以及多任务中每个任务的优先级。
条款7.根据条款1-6中任意一项所述的方法,其中,向所述至少两个处理节点发送所述任务描述信息包括,以队列的形式向所述至少两个处理节点发送所述任务描述信息,以便于所述任务描述信息被保序地执行。
条款8.根据条款1-7中任意一项所述的方法,其中,多个处理节点中的至少两个是通过如下方式来形成通信拓扑结构的:
构建节点配置信息,所述节点配置信息包括上游节点信息、当前节点信息和下游节点信息;
向至少两个处理节点发送所述节点配置信息,以构建所述通信拓扑结构。
条款9.根据条款8所述的方法,其中,
所述上游节点信息用于指示向当前节点传送数据的处理节点,所述当前节点信息用于指示对所接收到的数据进行计算的处理节点,以及所述下游节点信息用于指示从所述当前节点接收计算后数据的处理节点。
条款10.根据条款8所述的方法,其中,所述节点配置信息为队列元组的形式<上游节点,下游节点>或<上游节点,当前节点,下游节点>。
条款11.根据条款8所述的方法,其中,针对单个处理节点的节点配置信息为多个,并且具有多个不同的上游节点信息和/或多个不同的下游节点信息。
条款12.根据条款8-11中任意一项所述的方法,其中,所述上游节点信息和下游节点信息中的一个为空。
条款13.根据条款8-12中任意一项所述的方法,其中,向至少两个处理节点发送所述节点配置信息,以构建通信拓扑结构包括:
向所有处理节点中的至少一部分处理节点发送不同的节点配置信息,以将所述至少一部分处理节点构建为不同的通信拓扑结构。
条款14.根据条款1-13中任意一项所述的方法,其中,所述通信拓扑结构包括链式拓扑结构、环形拓扑结构和树形拓扑结构中的至少一个。
条款15.根据条款8-14中任意一项所述的方法,其中,构建通信拓扑结构包括使得所述通信拓扑结构中的处理节点预留资源。
条款16.根据条款15所述的方法,其中,所述资源包括通信资源和/或寄存器资源。
条款17.根据条款16所述的方法,其中,
所述通信资源包括:节点间通信所需的端口和/或信道;
所述寄存器资源包括:用于存储所述任务描述信息的存储空间,所述任务描述信息用于指示所构建的通信拓扑结构中每个处理节点所要执行的操作。
条款18.根据条款17所述的方法,其中,所述存储空间以队列的形式存储所述任务描述信息。
条款19.根据条款1-18中任意一项所述的方法,其中,所述任务描述信息进一步包括同步信息,用于使得处理节点在接收到至少两个参与计算的数据之后再进行计算操作。
条款20.一种基于多处理节点来进行节点间通信的设备,其中,所述多个处理节点中的至少两个形成通信拓扑结构,所述设备包括:
第三装置,用于构建任务描述信息,所述任务描述信息包括下列中的至少一种:接收地址信息、计算任务信息和发送地址信息;
第四装置,用于向所述至少两个处理节点发送所述任务描述信息,以使得接收到所述任务描述信息的处理节点根据所述任务描述信息来进行节点间通信。
条款21.一种基于多处理节点来进行节点间通信的系统,包括:
多个处理节点,所述多个处理节点中的至少两个形成通信拓扑结构;以及
主机,所述主机包括第二构建模块,所述第二构建模块包括:
第三装置,用于构建任务描述信息,所述任务描述信息包括下列中的至少一种:接收地址信息、计算任务信息和发送地址信息;
第四装置,用于向所述至少两个处理节点发送所述任务描述信息,以使得接收到所述任务描述信息的处理节点根据所述任务描述信息来进行节点间通信。
条款22.一种电子设备,包括:
一个或多个处理器;以及
存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如条款1-19中任意一项所述的方法。
条款23.一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如条款1-19中任意一项所述的方法。
Claims (22)
1.一种基于多个处理节点来进行节点间通信的方法,其中,所述多个处理节点中的至少两个形成通信拓扑结构,所述方法包括:
构建任务描述信息,所述任务描述信息包括:接收地址信息、计算任务信息和发送地址信息;
向所述至少两个处理节点发送所述任务描述信息,以使得接收到所述任务描述信息的处理节点根据所述任务描述信息来进行节点间通信;
其中,
所述接收地址信息用于指示所述处理节点在接收到数据后将所述数据存放的内存地址和大小;
所述计算任务信息用于指示计算函数入口地址和计算函数参数;以及
所述发送地址信息用于指示待发送数据的内存地址和大小。
2.根据权利要求1所述的方法,其中,所述计算函数入口地址包括如下函数入口地址的至少一种:加法函数、减法函数、乘法函数、除法函数、最大值函数、最小值函数、逻辑与或非函数。
3.根据权利要求1所述的方法,其中,所述计算函数参数包括下列中的至少一种:待计算数据的地址、计算结果的输出地址以及计算操作的数据类型。
4.根据权利要求1所述的方法,其中,所述计算函数参数进一步包括调度信息。
5.根据权利要求4所述的方法,其中,所述调度信息包括下列中的至少一种:计算资源被占用的数量、计算资源被使用的优先级以及多任务中每个任务的优先级。
6.根据权利要求1所述的方法,其中,向所述至少两个处理节点发送所述任务描述信息包括,以队列的形式向所述至少两个处理节点发送所述任务描述信息,以便于所述任务描述信息被保序地执行。
7.根据权利要求1-6中任意一项所述的方法,其中,多个处理节点中的至少两个是通过如下方式来形成通信拓扑结构的:
构建节点配置信息,所述节点配置信息包括上游节点信息、当前节点信息和下游节点信息;
向至少两个处理节点发送所述节点配置信息,以构建所述通信拓扑结构。
8.根据权利要求7所述的方法,其中,
所述上游节点信息用于指示向当前节点传送数据的处理节点,所述当前节点信息用于指示对所接收到的数据进行计算的处理节点,以及所述下游节点信息用于指示从所述当前节点接收计算后数据的处理节点。
9.根据权利要求7所述的方法,其中,所述节点配置信息为队列元组的形式<上游节点,下游节点>或<上游节点,当前节点,下游节点>。
10.根据权利要求7所述的方法,其中,针对单个处理节点的节点配置信息为多个,并且具有多个不同的上游节点信息和/或多个不同的下游节点信息。
11.根据权利要求7所述的方法,其中,所述上游节点信息和下游节点信息中的一个为空。
12.根据权利要求7所述的方法,其中,向至少两个处理节点发送所述节点配置信息,以构建通信拓扑结构包括:
向所有处理节点中的至少一部分处理节点发送不同的节点配置信息,以将所述至少一部分处理节点构建为不同的通信拓扑结构。
13.根据权利要求1所述的方法,其中,所述通信拓扑结构包括链式拓扑结构、环形拓扑结构和树形拓扑结构中的至少一个。
14.根据权利要求7所述的方法,其中,构建通信拓扑结构包括使得所述通信拓扑结构中的处理节点预留资源。
15.根据权利要求14所述的方法,其中,所述资源包括通信资源和/或寄存器资源。
16.根据权利要求15所述的方法,其中,
所述通信资源包括:节点间通信所需的端口和/或信道;
所述寄存器资源包括:用于存储所述任务描述信息的存储空间,所述任务描述信息用于指示所构建的通信拓扑结构中每个处理节点所要执行的操作。
17.根据权利要求16所述的方法,其中,所述存储空间以队列的形式存储所述任务描述信息。
18.根据权利要求1所述的方法,其中,所述任务描述信息进一步包括同步信息,用于使得处理节点在接收到至少两个参与计算的数据之后再进行计算操作。
19.一种基于多个处理节点来进行节点间通信的设备,其中,所述多个处理节点中的至少两个形成通信拓扑结构,所述设备包括:
第三装置,用于构建任务描述信息,所述任务描述信息包括:接收地址信息、计算任务信息和发送地址信息;
第四装置,用于向所述至少两个处理节点发送所述任务描述信息,以使得接收到所述任务描述信息的处理节点根据所述任务描述信息来进行节点间通信;
其中,
所述接收地址信息用于指示所述处理节点在接收到数据后将所述数据存放的内存地址和大小;
所述计算任务信息用于指示计算函数入口地址和计算函数参数;以及
所述发送地址信息用于指示待发送数据的内存地址和大小。
20.一种基于多个处理节点来进行节点间通信的系统,包括:
多个处理节点,所述多个处理节点中的至少两个形成通信拓扑结构;以及
主机,所述主机包括第二构建模块,所述第二构建模块包括:
第三装置,用于构建任务描述信息,所述任务描述信息包括:接收地址信息、计算任务信息和发送地址信息;
第四装置,用于向所述至少两个处理节点发送所述任务描述信息,以使得接收到所述任务描述信息的处理节点根据所述任务描述信息来进行节点间通信;
其中,
所述接收地址信息用于指示所述处理节点在接收到数据后将所述数据存放的内存地址和大小;
所述计算任务信息用于指示计算函数入口地址和计算函数参数;以及
所述发送地址信息用于指示待发送数据的内存地址和大小。
21.一种电子设备,包括:
一个或多个处理器;以及
存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如权利要求1-18中任意一项所述的方法。
22.一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如权利要求1-18中任意一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010334759.9A CN113556242B (zh) | 2020-04-24 | 2020-04-24 | 一种基于多处理节点来进行节点间通信的方法和设备 |
EP21793297.9A EP4142217A4 (en) | 2020-04-24 | 2021-03-15 | INTERNODE COMMUNICATION METHOD AND APPARATUS BASED ON MULTIPLE PROCESSING NODES |
PCT/CN2021/080888 WO2021213075A1 (zh) | 2020-04-24 | 2021-03-15 | 一种基于多处理节点来进行节点间通信的方法和设备 |
US17/920,940 US20230153157A1 (en) | 2020-04-24 | 2021-03-15 | Inter-node communication method and device based on multiple processing nodes |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010334759.9A CN113556242B (zh) | 2020-04-24 | 2020-04-24 | 一种基于多处理节点来进行节点间通信的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113556242A CN113556242A (zh) | 2021-10-26 |
CN113556242B true CN113556242B (zh) | 2023-01-17 |
Family
ID=78101327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010334759.9A Active CN113556242B (zh) | 2020-04-24 | 2020-04-24 | 一种基于多处理节点来进行节点间通信的方法和设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230153157A1 (zh) |
EP (1) | EP4142217A4 (zh) |
CN (1) | CN113556242B (zh) |
WO (1) | WO2021213075A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115118727B (zh) * | 2022-08-26 | 2022-11-29 | 北京数牍科技有限公司 | 分布式计算架构的数据传输方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010165022A (ja) * | 2009-01-13 | 2010-07-29 | Ricoh Co Ltd | プロセッサ間通信装置、プロセッサ間通信方法、プログラムおよび記録媒体 |
CN103905337A (zh) * | 2014-03-31 | 2014-07-02 | 华为技术有限公司 | 一种网络资源的处理装置、方法和系统 |
CN104301434A (zh) * | 2014-10-31 | 2015-01-21 | 浪潮(北京)电子信息产业有限公司 | 一种基于集群的高速通信架构及方法 |
CN105955710A (zh) * | 2016-04-22 | 2016-09-21 | 广州市长程软件有限公司 | 基于树形通讯结构的并行仿真数据处理方法 |
CN108805795A (zh) * | 2017-05-05 | 2018-11-13 | 英特尔公司 | 用于机器学习的硬件实现的点对点通信原语 |
CN109828841A (zh) * | 2019-01-21 | 2019-05-31 | 南京航空航天大学 | 一种cfd并行计算方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9250973B2 (en) * | 2009-03-12 | 2016-02-02 | Polycore Software, Inc. | Apparatus and associated methodology of generating a multi-core communications topology |
CN104581818A (zh) * | 2014-12-30 | 2015-04-29 | 中国科学院深圳先进技术研究院 | 一种基于移动终端的流量交换方法和系统 |
US20180322386A1 (en) * | 2017-05-05 | 2018-11-08 | Intel Corporation | Fine-grain compute communication execution for deep learning frameworks |
JP7003539B2 (ja) * | 2017-09-28 | 2022-01-20 | 京セラドキュメントソリューションズ株式会社 | アドホックネットワーク経路構築システム、ノード、センターノード及びアドホックネットワーク経路構築方法 |
-
2020
- 2020-04-24 CN CN202010334759.9A patent/CN113556242B/zh active Active
-
2021
- 2021-03-15 US US17/920,940 patent/US20230153157A1/en active Pending
- 2021-03-15 EP EP21793297.9A patent/EP4142217A4/en active Pending
- 2021-03-15 WO PCT/CN2021/080888 patent/WO2021213075A1/zh unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010165022A (ja) * | 2009-01-13 | 2010-07-29 | Ricoh Co Ltd | プロセッサ間通信装置、プロセッサ間通信方法、プログラムおよび記録媒体 |
CN103905337A (zh) * | 2014-03-31 | 2014-07-02 | 华为技术有限公司 | 一种网络资源的处理装置、方法和系统 |
CN104301434A (zh) * | 2014-10-31 | 2015-01-21 | 浪潮(北京)电子信息产业有限公司 | 一种基于集群的高速通信架构及方法 |
CN105955710A (zh) * | 2016-04-22 | 2016-09-21 | 广州市长程软件有限公司 | 基于树形通讯结构的并行仿真数据处理方法 |
CN108805795A (zh) * | 2017-05-05 | 2018-11-13 | 英特尔公司 | 用于机器学习的硬件实现的点对点通信原语 |
CN109828841A (zh) * | 2019-01-21 | 2019-05-31 | 南京航空航天大学 | 一种cfd并行计算方法 |
Non-Patent Citations (1)
Title |
---|
一个轻量级分布式机器学习系统的设计与实现;宋匡时;《计算机工程》;20200115;全文 * |
Also Published As
Publication number | Publication date |
---|---|
EP4142217A4 (en) | 2024-05-15 |
US20230153157A1 (en) | 2023-05-18 |
EP4142217A1 (en) | 2023-03-01 |
CN113556242A (zh) | 2021-10-26 |
WO2021213075A1 (zh) | 2021-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11669372B2 (en) | Flexible allocation of compute resources | |
RU2597556C2 (ru) | Структура компьютерного кластера для выполнения вычислительных задач и способ функционирования указанного кластера | |
WO2020078470A1 (zh) | 片上网络数据处理方法及装置 | |
CN104820657A (zh) | 一种基于嵌入式异构多核处理器上的核间通信方法及并行编程模型 | |
KR101950786B1 (ko) | 분산처리용 인공신경망 연산 가속화 방법 | |
CN110750351A (zh) | 多核任务调度器、多核任务调度方法、装置及相关产品 | |
CN112686379B (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN111767995B (zh) | 运算方法、装置及相关产品 | |
CN110059797A (zh) | 一种计算装置及相关产品 | |
CN109726800B (zh) | 运算方法、装置及相关产品 | |
CN113556242B (zh) | 一种基于多处理节点来进行节点间通信的方法和设备 | |
CN111209244B (zh) | 数据处理装置及相关产品 | |
WO2021213076A1 (zh) | 基于多处理节点来构建通信拓扑结构的方法和设备 | |
CN117493237A (zh) | 计算设备、服务器、数据处理方法和存储介质 | |
CN112805727A (zh) | 分布式处理用人工神经网络运算加速装置、利用其的人工神经网络加速系统、及该人工神经网络的加速方法 | |
CN113672549B (zh) | 一种基于非共享存储多核处理器的微系统架构 | |
CN111340202B (zh) | 运算方法、装置及相关产品 | |
CN111078286A (zh) | 数据通信方法、计算系统和存储介质 | |
CN111078625B (zh) | 片上网络处理系统和片上网络数据处理方法 | |
CN111078623B (zh) | 片上网络处理系统和片上网络数据处理方法 | |
CN111078624B (zh) | 片上网络处理系统和片上网络数据处理方法 | |
CN111209230B (zh) | 数据处理装置、方法及相关产品 | |
CN111210011B (zh) | 数据处理装置及相关产品 | |
CN111209245B (zh) | 数据处理装置、方法及相关产品 | |
WO2024012280A1 (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 |