CN106055415A - 一种构建高效mpi设备层扩展库的方法 - Google Patents

一种构建高效mpi设备层扩展库的方法 Download PDF

Info

Publication number
CN106055415A
CN106055415A CN201610339916.9A CN201610339916A CN106055415A CN 106055415 A CN106055415 A CN 106055415A CN 201610339916 A CN201610339916 A CN 201610339916A CN 106055415 A CN106055415 A CN 106055415A
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.)
Granted
Application number
CN201610339916.9A
Other languages
English (en)
Other versions
CN106055415B (zh
Inventor
雷咏梅
方铃
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Shanghai for Science and Technology
Original Assignee
University of Shanghai for Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by University of Shanghai for Science and Technology filed Critical University of Shanghai for Science and Technology
Priority to CN201610339916.9A priority Critical patent/CN106055415B/zh
Publication of CN106055415A publication Critical patent/CN106055415A/zh
Application granted granted Critical
Publication of CN106055415B publication Critical patent/CN106055415B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/544Remote

Abstract

本发明涉及一种构建高效MPI设备层扩展库的方法。本方法是利用MPICH3的PMI KVS空间的功能,结合PCI Express互联结构的特点,提出控制和数据双通道的通信模式,通过以太网仅传输必需的控制信息,使用高速的PCI Express来传输数据信息,通过进程PMI put操作保存本地计算节点端口等信息到本地KVS中,同时同步到远程服务端KVS,而其他进程再通过PMI get操作获取各进程所在计算节点端口等信息,从而建立节点间通信关系,实现这种嵌入式混合异构系统运算节点之间高效的数据传输,实现MPI并行程序无缝移植和高效运行。

Description

一种构建高效MPI设备层扩展库的方法
技术领域
本发明涉及一种构建高效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 (4)

1.一种构建高效MPI设备层扩展库的方法,其特征在于操作步骤如下:
A.虚连接的初始化;
B.控制和数据传输双通道模式的设计;
C.系统基本功能设计与实现。
2.根据权利要求1所述的构建高效MPI设备层扩展库的方法,其特征在于,所述步骤B中控制和数据传输双通道模式的设计如下:
控制信息主要是进程管理相关的信息通过TCP进行传输,而数据信息,主要是发送、接收通过PCI Express总线传输,具体的过程如下:
1)将端口号信息和设定的key,字符串“endpoint”,通过PMI_KVS_Put方法写入本地KVS中;
2)从整个树形结构中层层提交到远程的Launch node端KVS中;
3)其他进程按照这个key值在对应的进程KVS中去查找需要的端口号信息;
因为每一块板卡有一个唯一的IP地址,也对应一个唯一的端口,本地初始化时可以通过kernel提供的方法获得端口号,然后通过上面的方法去进行保存;
4)在每个进程虚连接初始化的时候去通过PMI_KVS_Get方法查询每个进程rank值对应的端口号信息,并保存到虚连接中。
3.根据权利要求1所述的构建高效MPI设备层扩展库的方法,其特征在于,所述步骤C中系统基本功能设计与实现主要包括数据包的设计和数据的发送和接收:
当发送方向接收方发送数据时:
1)先为本次通信过程分配唯一的序列号,再填充源端口号和目的端口号,源进程号和目的进程号以及数据长度信息,将控制信息数据包发送给PC端;
2)PC端接收到控制信息数据包,得到目的端号和序列号信息,并等待发送方发送数据;
3)发送方将数据发送给PC端;
4)当PC 端接收到所有数据时,将数据发送到目的端号;
由于一块板卡上运行多个应用进程,而每一个进程会从同一个端口读取数据,从而使得数据读取混乱,所以本文采用为板卡上每一个进程预设内存缓冲池的去存放PC端发送来的数据,当设备层扩展库读取数据时,按进程号读取对应缓冲池上的数据,再拷贝到用户数据区。
4.根据权利要求1所述的构建高效MPI设备层扩展库的方法,其特征在于:所述数据包格式设计如下:
1)ID字段:ID字段只有一位,当ID为0时,表示控制信息数据包,当ID为1时表示用户数据包;
2)序列号:根据进程号为每个进程分配连续的且不同序列号,保证同时一个端口不同进程向PC端发送数据时,以不同的序列号进行区分;
3)分片号:当数据以分片发送,分片号从1开始,以分片号标识每片数据,当数据不以分片发送,分片号字段为0。
CN201610339916.9A 2016-05-22 2016-05-22 一种构建高效mpi设备层扩展库的方法 Active CN106055415B (zh)

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 true CN106055415A (zh) 2016-10-26
CN106055415B 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112929461A (zh) * 2021-01-21 2021-06-08 中国人民解放军国防科技大学 一种基于高速互连网络的mpi进程管理接口实现方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101866326A (zh) * 2010-05-24 2010-10-20 北京航空航天大学 一种消息传递接口支持总线通信框架

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101866326A (zh) * 2010-05-24 2010-10-20 北京航空航天大学 一种消息传递接口支持总线通信框架

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
GROPP W等: "A High-Performance,Portable Implementation of the MPI Message Passing Interface Standard", 《PARALLEL COMPUTING》 *
谢旻: "高可用MPI并行编程环境及并行程序开发方法的研究与实现", 《中国博士学位论文全文库 信息科技辑》 *
金亨科等: "基于RapidIO 的MPI设备层的设计与实现", 《计算机工程与设计》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112929461A (zh) * 2021-01-21 2021-06-08 中国人民解放军国防科技大学 一种基于高速互连网络的mpi进程管理接口实现方法
CN112929461B (zh) * 2021-01-21 2022-09-16 中国人民解放军国防科技大学 一种基于高速互连网络的mpi进程管理接口实现方法

Also Published As

Publication number Publication date
CN106055415B (zh) 2019-07-23

Similar Documents

Publication Publication Date Title
JP5601601B2 (ja) 通信制御システム、スイッチノード、及び通信制御方法
CN107278362B (zh) 云计算系统中报文处理的方法、主机和系统
JP4740897B2 (ja) 仮想ネットワーク構成方法及びネットワークシステム
US7356818B2 (en) Virtual machine communicating to external device without going through other virtual machines by using a list of IP addresses managed only by a single virtual machine monitor
TWI538453B (zh) 網路介面控制器、積體電路微晶片、系統及方法
CN104115121B (zh) 在中间件机器环境中对虚拟机迁移提供可扩展的信令机制的系统和方法
US20070288921A1 (en) Emulating a network-like communication connection between virtual machines on a physical device
CN102124449B (zh) 用于低开销数据传输的方法和系统
CN103346981A (zh) 虚拟交换方法、相关装置和计算机系统
CN109426648A (zh) 用于由智能网络接口控制器处理网络分组的技术
US20070050520A1 (en) Systems and methods for multi-host extension of a hierarchical interconnect network
TW200539628A (en) Method and apparatus for shared I/O in a load/store fabric
CN202535384U (zh) 基于PCIe总线的网络设备扩展连接和虚拟机互连优化系统
CN116501681B (zh) Cxl数据传输板卡及控制数据传输的方法
CN103763173A (zh) 数据传输方法和计算节点
US10372633B1 (en) Interconnection of peripheral devices on different electronic devices
CN102263698A (zh) 虚拟通道的建立方法、数据传输的方法及线卡
KR19980070206A (ko) 통신 시스템의 통신 스택에 관련된 데이터를 전송하고 수신하기위한 시스템 및 그 방법
CN110389711B (zh) 帮助端点设备实现sr-iov功能的方法、设备和非瞬态计算机可读介质
US20070150699A1 (en) Firm partitioning in a system with a point-to-point interconnect
CN103532866A (zh) 虚拟机的流量控制方法和系统
CN106055415A (zh) 一种构建高效mpi设备层扩展库的方法
US11106359B1 (en) Interconnection of peripheral devices on different electronic devices
Soumagne et al. An HDF5 MPI virtual file driver for parallel in-situ post-processing
CN106027423A (zh) PCIe设备共享网络及其数据传输方法

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