CN106055415B - 一种构建高效mpi设备层扩展库的方法 - Google Patents
一种构建高效mpi设备层扩展库的方法 Download PDFInfo
- Publication number
- CN106055415B CN106055415B CN201610339916.9A CN201610339916A CN106055415B CN 106055415 B CN106055415 B CN 106055415B CN 201610339916 A CN201610339916 A CN 201610339916A CN 106055415 B CN106055415 B CN 106055415B
- Authority
- CN
- China
- Prior art keywords
- data
- information
- kvs
- port
- mpi
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种构建高效MPI设备层扩展库的方法。本方法是利用MPICH3的PMI KVS空间的功能,结合PCI Express互联结构的特点,提出控制和数据双通道的通信模式,通过以太网仅传输必需的控制信息,使用高速的PCI Express来传输数据信息,通过进程PMI put操作保存本地计算节点端口等信息到本地KVS中,同时同步到远程服务端KVS,而其他进程再通过PMI get操作获取各进程所在计算节点端口等信息,从而建立节点间通信关系,实现这种嵌入式混合异构系统运算节点之间高效的数据传输,实现MPI并行程序无缝移植和高效运行。
Description
技术领域
本发明涉及一种构建高效MPI扩展库的方法,特别是提出了一种控制和数据双通道的通信模式,属于计算机技术领域。
背景技术
随着高效能技术发展,各种高性能总线互联技术层出不穷,包括嵌入式领域的RapidIO技术,针对PC机的PCI Express技术以及面向服务机群的InfiniBand技术。其中PCIExpress作为新一代的总线接口,能够通过交换器实现多台设备之间通信的串行、点对点类型的互联,并能实现高效的数据传输。因此把PCI Express技术应用到高性能计算领域成为当前热门研究方向。目前已提出的PCI Express总线互联结构,该结构通过母板PCIExpress的插槽连接不同的带着FPGA和ARM混合异构的嵌入式子板,这些子板上面运行MPI应用进程,而不同子板上应用进程之间通过PCI Express先把数据传输给PC host,然后再由PC host把数据传输给目的板卡上的应用进程。用PCI Express代替以太网来传输数据,能很好解决网络带宽限制的问题,而且该结构规模较小,能很好应用到工业等领域。然而基于这种互联结构实现并行程序运行,需要设计和实现相应的MPI(消息传递接口)设备层扩展库,实现不同板卡进程之间的相互通信。
发明内容
本发明的目的在于针对已有技术的不足提供一种构建高效MPI设备层扩展库的方法,从而建立节点间通信关系,实现这种嵌入式混合异构系统运算节点之间高效的数据传输,实现MPI并行程序无缝移植和高效运行。为了达到上述目的,本发明采用下述技术方案:一种构建高效MPI设备层扩展库的方法,操作步骤为:虚连接的初始化;控制和数据传输双通道模式的设计;系统基本功能设计与实现。
所述的虚连接的初始化,主要包括两个步骤,第一是在作业初始化阶段为进程初始化与其他进程之间调用过程、第二是初始化设备层相关数据结构并保存到虚连接内,具体的操作步骤如下:
1) 初始化iStartContigMsg、iSendContig、sendNoncontig_fn三个指针函数。
2) 初始化发送队列send_queue。
3) 将文件描述符保存到对应的虚连接结构体中。
4) 得到各个目的进程的business card,通过查询server端得到端口号保存在相应的虚连接结构体中。
所述的控制和数据传输双通道模式的设计,由于总线互联结构支撑软件提供的操作设备方法无法像传统的TCP一样,以IP地址作为主机标识进行数据传输,而它一般以端口作为主机标识,如PCI Express,而在进程管理部分通过SSH等去进行远程控制访问,另一方面,数据传输是通过PCI Express总线,所以整体数据的流通是以控制和数据相分离的,控制信息主要是进程管理相关的信息通过TCP进行传输,而数据信息,主要是发送,接收等通过PCI Express总线传输。
所述的系统基本功能设计与实现中主要包括数据包的设计和数据的发送和接收。当发送方向接收方发送数据时:
1)先为本次通信过程分配唯一的序列号,再填充源端口号和目的端口号,源进程号和目的进程号以及数据长度信息,将控制信息数据包发送给PC端;
2)PC端接收到控制信息数据包,得到目的端号和序列号等信息,并等待发送方发送数据;
3)发送方将数据发送给PC端;
4)当PC 端接收到所有数据时,将数据发送到目的端号。
由于一块板卡上运行多个应用进程,而每一个进程会从同一个端口读取数据,从而使得数据读取混乱,所以本文采用为板卡上每一个进程预设内存缓冲池的去存放PC端发送来的数据,当设备层扩展库读取数据时,按进程号读取对应缓冲池上的数据,再拷贝到用户数据区。
本发明与现有技术相比较,具有如下显而易见的突出实质性特点和显著技术进步:本发明是利用MPICH3的PMI KVS空间的功能,结合PCI Express互联结构的特点,提出控制和数据双通道的通信模式,通过以太网仅传输必需的控制信息,使用高速的PCI Express来传输数据信息,通过进程PMI put操作保存本地计算节点端口等信息到本地KVS中,同时同步到远程服务端KVS,而其他进程再通过PMI get操作获取各进程所在计算节点端口等信息,从而建立节点间通信关系,实现这种嵌入式混合异构系统运算节点之间高效的数据传输,实现MPI并行程序无缝移植和高效运行。
附图说明
图1是本发明的程序框图;
图2是本发明中的控制与数据双通道结构图;
图3是本发明中的数据包格式图;
图4是本发明中的发送和接收数据过程图。
具体实施方式
下面结合说明书附图和具体实施例对本发明作进一步详细的说明。
参见图1~4,本构建高效MPI设备层扩展库的方法是基于PCI-Express互联结构设计相关的高效的MPI设备层扩展库,包括虚连接的初始化、控制和数据传输双通道模式的设计以及系统基本功能设计与实现,具体实现如下:
1.虚连接初始化的步骤如下:
1)初始化 iStartContigMsg、 iSendContig、sendNoncontig_fn三个函数指针,这三个函数是和发送相关的。当应用程序调用MPI_Send时,MPICH根据rank号取到对应的VC,按照参数选择调用以上三个VC中的函数。这三个函数需要在设备层扩展库进行具体实现的,当虚连接初始化时根据进程是节点间还是节点内选择是否对VC的函数指针进行赋值。
2)初始化发送队列send_queue。Send_queue是定义在设备层的消息队列
由于MPI存在非阻塞通信,而且在实际数据发送过程中可能出现信道阻塞,所以需要有缓存,MPICH3设备层缓存和CH3层对接收请求的组织方式相同,都是以请求队列的形式存在的,当出现阻塞时,将消息封装成请求并入队,并等待出队发送,所以设备层需要在虚连接内维护一个请求队列。
3)将设备文件描述符保存到对应的虚连接结构体中。
4)得到各个目的进程的business card,通过查询server端得到端口号保存在相应的虚连接结构体中,后面的数据传输需要知道目的进程所在的端口。
2.参照图2,控制与数据双通道的具体实现如下:
1)将端口号等信息和设定的key,如字符串“endpoint”,通过PMI_KVS_Put方法写入本地KVS中。
2)从整个树形结构中层层提交到远程的Launch node端KVS中。
3)其他进程按照这个key值在对应的进程KVS中去查找需要的端口号等信息。因为每一块板卡有一个唯一的IP地址,也对应一个唯一的端口,本地初始化时可以通过kernel提供的方法获得端口号,然后通过上面的方法去进行保存。
4)在每个进程虚连接初始化的时候去通过PMI_KVS_Get方法查询每个进程rank值对应的端口号等信息,并保存到虚连接中。
3.系统基本功能设计与实现包括数据包的设计,发送数据与接收数据的设计与实现,具体实现如下:
参照图3,数据包格式设计如下:
1)ID字段:ID字段只有一位,当ID为0时,表示控制信息数据包,当ID为1时表示用户数据包。
2)序列号:根据进程号为每个进程分配连续的且不同序列号,保证同时一个端口不同进程向PC端发送数据时,可以以不同的序列号进行区分。
3)分片号:当数据以分片发送,分片号从1开始,以分片号标识每片数据,当数据不以分片发送,分片号字段为0。
参照图4,发送数据具体流程:
1)先为本次通信过程分配唯一的序列号,再填充源端口号和目的端口号,源进程号和目的进程号以及数据长度信息,将控制信息数据包发送给PC端;
2)PC端接收到控制信息数据包,得到目的端号和序列号等信息,并等待发送方发送数据;
3)发送方将数据发送给PC端;
4)当PC 端接收到所有数据时,将数据发送到目的端号。
接收数据具体流程:
由于一块板卡上运行多个应用进程,而每一个进程会从同一个端口读取数据,从而使得数据读取混乱,所以本文采用为板卡上每一个进程预设内存缓冲池的去存放PC端发送来的数据,当设备层扩展库读取数据时,按进程号读取对应缓冲池上的数据,再拷贝到用户数据区。
通过应用中对MPI应用程序接口中初始化、发送、接收方法的调用,来测试设备层扩展库能否正常初始化、发送和接收,从模拟实验的结果得出初始化、发送以及接收接口都能正常使用,即证明了设备层扩展库的可行性。
Claims (2)
1.一种构建高效MPI设备层扩展库的方法,其特征在于操作步骤如下:
A.虚连接的初始化;
B.控制和数据传输双通道模式的设计;
C.系统基本功能设计与实现;
所述步骤B中控制和数据传输双通道模式的设计如下:
与进程管理相关的信息通过TCP进行传输,而数据信息发送、接收通过PCIExpress总线传输,具体的过程如下:
1)将端口号信息和设定的key,字符串“endpoint”,通过PMI_KVS_Put方法写入本地KVS中;
2)从整个树形结构中层层提交到远程的Launch node端KVS中;
3)其他进程按照这个key值在对应的进程KVS中去查找需要的端口号信息;因为每一块板卡有一个唯一的IP地址,也对应一个唯一的端口,本地初始化时可以通过kernel提供的方法获得端口号,然后通过上面的方法去进行保存;
4)在每个进程虚连接初始化的时候去通过PMI_KVS_Get方法查询每个进程rank值对应的端口号信息,并保存到虚连接中;
所述步骤C中系统基本功能设计与实现数据包的设计和数据的发送和接收:
当发送方向接收方发送数据时:
a).先为本次通信过程分配唯一的序列号,再填充源端口号和目的端口号,源进程号和目的进程号以及数据长度信息,将控制信息数据包发送给PC端;
b).PC端接收到控制信息数据包,得到目的端口号和序列号信息,并等待发送方发送数据;
c).发送方将数据发送给PC端;
d).当PC端接收到所有数据时,将数据发送到目的端口号;
由于一块板卡上运行多个应用进程,而每一个进程会从同一个端口读取数据,从而使得数据读取混乱,所以采用为板卡上每一个进程预设内存缓冲池的去存放PC端发送来的数据,当设备层扩展库读取数据时,按进程号读取对应缓冲池上的数据,再拷贝到用户数据区。
2.根据权利要求1所述的构建高效MPI设备层扩展库的方法,其特征在于:数据包格式设计如下:
①ID字段:ID字段只有一位,当ID为0时,表示控制信息数据包,当ID为1时表示用户数据包;
②序列号:根据进程号为每个进程分配连续的且不同序列号,保证同时一个端口不同进程向PC端发送数据时,以不同的序列号进行区分;
③分片号:当数据以分片发送,分片号从1开始,以分片号标识每片数据,当数据不以分片发送,分片号字段为0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610339916.9A CN106055415B (zh) | 2016-05-22 | 2016-05-22 | 一种构建高效mpi设备层扩展库的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610339916.9A CN106055415B (zh) | 2016-05-22 | 2016-05-22 | 一种构建高效mpi设备层扩展库的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106055415A CN106055415A (zh) | 2016-10-26 |
CN106055415B true CN106055415B (zh) | 2019-07-23 |
Family
ID=57176571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610339916.9A Active CN106055415B (zh) | 2016-05-22 | 2016-05-22 | 一种构建高效mpi设备层扩展库的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106055415B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112929461B (zh) * | 2021-01-21 | 2022-09-16 | 中国人民解放军国防科技大学 | 一种基于高速互连网络的mpi进程管理接口实现方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866326A (zh) * | 2010-05-24 | 2010-10-20 | 北京航空航天大学 | 一种消息传递接口支持总线通信框架 |
-
2016
- 2016-05-22 CN CN201610339916.9A patent/CN106055415B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866326A (zh) * | 2010-05-24 | 2010-10-20 | 北京航空航天大学 | 一种消息传递接口支持总线通信框架 |
Non-Patent Citations (3)
Title |
---|
A High-Performance,Portable Implementation of the MPI Message Passing Interface Standard;Gropp W等;《Parallel Computing》;19960930;第22卷(第6期);789-828 |
基于RapidIO 的MPI设备层的设计与实现;金亨科等;《计算机工程与设计》;20081130;第29卷(第21期);5464-5467 |
高可用MPI并行编程环境及并行程序开发方法的研究与实现;谢旻;《中国博士学位论文全文库 信息科技辑》;20090731(第07期);第3.1.4节 |
Also Published As
Publication number | Publication date |
---|---|
CN106055415A (zh) | 2016-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11934341B2 (en) | Virtual RDMA switching for containerized | |
EP2904500B1 (en) | Memory bus protocol to enable clustering between nodes of distinct physical domain address spaces | |
JP4740897B2 (ja) | 仮想ネットワーク構成方法及びネットワークシステム | |
EP3125126B1 (en) | Data processing system and data processing method | |
US7529860B2 (en) | System and method for configuring an endpoint based on specified valid combinations of functions | |
JP5280135B2 (ja) | データ転送装置 | |
CN111966446B (zh) | 一种容器环境下rdma虚拟化方法 | |
US20070288921A1 (en) | Emulating a network-like communication connection between virtual machines on a physical device | |
CN101150487A (zh) | 一种零拷贝网络报文发送方法 | |
US9535873B2 (en) | System, computer-implemented method and computer program product for direct communication between hardward accelerators in a computer cluster | |
CN103346981A (zh) | 虚拟交换方法、相关装置和计算机系统 | |
US10372633B1 (en) | Interconnection of peripheral devices on different electronic devices | |
CN101150488A (zh) | 一种零拷贝网络报文接收方法 | |
CN103763173A (zh) | 数据传输方法和计算节点 | |
CN110389711B (zh) | 帮助端点设备实现sr-iov功能的方法、设备和非瞬态计算机可读介质 | |
CN112905304B (zh) | 一种虚拟机间通信方法、装置、物理主机及介质 | |
CN106844263B (zh) | 一种基于可配置的多处理器计算机系统及实现方法 | |
CN116644010A (zh) | 一种数据处理方法、装置、设备及介质 | |
CN106055415B (zh) | 一种构建高效mpi设备层扩展库的方法 | |
US20170063972A1 (en) | System and method for avoiding proxy connection latency | |
US11106359B1 (en) | Interconnection of peripheral devices on different electronic devices | |
CN114885007A (zh) | 用于实时的强一致性会话同步的方法和电子设备 | |
CN101441661A (zh) | 一种在多个嵌入式系统之间共享文件资源的系统及方法 | |
Soumagne et al. | An HDF5 MPI virtual file driver for parallel in-situ post-processing | |
CN103220176B (zh) | 一种微服务器远程维护的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |