CN111770173B - 一种基于网络控制器的归约方法及系统 - Google Patents
一种基于网络控制器的归约方法及系统 Download PDFInfo
- Publication number
- CN111770173B CN111770173B CN202010604973.1A CN202010604973A CN111770173B CN 111770173 B CN111770173 B CN 111770173B CN 202010604973 A CN202010604973 A CN 202010604973A CN 111770173 B CN111770173 B CN 111770173B
- Authority
- CN
- China
- Prior art keywords
- reduction
- node
- descriptor
- network controller
- message
- 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
Images
Classifications
-
- 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
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于网络控制器的归约方法及系统,本发明基于归约软件向网络控制器硬件提交归约描述符和广播描述符来实现,使所有节点根据归约描述符确定本节点的类型为叶节点、中间节点或根节点,且根据交归约描述符和广播描述符中的描述信息来分别完成对应的归约计算操作,且所有描述符执行完毕后,网络控制器硬件向归约软件返回归约结果;本发明基于网络控制器的聚合通信归约操作卸载方法原理简单、操作方便、硬件设计复杂度低,可实现硬件自主完成聚合通信归约操作,可加速大规模并行程序中归约操作的性能。
Description
技术领域
本发明属于高性能互连网络领域,特别涉及一种基于网络控制器的归约方法及系统。
背景技术
在现代大规模并行应用程序中,聚合通信操作因为可以简化并行编程,提高通信性能等优点被广泛采用。由于软件中的聚合通信操作基于点对点实现,因此在大规模系统中,存在时延较长,扩展性差等缺点。因此,为优化聚合通信操作性能,基于硬件卸载的聚合通信技术被提出并广泛采用。
当前大规模系统中,不同网络平台实现归约等聚合通信操作的硬件卸载技术各有不同,主要包含以下几种方法:(1)BlueGene系统上聚合通信操作的卸载。BlueGene系列超级并行系统主要采用torus网络结构,针对每一节点,都设置有单独的DMA部件卸载聚合通信操作,进行消息的接收与处理;当聚合通信操作不满足于torus结构,BlueGene系统还实现了如全局操作树结构的专用聚合通信网络以满足对归约等聚合通信操作的卸载。(2)QsNet网络系统上聚合通信操作的卸载。QsNet系统通过在网卡端集成专用芯片来实现聚合通信操作的硬件卸载。专用芯片中嵌入有RISC处理器,因此可直接在网卡端实现归约操作等聚合通信事务。(3)Portals上的聚合通信卸载优化。该系统通过在网卡端集成Portals单元和DMA部件,使聚合通信操作卸载到硬件上执行。其中,DMA部件负责数据的接收和发送,Portals单元中集成有浮点计算单元(FPU),可以进行简单的数据运算,使归约操作在网卡端实现。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种原理简单、操作方便、简化硬件设计复杂度、有效提高系统计算和通信的重叠率和归约等聚合通信操作性能的基于网络控制器的归约方法及系统。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于网络控制器的归约方法,包括:
1)由并行程序的一次MPI归约调用开始进入MPI调用,进入MPI调用后,归约软件构造归约通信域,将参与线程与物理节点的映射关系发送给所有参与归约的节点;
2)基于归约软件线程号和归约通信域,构建归约操作相关的描述符,包括用于计算的归约描述符和用于通知的广播描述符;
3)归约软件根据所有参与归约的节点信息完成归约软件线程号与物理节点的映射,各节点按网络控制器硬件约定生成最终的归约描述符和广播描述符;
4)归约软件向网络控制器硬件提交描述符;
5)所有节点根据归约描述符确定本节点的类型为叶节点、中间节点或根节点,且叶节点对应的网络控制器硬件收到归约描述符后,形成归约请求报文发往父节点,父节点收集所有约定子节点发来的请求报文,和本节点自身提交的归约描述符进行归约计算,计算结束后再形成归约请求报文发往本节点的父节点;以此类推,最终的归约计算在根节点中完成,根节点归约计算结束后将触发执行广播操作,利用广播描述符将归约计算结果通知给所有参与归约计算的节点;
6)所有描述符执行完毕后,网络控制器硬件向归约软件返回归约结果;
7)归约软件收到网络控制器硬件返回的归约结果,一次完整的归约操作完成。
可选地,步骤4)归约软件向网络控制器硬件提交描述符的方式为下述两种方式中的一种:方式一,将描述描述符存放在系统主存中,网络控制器硬件通过访问主存获取描述符;方式二,通过主机与网络控制器的PCIe接口提交描述符,将描述符写入网络控制器的随机访问存储器中。
可选地,步骤5)中和本节点自身提交的归约描述符进行归约计算时,归约计算结果会替换父节点提交的归约描述符的数据体,所谓替换是指归约数据,不包括归约分支度、归约类型、归约数据位宽。
可选地,步骤5)中最终的归约计算在根节点中完成时,根节点的归约描述符的目的节点号为自身、且归约分支度固定为1,当根节点完成归约计算后会向自身发出一个归约分支度为1的归约报文,该报文会触发执行根节点上的广播描述符,完成从根节点到叶节点的归约结果广播。
可选地,所述归约描述符的字段包括节点类型、源节点号、归约标识、归约分支度、归约类型、数据位宽、归约数据、目的节点号,其中节点类型包括根节点、中间节点、叶节点三种类型,源节点号为发送归约报文的节点号,归约标识为是否进行归约的配置信息,归约分支度为父节点下的子节点数量,归约类型为归约计算的类型,数据位宽为归约计算的数据宽度,归约数据为节点携带的需要归约计算的数据,目的节点号为接收归约报文的节点号。
可选地,所述广播描述符的字段包括节点类型、源节点号、归约标识、触发执行、是否交换数据、目的节点号,其中节点类型包括根节点、中间节点、叶节点三种类型,源节点号为发送广播报文的节点号,归约标识为是否进行归约的配置信息,触发执行为用于配置是否需要触发执行,是否交换数据为用于配置在需要触发执行时是否需要用归约计算结果替换对应的数据位域,目的节点号为接收广播报文的节点号。
可选地,步骤5)中进行归约计算包括下述步骤:
5.1)检查缓冲区中是否收到归约报文,有归约报文输入则往下执行;
5.2)判断归约报文计数Rcnt为0是否成立,若成立则将归约报文计数Rcnt加1,将归约报文中的数据存入中间结果寄存器中,执行步骤5.4);否则,往下执行;
5.3)针对再次收到的归约报文,检查再次收到的归约报文、已经收到的归约报文这两个归约报文中的归约分支度是否相同,如果相同则继续检查再次收到的归约报文、已经收到的归约报文这两个归约报文的归约类型是否一致,若一致则往下执行;否则报错,并终止此次归约操作;
5.4)将归约报文计数Rcnt加1,并将中间结果寄存器和归约报文中的数据送入算术逻辑单元ALU进行归约计算,计算结果再次存入中间结果寄存器;
5.5)检查输入的归约报文计数Rcnt是否等于报文中的归约分支度,如果二者不等,表示当前归约操作未结束,执行步骤5.1)继续接收归约报文;如果二者相等,则表示本节点所有子节点发来的归约报文都已计算完毕,则往下执行;
5.6)检查本节点提交的第一个聚合通信描述符是否为归约描述符,如果本节点提交的第一个描述符为归约描述符,则往下执行;否则,执行步骤5.9);
5.7)检查此第一个描述符与报文中的归约类型是否一致,如不一致,系统报错,但不会终止归约操作,而是按本节点提交描述符中的归约类型进行归约计算往下执行;如果一致,则直接往下执行;
5.8)将中间结果寄存器和描述符中的数据送入算术逻辑单元ALU进行计算,计算结果仍然更新到中间结果寄存器中;
5.9)本节点提交的第一个描述符为非归约描述符,将归约报文计数Rcnt清零,并用中间结果寄存器中的数据替换本节点提交的描述符中的数据位域,当前网络控制器硬件中归约操作处理结束。
此外,本发明还提供一种基于网络控制器的归约系统,包括包含多个计算节点的计算机系统,每一个计算节点均带有网络控制器且通过网络控制器接入网络,该计算机系统被编程或配置以执行所述基于网络控制器的归约方法的步骤。
可选地,所述计算节点的网络控制器包括:
内存队列模块,用于存储归约软件通过内存提交的描述符,包括用于计算的归约描述符和用于通知的广播描述符;
描述符接收寄存器模块,用于存储软件通过PCIe接口提交的描述符,网络控制器硬件上通过随机访问存储器RAM实现;
描述符派发模块,用于从内存队列或描述符寄存器模块选取描述符并派发给归约请求接收与处理模块执行;
归约请求发送模块,用于接收描述符派发模块发送的描述符,并根据描述符中的规定,生成归约请求报文发往目的节点;在除叶节点的网络控制器中,归约描述符需要等待子节点发来的归约请求消息处理后才能处理;
归约请求接收与处理模块,用于检查归约请求消息处理队列,当有归约报文存在,按规定进行处理,并送入算术逻辑单元ALU中进行计算;
算术逻辑单元ALU,用于按约定计算归约请求接收与处理模块写入的数据,计算结束后将结果返回;
归约请求消息接收队列,用于保存其它节点发来的归约请求消息,采用动态分配多队列DMAQ方式管理;请求消息进入队列,则认为已到达目的节点,并给出完成响应;如果队列达到满状态,则给出重试响应NACK,源节点收到响应,将延迟一段时间后重新发送归约请求消息;
归约响应消息接收队列,用于保存目的节点返回的归约响应消息。
此外,本发明还提供一种包含多个计算节点的并行计算机系统,该并行计算机系统被编程或配置以执行所述基于网络控制器的归约方法的步骤。
和现有技术相比,本发明具有下述优点:本发明方法基于归约软件向网络控制器硬件提交归约描述符和广播描述符来实现,使得所有节点根据归约描述符确定本节点的类型为叶节点、中间节点或根节点,且根据交归约描述符和广播描述符中的描述信息来分别完成对应的归约计算操作,且所有描述符执行完毕后,网络控制器硬件向归约软件返回归约结果;本发明基于网络控制器的聚合通信归约操作卸载方法原理简单、操作方便、硬件设计复杂度低,可实现硬件自主完成聚合通信归约操作,可加速大规模并行程序中归约操作的性能。
附图说明
图1为本发明实施例进行一次归约操作的流程示意图。
图2为本发明实施例使用的立即数MP描述符格式示意图。
图3为本发明实施例中一个简单的归约实例示意图。
图4为本发明实施例中归约描述符的格式示意图。
图5为本发明实施例中广播描述符的格式示意图。
图6为本发明实施例中网络控制器硬件中归约流程示意图。
图7为本发明实施例在归约实例中网络控制器硬件的结构示意图。
具体实施方式
以下将结合说明书附图和具体实施案例对本发明做进一步详述。
如图1所示,本实施例基于网络控制器的归约方法包括:
1)由并行程序的一次MPI归约调用开始进入MPI调用,进入MPI调用后,归约软件构造归约通信域,将参与线程与物理节点的映射关系发送给所有参与归约的节点;
2)基于归约软件线程号和归约通信域,构建归约操作相关的描述符,包括用于计算的归约描述符和用于通知的广播描述符;
3)归约软件根据所有参与归约的节点信息完成归约软件线程号与物理节点的映射,各节点按网络控制器硬件约定生成最终的归约描述符和广播描述符;
4)归约软件向网络控制器硬件提交描述符;
5)所有节点根据归约描述符确定本节点的类型为叶节点、中间节点或根节点,且叶节点对应的网络控制器硬件收到归约描述符后,形成归约请求报文发往父节点,父节点收集所有约定子节点发来的请求报文,和本节点自身提交的归约描述符进行归约计算,计算结束后再形成归约请求报文发往本节点的父节点;以此类推,最终的归约计算在根节点中完成,根节点归约计算结束后将触发执行广播操作,利用广播描述符将归约计算结果通知给所有参与归约计算的节点;
6)所有描述符执行完毕后,网络控制器硬件向归约软件返回归约结果;
7)归约软件收到网络控制器硬件返回的归约结果,一次完整的归约操作完成。
本实施例中步骤1)为归约操入口,由并行程序的一次MPI归约调用开始;在进入MPI调用后,软件构造归约通信域,并将参与线程与物理节点的映射关系发送给对应节点。
步骤2)基于软件线程号和通信域,构建归约操作相关的描述符,包括用于计算的归约描述符和用于通知的广播描述符。由于并行应用程序使用线程标号进行归约操作,因此步骤2)生成的描述符是以线程号作为源节点号和目的节点号的。本实施例中,归约描述符与广播描述符基于普通立即数MP描述符实现,立即数MP描述符格式如图2所示。图中的C位域为聚合通信标识,Rflag为归约标识。在一次归约操作中,当C标识和Rflag标识同时有效,则表示描述符为归约描述符;当C标识有效Rflag无效则表示广播描述符。ReduceDataNum、ErrVec、BranchDegree、Rtype、Rbit、ReduceData、Location为归约信息位域,分别表示参与归约的数据个数、错误向量、归约分支度、归约类型、归约数据位宽、归约数据和位置信息。归约信息中,除ErrVec位域(错误向量)需要硬件填写外,其他归约信息位域由归约软件负责填写。
步骤3)基于各节点信息,完成线程号与节点号的映射,生成最终的归约描述符和广播描述符。对于硬件来说,归约描述符和广播描述符都是一种定长的数据结构,硬件接收到描述符后会根据约定解析其中内容,完成相应操作。由归约软件计算出归约操作中的叶节点、中间节点和根节点,生成硬件执行归约操作时需要的信息,生成的信息包括源节点号、目的节点号、参与归约的数据个数、错误向量、归约分支度、归约类型、归约数据位宽、归约数据和位置信息等归约信息。其中,归约软件不参与实际的通信。
本实施例中,步骤4)归约软件向网络控制器硬件提交描述符的方式为下述两种方式中的一种:方式一,将描述描述符存放在系统主存中,网络控制器硬件通过访问主存获取描述符;方式二,通过主机与网络控制器的PCIe接口提交描述符,将描述符写入网络控制器的随机访问存储器中,即:以NIO寄存器写命令(PIO)写入硬件。
本实施例中,步骤5)中和本节点自身提交的归约描述符进行归约计算时,归约计算结果会替换父节点提交的归约描述符的数据体,所谓替换是指归约数据,不包括归约分支度、归约类型、归约数据位宽。
本实施例中,步骤5)中最终的归约计算在根节点中完成时,根节点的归约描述符的目的节点号为自身、且归约分支度固定为1,当根节点完成归约计算后会向自身发出一个归约分支度为1的归约报文,该报文会触发执行根节点上的广播描述符,完成从根节点到叶节点的归约结果广播。
图3所示为本实施例中一个简单的归约实例示意图,该实例拓扑结构如图中所示,其中8号节点为根节点,6、7号节点为中间节点,其余节点为叶节点。系统中,一个节点连接一个NIC硬件。图中向上的实线箭头表示归约过程,箭头中的数字为归约计算的具体数据,向下的虚线箭头表示广播过程,箭头中的数字为归约计算的最终结果。所有节点统一提交描述符后,首先叶节点对应的NIC收到描述符后形成归约报文发往父节点NIC,并在父节点NIC中完成归约计算(1+2+3),父节点对应的NIC除完成子节点发来的归约报文之间的计算外,还完成归约报文与父节点提交的归约描述符之间的计算(1+2+3+6)。中间节点在完成所有计算后,将计算结果形成归约报文发送给根节点,并在根节中完成最终的归约计算;根节点中归约计算结束后将触发执行广播操作,由根节点开始,逐级向下广播,最终将归约结果广播给所有参与归约的节点。各节点收到最终的计算结果,则表示一次完整的归约操作完成。
本实施例中,归约描述符的字段包括节点类型、源节点号、归约标识、归约分支度、归约类型、数据位宽、归约数据、目的节点号,其中节点类型包括根节点、中间节点、叶节点三种类型,源节点号为发送归约报文的节点号,归约标识为是否进行归约的配置信息,归约分支度为父节点下的子节点数量,归约类型为归约计算的类型,数据位宽为归约计算的数据宽度,归约数据为节点携带的需要归约计算的数据,目的节点号为接收归约报文的节点号。如图4所示,为本发明在上述步骤2)、步骤3)中生成的归约描述符的格式示意图,图中只强调了部件主要信息。其中,各节点填写的归约分支度为其各自父节点的分支度,可以理解为一个父节点对应的子节点个数;NIC硬件可实现的归约类型包括浮点操作、有符号整数操作、无符号整数操作、逻辑操作和位操作等共15种。归约数据位宽指参数计算的归约数据的位宽,有32位和64位两种。归约操作中的每个归约描述符可携带7组归约数据,分别与其它归约描述符对应位域的数据进行归约计算,本例中归约描述符只携带一组归约数据,数据本身为整数1~8。根节点提交的归约描述符的目的节点为自身,且分支度为1,因此,该描述符的执行不会进行归约操作,而是会触发执行广播操作,将归约结果逐级广播给参与归约的各节点。
本实施例中,广播描述符的字段包括节点类型、源节点号、归约标识、触发执行、是否交换数据、目的节点号,其中节点类型包括根节点、中间节点、叶节点三种类型,源节点号为发送广播报文的节点号,归约标识为是否进行归约的配置信息,触发执行为用于配置是否需要触发执行,是否交换数据为用于配置在需要触发执行时是否需要用归约计算结果替换对应的数据位域,目的节点号为接收广播报文的节点号。如图5所示,为本发明在上述步骤2)、步骤3)中生成的广播描述符的格式示意图。本例中,广播操作由根节点开始,将归约计算结果广播给8个节点。广播描述符本身不需准备数据,而是提交后在NIC中触发执行,并用归约计算结果替换对应的数据位域,最终完成广播操作。
归约描述符实现从叶节点到根节点的归约计算,广播描述符实现从根节点到叶节点的归约结果广播操作。即使用户只需要根节点存储归约结果,软件也应该隐式实将归约结果广播给所有参与归约的节点,因为相同节点参与的多个归约操作之间必须互斥,每个参与的节点都必须被显示通知其参与的归约操作是否已执行完毕。因此,本实施例中,所有参与归约操作的节点都需提交归约描述符,且除叶节点外的所有节点都需要提交广播描述符。
本实施例中,由归约操软件计算出归约操作中的叶节点、中间节点和根节点,同时由软件负责生成的信息包括:源节点号、目的节点号、归约标识、归约分支度、归约类型、归约数据位宽、归约数据及位置信息。
本实施例步骤5)中,叶节点提交的描述符可直接执行,其余节点提交的描述符需要满足触发条件方可执行。子节点和父节点的归约操作都在父节点中进行,并且归约结果会替换父节点提交的归约描述符的数据体,所谓替换是指归约数据,不包括归约分支度、归约类型、归约数据位宽。
步骤5)中所有网络控制器硬件收到归约描述符后,会首先执行叶节点(节点与网络控制器为一一对应关系)发来的归约描述符,所述描述符在网络控制器硬件中形成归约报文发往父节点;父节点网络控制器将收到的子节点发来归约类报文存储,然后送入算术逻辑单元ALU(Arithmetic And Logic Unit)中进行计算,计算结束后将触发执行父节点提交的归约描述符,所述描述符与之前的计算结果再次进行归约计算,并在计算完毕后形成归约报文发往此节点的父节点;根节点中的归约计算与父节点类似,不同的是根节点上生成的归约报文的目的节点为自身,且分支度为1,所述归约报文不会再进行归约计算,而是触发执行后续的广播操作,将归约计算结果通知给所有参与此次归约操作的节点。在参与归约的各节点中,网络控制器硬件设置有一定深度的报文缓冲区,所述缓冲区可以缓存最大归约分支度的归约报文;叶节点发往父节点的归约报文,首先写入报文缓冲区中进行缓存,父节点网络控制器硬件检查缓冲区中是否已收到归约报文,如果收到,则进行处理。
如图6所示,步骤5)中进行归约计算包括下述步骤:
5.1)检查缓冲区中是否收到归约报文,有归约报文输入则往下执行;
5.2)判断归约报文计数Rcnt为0是否成立,若成立则将归约报文计数Rcnt加1(Rcnt++),将归约报文中的数据存入中间结果寄存器中,执行步骤5.4);否则,往下执行;
5.3)针对再次收到的归约报文,检查再次收到的归约报文、已经收到的归约报文这两个归约报文中的归约分支度是否相同,如果相同则继续检查再次收到的归约报文、已经收到的归约报文这两个归约报文的归约类型是否一致,若一致则往下执行;否则报错,并终止此次归约操作;
5.4)将归约报文计数Rcnt加1(Rcnt++),并将中间结果寄存器和归约报文中的数据送入算术逻辑单元ALU进行归约计算,计算结果再次存入中间结果寄存器;
5.5)检查输入的归约报文计数Rcnt是否等于报文中的归约分支度,如果二者不等,表示当前归约操作未结束,执行步骤5.1)继续接收归约报文;如果二者相等,则表示本节点所有子节点发来的归约报文都已计算完毕,则往下执行;
5.6)检查本节点提交的第一个聚合通信描述符是否为归约描述符,如果本节点提交的第一个描述符为归约描述符,则往下执行;否则,执行步骤5.9);
5.7)检查此第一个描述符与报文中的归约类型是否一致,如不一致,系统报错,但不会终止归约操作,而是按本节点提交描述符中的归约类型进行归约计算往下执行;如果一致,则直接往下执行;
5.8)将中间结果寄存器和描述符中的数据送入算术逻辑单元ALU进行计算,计算结果仍然更新到中间结果寄存器中;
5.9)本节点提交的第一个描述符为非归约描述符,将归约报文计数Rcnt清零,并用中间结果寄存器中的数据替换本节点提交的描述符中的数据位域,当前网络控制器硬件中归约操作处理结束。
需要说明的是,归约报文计数Rcnt加1只是归约报文计数Rcnt更新的一种方式,此外也可以根据需要设置一个较大的初始值,然后通过归约报文计数Rcnt减1的方式更新归约报文计数Rcnt,其实现的效果与归约报文计数Rcnt加1相同,在此不再赘述。
此外,本实施例还提供一种基于网络控制器的归约系统,包括包含多个计算节点的计算机系统,每一个计算节点均带有网络控制器且通过网络控制器接入网络,该计算机系统被编程或配置以执行前述基于网络控制器的归约方法的步骤。
如图7所示,本实施例中计算节点的网络控制器(NIC)包括:
内存队列模块,用于存储归约软件通过内存提交的描述符,包括用于计算的归约描述符和用于通知的广播描述符;
描述符接收寄存器模块,用于存储软件通过PCIe接口提交的描述符,网络控制器硬件上通过随机访问存储器RAM实现;
描述符派发模块,用于从内存队列或描述符寄存器模块选取描述符并派发给归约请求接收与处理模块执行;
归约请求发送模块,用于接收描述符派发模块发送的描述符,并根据描述符中的规定,生成归约请求报文发往目的节点;在除叶节点的网络控制器中,归约描述符需要等待子节点发来的归约请求消息处理后才能处理;
归约请求接收与处理模块,用于检查归约请求消息处理队列,当有归约报文存在,按规定进行处理,并送入算术逻辑单元ALU中进行计算;
算术逻辑单元ALU,用于按约定计算归约请求接收与处理模块写入的数据,计算结束后将结果返回;
归约请求消息接收队列,用于保存其它节点发来的归约请求消息,采用动态分配多队列DMAQ(Dynamically Allocated Mulit-Queue)方式管理;请求消息进入队列,则认为已到达目的节点,并给出完成响应;如果队列达到满状态,则给出重试响应NACK,源节点收到响应,将延迟一段时间后重新发送归约请求消息;
归约响应消息接收队列,用于保存目的节点返回的归约响应消息。
实现归约操作的网络控制器模块主要有以下5个:归约请求消息接收队列、归约响应消息接收队列、归约请求处理模块、归约请求接收与处理模块、算术逻辑单元ALU。归约请求消息接收队列和归约响应消息接收队列分别用于接收存储来自其它节点的归约请求消息和归约响应消息。归约请求发送模块用于解析本节点提交的描述符,然后产生相应的请求消息发送给目的节点。归约请求接收与处理模块负责接收并处理其它节点发来的归约请求消息。其它节点发来的归约请求消息先保存在当前节点的归约请求消息队列,归约请求接收与处理模块按规定读出并处理,然后送入算术逻辑单元ALU中进行计算。算术逻辑单元ALU按约定计算归约请求接收与处理模块写入的数据,计算结束后将结果返回。
此外,本实施例还提供一种包含多个计算节点的并行计算机系统,该并行计算机系统被编程或配置以执行前述基于网络控制器的归约方法的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (8)
1.一种基于网络控制器的归约方法,其特征在于,包括:
1)由并行程序的一次MPI归约调用开始进入MPI调用,进入MPI调用后,归约软件构造归约通信域,将参与线程与物理节点的映射关系发送给所有参与归约的节点;
2)基于归约软件线程号和归约通信域,构建归约操作相关的描述符,包括用于计算的归约描述符和用于通知的广播描述符;
3)归约软件根据所有参与归约的节点信息完成归约软件线程号与物理节点的映射,各节点按网络控制器硬件约定生成最终的归约描述符和广播描述符;
4)归约软件向网络控制器硬件提交描述符;
5)所有节点根据归约描述符确定本节点的类型为叶节点、中间节点或根节点,且叶节点对应的网络控制器硬件收到归约描述符后,形成归约请求报文发往父节点,父节点收集所有约定子节点发来的请求报文,和本节点自身提交的归约描述符进行归约计算,计算结束后再形成归约请求报文发往本节点的父节点;以此类推,最终的归约计算在根节点中完成,根节点归约计算结束后将触发执行广播操作,利用广播描述符将归约计算结果通知给所有参与归约计算的节点;所述归约描述符的字段包括节点类型、源节点号、归约标识、归约分支度、归约类型、数据位宽、归约数据、目的节点号,其中节点类型包括根节点、中间节点、叶节点三种类型,源节点号为发送归约报文的节点号,归约标识为是否进行归约的配置信息,归约分支度为父节点下的子节点数量,归约类型为归约计算的类型,数据位宽为归约计算的数据宽度,归约数据为节点携带的需要归约计算的数据,目的节点号为接收归约报文的节点号;所述进行归约计算包括:5.1)检查缓冲区中是否收到归约报文,有归约报文输入则往下执行;5.2)判断归约报文计数Rcnt为0是否成立,若成立则将归约报文计数Rcnt加1,将归约报文中的数据存入中间结果寄存器中,执行步骤5.4);否则,往下执行;5.3)针对再次收到的归约报文,检查再次收到的归约报文、已经收到的归约报文这两个归约报文中的归约分支度是否相同,如果相同则继续检查再次收到的归约报文、已经收到的归约报文这两个归约报文的归约类型是否一致,若一致则往下执行;否则报错,并终止此次归约操作;5.4)将归约报文计数Rcnt加1,并将中间结果寄存器和归约报文中的数据送入算术逻辑单元ALU进行归约计算,计算结果再次存入中间结果寄存器;5.5)检查输入的归约报文计数Rcnt是否等于报文中的归约分支度,如果二者不等,表示当前归约操作未结束,执行步骤5.1)继续接收归约报文;如果二者相等,则表示本节点所有子节点发来的归约报文都已计算完毕,则往下执行;5.6)检查本节点提交的第一个聚合通信描述符是否为归约描述符,如果本节点提交的第一个描述符为归约描述符,则往下执行;否则,执行步骤5.9); 5.7)检查此第一个描述符与报文中的归约类型是否一致,如不一致,系统报错,但不会终止归约操作,而是按本节点提交描述符中的归约类型进行归约计算往下执行;如果一致,则直接往下执行;5.8)将中间结果寄存器和描述符中的数据送入算术逻辑单元ALU进行计算,计算结果仍然更新到中间结果寄存器中;5.9)本节点提交的第一个描述符为非归约描述符,将归约报文计数Rcnt清零,并用中间结果寄存器中的数据替换本节点提交的描述符中的数据位域,当前网络控制器硬件中归约操作处理结束;
6)所有描述符执行完毕后,网络控制器硬件向归约软件返回归约结果;
7)归约软件收到网络控制器硬件返回的归约结果,一次完整的归约操作完成。
2.根据权利要求1所述的基于网络控制器的归约方法,其特征在于,步骤4)归约软件向网络控制器硬件提交描述符的方式为下述两种方式中的一种:方式一,将描述符存放在系统主存中,网络控制器硬件通过访问主存获取描述符;方式二,通过主机与网络控制器的PCIe接口提交描述符,将描述符写入网络控制器的随机访问存储器中。
3.根据权利要求1所述的基于网络控制器的归约方法,其特征在于,步骤5)中和本节点自身提交的归约描述符进行归约计算时,归约计算结果会替换父节点提交的归约描述符的数据体,所谓替换是指归约数据,不包括归约分支度、归约类型、归约数据位宽。
4.根据权利要求1所述的基于网络控制器的归约方法,其特征在于,步骤5)中最终的归约计算在根节点中完成时,根节点的归约描述符的目的节点号为自身、且归约分支度固定为1,当根节点完成归约计算后会向自身发出一个归约分支度为1的归约报文,该报文会触发执行根节点上的广播描述符,完成从根节点到叶节点的归约结果广播。
5.根据权利要求1所述的基于网络控制器的归约方法,其特征在于,所述广播描述符的字段包括节点类型、源节点号、归约标识、触发执行、是否交换数据、目的节点号,其中节点类型包括根节点、中间节点、叶节点三种类型,源节点号为发送广播报文的节点号,归约标识为是否进行归约的配置信息,触发执行为用于配置是否需要触发执行,是否交换数据为用于配置在需要触发执行时是否需要用归约计算结果替换对应的数据位域,目的节点号为接收广播报文的节点号。
6.一种基于网络控制器的归约系统,包括包含多个计算节点的计算机系统,每一个计算节点均带有网络控制器且通过网络控制器接入网络,其特征在于,该计算机系统被编程或配置以执行权利要求1~5中任意一项所述基于网络控制器的归约方法的步骤。
7.根据权利要求6所述的基于网络控制器的归约系统,其特征在于,所述计算节点的网络控制器包括:
内存队列模块,用于存储归约软件通过内存提交的描述符,包括用于计算的归约描述符和用于通知的广播描述符;
描述符接收寄存器模块,用于存储软件通过PCIe接口提交的描述符,网络控制器硬件上通过随机访问存储器RAM实现;
描述符派发模块,用于从内存队列或描述符寄存器模块选取描述符并派发给归约请求接收与处理模块执行;
归约请求发送模块,用于接收描述符派发模块发送的描述符,并根据描述符中的规定,生成归约请求报文发往目的节点;在除叶节点的网络控制器中,归约描述符需要等待子节点发来的归约请求消息处理后才能处理;
归约请求接收与处理模块,用于检查归约请求消息处理队列,当有归约报文存在,按规定进行处理,并送入算术逻辑单元ALU中进行计算;
算术逻辑单元ALU,用于按约定计算归约请求接收与处理模块写入的数据,计算结束后将结果返回;
归约请求消息接收队列,用于保存其它节点发来的归约请求消息,采用动态分配多队列DMAQ方式管理;请求消息进入队列,则认为已到达目的节点,并给出完成响应;如果队列达到满状态,则给出重试响应NACK,源节点收到响应,将延迟一段时间后重新发送归约请求消息;
归约响应消息接收队列,用于保存目的节点返回的归约响应消息。
8.一种包含多个计算节点的并行计算机系统,其特征在于,该并行计算机系统被编程或配置以执行权利要求1~5中任意一项所述基于网络控制器的归约方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010604973.1A CN111770173B (zh) | 2020-06-29 | 2020-06-29 | 一种基于网络控制器的归约方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010604973.1A CN111770173B (zh) | 2020-06-29 | 2020-06-29 | 一种基于网络控制器的归约方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111770173A CN111770173A (zh) | 2020-10-13 |
CN111770173B true CN111770173B (zh) | 2022-09-06 |
Family
ID=72724420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010604973.1A Active CN111770173B (zh) | 2020-06-29 | 2020-06-29 | 一种基于网络控制器的归约方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111770173B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11714765B2 (en) * | 2021-07-23 | 2023-08-01 | Hewlett Packard Enterprise Development Lp | System and method for implementing a network-interface-based allreduce operation |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1493040A (zh) * | 2001-02-24 | 2004-04-28 | �Ҵ���˾ | 用于计算结构的全局树形网络 |
CN103116527A (zh) * | 2013-03-05 | 2013-05-22 | 中国人民解放军国防科学技术大学 | 一种基于网络控制器的超大规模栅栏同步方法 |
CN104360936A (zh) * | 2014-10-17 | 2015-02-18 | 中国人民解放军国防科学技术大学 | 一种基于触发操作的Barrier操作性能分析方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180322386A1 (en) * | 2017-05-05 | 2018-11-08 | Intel Corporation | Fine-grain compute communication execution for deep learning frameworks |
-
2020
- 2020-06-29 CN CN202010604973.1A patent/CN111770173B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1493040A (zh) * | 2001-02-24 | 2004-04-28 | �Ҵ���˾ | 用于计算结构的全局树形网络 |
CN103116527A (zh) * | 2013-03-05 | 2013-05-22 | 中国人民解放军国防科学技术大学 | 一种基于网络控制器的超大规模栅栏同步方法 |
CN104360936A (zh) * | 2014-10-17 | 2015-02-18 | 中国人民解放军国防科学技术大学 | 一种基于触发操作的Barrier操作性能分析方法 |
Non-Patent Citations (2)
Title |
---|
Adam Moody.Scalable NIC-based Reduction on Large-scale Clusters.《IEEE》.2006, * |
Pang Zhengbin.Hardware Acceleration of Barrier Communication for Large Scale Parallel Computer.《IEEE》.2014, * |
Also Published As
Publication number | Publication date |
---|---|
CN111770173A (zh) | 2020-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10331595B2 (en) | Collaborative hardware interaction by multiple entities using a shared queue | |
US8250164B2 (en) | Query performance data on parallel computer system having compute nodes | |
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
US20110225297A1 (en) | Controlling Access To A Resource In A Distributed Computing System With A Distributed Access Request Queue | |
US8898422B2 (en) | Workload-aware distributed data processing apparatus and method for processing large data based on hardware acceleration | |
WO2020042813A1 (zh) | 一种分布式数据连接处理方法、装置、设备及存储介质 | |
CN112291293A (zh) | 任务处理方法、相关设备及计算机存储介质 | |
US20230351145A1 (en) | Pipelining and parallelizing graph execution method for neural network model computation and apparatus thereof | |
WO2022227614A1 (zh) | 用于命令分发的装置、方法、芯片、计算机设备及存储介质 | |
CN111770173B (zh) | 一种基于网络控制器的归约方法及系统 | |
US20110173287A1 (en) | Preventing messaging queue deadlocks in a dma environment | |
CN116382581A (zh) | 一种加速执行NVMe协议的方法、系统、设备和存储介质 | |
US9239804B2 (en) | Back-off mechanism for a peripheral page request log | |
KR101994929B1 (ko) | 집합 통신 수행 방법 및 이를 이용한 집합 통신 시스템 | |
Temuçin et al. | Efficient multi-path NVLink/PCIe-aware UCX based collective communication for deep learning | |
US8589584B2 (en) | Pipelining protocols in misaligned buffer cases | |
US10353896B2 (en) | Data processing method and apparatus | |
CN114363988A (zh) | 分簇方法、装置和电子设备 | |
CN115776434A (zh) | Rdma数据传输系统、rdma数据传输方法及网络设备 | |
CN116755868B (zh) | 任务处理系统及方法 | |
WO2022179293A1 (zh) | 网卡、计算设备和获取数据的方法 | |
WO2023045478A1 (zh) | 图任务调度方法、执行端设备、存储介质及程序产品 | |
US9003226B2 (en) | Core file limiter for abnormally terminating processes | |
WO2022007587A1 (zh) | 交换机和数据处理的系统 | |
CN115774736A (zh) | 一种数据延迟发送的numa架构时变图处理方法与装置 |
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 |