CN111104119A - 用于存储器中心型计算机的mpi程序转换方法及装置 - Google Patents
用于存储器中心型计算机的mpi程序转换方法及装置 Download PDFInfo
- Publication number
- CN111104119A CN111104119A CN201911011909.6A CN201911011909A CN111104119A CN 111104119 A CN111104119 A CN 111104119A CN 201911011909 A CN201911011909 A CN 201911011909A CN 111104119 A CN111104119 A CN 111104119A
- Authority
- CN
- China
- Prior art keywords
- mpi
- function
- absolute address
- command text
- address information
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 187
- 230000015654 memory Effects 0.000 title claims abstract description 65
- 230000006870 function Effects 0.000 claims abstract description 183
- 238000012545 processing Methods 0.000 claims abstract description 10
- 230000008569 process Effects 0.000 claims description 147
- 230000004044 response Effects 0.000 claims description 14
- 230000001419 dependent effect Effects 0.000 claims description 4
- 238000012546 transfer Methods 0.000 claims description 4
- 239000000284 extract Substances 0.000 claims description 3
- 238000006243 chemical reaction Methods 0.000 description 25
- 238000004891 communication Methods 0.000 description 13
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 229920002153 Hydroxypropyl cellulose Polymers 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 235000010977 hydroxypropyl cellulose Nutrition 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/316—Aspect-oriented programming techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44557—Code layout in executable memory
- G06F9/44563—Sharing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Multi Processors (AREA)
Abstract
揭示的MPI程序转换方法是为了在执行分散处理的计算机***的MPI并行程序中能够从一台计算机通过存储器直接访问另一台计算机所生成的数据而分析MPI函数并通过网络生成与相关的MPI函数对应的网络函数及通过直接访问存储器的总线线路生成与相关的MPI函数对应的总线线路函数。
Description
相关申请的交叉引用
本申请要求于2018年10月25日提交的韩国专利申请No.10-2018-0128371与要求于2018年12月2日提交韩国专利申请No.10-2018-0160347的优先权和权益,其通过引用合并于此用于所有目的,如同在此完全阐述一样。
技术领域
本公开涉及一种用于存储器中心型计算机的MPI程序转换方法及装置。
背景技术
分布存储器结构(Distributed memory architecture)的HPC(High PerformanceComputer,高性能计算机)***如图1所示,具有在一通信网络(Communication Network)上并联多个单元计算机(或者处理器,P1~Pn)的结构。在高性能计算机***中,在由多个单元计算机执行并行程序的过程中任意一单元计算机能够将包含中间计算结果的消息通过所述通信网络向其他单元计算机传送。这种现有***的各单元计算机备有作为半导体储存装置的如存储器(M1~Mn)和HDD的物理的储存装置的储存器(S1~Sn)。
如上所述的利用通信网络的单元计算机间的消息传送方式由于速度缓慢因此对于并行程序的性能提高具有局限性。这归因为通信网络自身具有的局限性。
发明内容
至少一个实施例提供一种将可在现有高性能计算机中执行而开发的MPI并行程序进行自动转换的方法及装置以使所述MPI并行程序在存储器中心型计算机中更加有效地执行。
至少一个实施例涉及的转换方法
在执行并行处理的计算机***中,在执行MPI(Message Passing Interface,消息传递接口)并行程序的过程中,为了使任意一台计算机中生成的数据能够被其他计算机直接访问,分析(parsing)MPI函数,将相关MPI函数转换为网络函数以与其他计算机进行基本的通信,并生成能够通过总线线路直接访问存储器的总线线路命令。
在至少一个实施例中,为了自动转换MPI并行程序,提供了如下的新型结构体及函数。此外,还提供利用所述新型结构体及函数的根据不同MPI函数的转换方法。
1)MC_MESSAGE型(type)
2)帮助函数
3)根据不同的主要MPI函数的转换
至少一个实施例涉及的MPI程序转换方法可包括:
执行分散处理的多台计算机装载用于并联的高性能计算机***的MPI(MessagePassing Interface,消息传递接口)并行程序的源代码的步骤;
通过分析(parsing)所述源代码法来提取(extract)MPI函数命令文本(statement)的步骤;
利用所述MPI函数命令文本将相关的PI函数生成通过网络与另一计算机进行通信的网络函数命令文本及生成通过总线线路直接访问由多台计算机共享的存储器的总线线路函数命令文本的步骤;以及
储存包括所述网络函数命令文本和总线线路函数命令文本的转换的源代码的步骤。
在至少一个实施例涉及的MPI程序转换方法中,所述网络函数命令文本可包括用于储存绝对地址信息的绝对地址传递者。
在至少一个实施例涉及的MPI程序转换方法中,所述绝对地址传递者可由包括所述存储器的绝对地址信息的结构体(对象)生成。
在至少一个实施例涉及的MPI程序转换方法中,所述MPI函数可包括MPI_Send、MPI_Recv、MPI_Bcast、MPI_Reduce、MPI_Scatter、MPI_Gather中至少一个。
在至少一个实施例涉及的MPI程序转换方法中,包括所述MPI_Send函数的命令文本可包括储存绝对地址信息的绝对地址传递者并作为参数,在执行所述MPI_Send函数命令文本后,等待来自目标计算机的响应。
在至少一个实施例涉及的MPI程序转换方法中,包括所述MPI_Recv函数的命令文本可包括作为参数的用于储存绝对地址信息的绝对地址传递者,在执行所述MPI_Recv函数命令文本后,可向执行MPI_Send函数命令语的源计算机发送响应信号。
在至少一个实施例涉及的MPI程序转换方法中,
包括所述MPI_Bcast函数的命令文本为:
当相关进程为根进程时,在执行向其他所有进程传递绝对地址信息的MPI_Bcast函数后,等待来自其他所有进程的响应,或者
当相关进程不为根进程时,在执行MPI_Bcast函数后,向根进程传送响应信号。
在至少一个实施例涉及的MPI程序转换方法中,
包括所述MPI_Reduce函数的命令文本为:
当相关进程为根进程时,接收其他所有进程的绝对地址信息并执行运算符(operator)计算的MPI_Reduce函数,或者
当相关进程不为根进程时,执行MPI_Reduce函数以将相关进程的绝对地址信息向根进程传递。
在至少一个实施例涉及的MPI程序转换方法中,
包括所述MPI_Scatter函数的命令文本为:
当相关进程为根进程时,执行MPI_Scatter函数以传递其他所有进程的绝对地址信息的排列,或者
当相关进程不为根进程时,执行MPI_Scatter函数以将根进程传送的消息储存在相关进程的绝对地址信息中。
在至少一个实施例涉及的MPI程序转换方法中,
包括所述MPI_Gather函数的命令文本为:
当相关进程为根进程时,在执行将其他进程的绝对地址信息以排列的形式储存在相关进程的绝对地址上的MPI_Gather函数后,将所有处理器的绝对地址信息以排列的形式储存,或者
当相关进程不为根进程时,执行传递相关进程的绝对地址信息的MPI_Gather函数。
根据至少一个实施例,一种用于存储器中心型计算机的MPI程序转换***,所述***用于转换MPI并行程序的源代码,所述MPI并行程序的源代码用于多台计算机并联并执行分散处理的计算机***中,该MPI程序转换***可包括,
储存媒介,其用于储存源代码和转换的源代码;以及
处理装置,其通过分析所述源代码来提取MPI函数命令文本,利用提取的MPI函数命令文本将相关MPI函数通过网络生成与其他计算机进行通信的网络函数命令文本及生成通过总线线路直接访问由多台计算机共享的存储器的总线线路函数命令文本,然后将包括所述网络函数命令文本和总线线路函数命令文本的转换的源代码储存在所述储存媒介中。
附图说明
被包括以提供对本发明的进一步理解并且被并入且构成本说明书的一部分的附图例示本发明的示例性实施例,并且与说明书一起用于解释本发明构思。
图1例示分布式存储器结构的计算机***的结构。
图2例示存储器中心型结构的计算机***的结构。
图3是概念性地图示至少一个实施例涉及的函数转换过程的流程图。
图4根据本发明至少一个实施例图示了MPI函数之一的MPI_Send的转换过程。
图5根据本发明至少一个实施例图示了MPI函数之一的MPI_Recv的转换过程。
图6根据本发明至少一个实施例图示了MPI函数之一的MPI_Bcast的转换过程。
图7根据本发明至少一个实施例图示了MPI函数之一的MPI_Reduce的转换过程。
图8根据本发明至少一个实施例图示了MPI函数之一的MPI_Scatter的转换过程。
图9根据本发明至少一个实施例图示了MPI函数之一的MPI_Gather的转换过程。
具体实施方式
以下,参照附图对至少一个实施例涉及的MPI程序转换方法进行说明。
存储器中心型计算机(MC:Memory Centric Computer)***如图2所示,作为具有将多个单元计算机P1~Pn直接连接在十分快速的共享存储器Mshared(Shared Memory)的结构的一种***,为了进行计算机间的消息传送,不使用速度缓慢的通信网络,而是直接访问快速的共享存储器。
截至目前为止,开发的众多并行程序是使用称之为MPI(Message PassingInterface,消息传递接口)的标准库函数编写的,即使有新开发的存储器中心型计算机结构上市,由于该MPI并行程序使用速度缓慢的通信网络,因此也只能低效率地执行。
如图2所示的存储器中心型计算机不同于现有的存储器分散型计算机,具有所有的单元计算机共享共享存储器Mshared的形态,不使用如现有使用的HDD等的物理性储存装置,而只使用作为半导体储存装置的存储器Mshared。这种存储器中心型计算机***相比于接近饱和状态的CPU开发,基于仍然能够实现迅速处理及提高容量的半导体存储器的到来得到助力。
在至少一个实施例中,在执行分散处理的CPU中心的高性能计算机***的MPI并行程序中,为了使任意一台计算机所生成的数据通过存储器可被其他计算机直接访问,分析(Parsing)源代码内的MPI函数,并将相关MPI函数转换为网络函数以与其他计算机进行基本的通信,并生成通过总线线路直接访问储存其他计算机的运算结果的存储器的总线线路命令。
上述的MPI(Message Passing Interface)作为用于并行编程的标准兼容库,目前支持C,C++,Fortran等的编程语言。这种MPI作为HPC(High performance computing,高性能计算)***中使用最多的并行编程工具,由学界及产业界机构构成的MPI论坛(Forum)主管。
如图3所示,至少一个实施例涉及的程序转换方法包括:
装载源代码的步骤;
分析源代码并提取作为转换对象的MPI函数命令文本的步骤;
从所述命令文本中提取函数的参数的步骤;
定义并生成用于与其他计算机进行存储器信息传递的绝对地址传递者的步骤;
利用(或分析)提取的原始(raw)MPI函数,将所述提取的MPI函数转换为通过网络在单元计算机间进行基本通信的网络命令(一个或者多个命令语),并生成通过总线线路直接访问存储器的总线线路命令(一个或者多个命令语)的步骤;以及
储存包括在所述过程中转换的命令文本的转换的代码的步骤。
本实施例的说明书中提及的MPI是用于并行处理的典型的库的一例,但是本发明明显不限于这种特定的库。
在至少一个实施例中,通过网络函数从相关的计算机接收储存有其他计算机的运算结果的存储器的绝对地址,使接收所述绝对地址的计算机通过总线线路函数直接访问存储器上的绝对地址。
为此,在本发明至少一个实施例中,定义或者生成用于储存及传递绝对地址的结构体(Structure)及其相关的帮助函数(Helper Functions)。
在此,结构体的生成是用于传递存储器的绝对位置,很明显可由独立的一个或者多个变量、特别地由指示器变量替代。
I.绝对地址传递者(Absolute address transporter)
为了自动转换现有高性能计算机***中执行的MPI并行程序以使所述MPI并行程序在存储器中心型计算机中更加有效地执行,在至少一个实施例中定义了如下的新型结构体(structure),例如“MC_MESSAGE”。
该结构体的成员包括大小变量,所述大小变量用于储存待传递的消息的绝对地址(absolute address)的绝对地址变量和绝对地址变量的大小。定义如下的结构体MC_MESSAGE是用于表示固定大小的字节(size-1)的消息,该结构体可包括‘addr'及size',所述‘addr'用于储存地址信息和地址信息的大小,例如绝对地址,所述‘size'用于储存大小(长度)。
typedef struct{
void*addr;
int size;
}MC_MESSAGE
II.帮助函数(Helper Functions)
为了自动转换MPI并行程序以使所述MPI并行程序在存储器中心型计算机***中更加有效地执行,在至少一个实施例中定义或者生成如下的帮助函数。该函数也同样用于转换在至少一个实施例中执行的MPI函数。
A.帮助函数1:
可能需要将目前进程(process)的虚拟地址转换为绝对地址的函数。为此,在本实施例中定义帮助函数1如下。
MC_Address(addr)
函数MC_Address可将目前进程的虚拟地址“addr”转换为绝对地址并作为返回值返回绝对地址。
B.帮助函数2
可能需要将绝对地址的数据复制到目前进程的虚拟地址。为此,在本实施例中定义帮助函数2如下。
MC_Memcpy(to,from,size)
函数“MC_Memcpy”将由参数“from“传递的从绝对地址起具有“size”大小的数据复制到目前进程的虚拟地址参数“to”。
C.帮助函数3
为了与特定等级的单元计算机进行通信,可能需要向相关单元计算机发送信号的函数。为此,在本实施例中定义帮助函数3如下。
MC_Post(rank)
函数MC_Post向具有给定等级(rank,单元或者进程号码)的单元计算机(进程)发送响应信号。该函数可用于判断是否能够与相关单元计算机进行通信。
D.帮助函数4
为了与特定的单元计算机进行通信,向相关单元计算机发送信号后,可能需要等待其响应的函数。为此,在本实施例中定义帮助函数4如下。
MC_Pend(rank)
函数MC_Pend等待具有相关等级(rank)的单元计算机发送的响应信号。
E.帮助函数5
特定的单元计算机可能需要用于向相同的通信网络(communication network)上或者进程组(communicator,comm.)内的所有进程发送信号的函数。为此,在本实施例中定义帮助函数5如下。
MC_Post_all(comm)
函数MC_Post_all向构成给定的进程组(comm)的所有等级(现等级除外)发送信号。
F.帮助函数6
特定的单元计算机可能需要用于从相同的通信网络(communication network)上或者进程组(communicator,comm.)内的进程接收信号的函数。为此,在本实施例中定义帮助函数6如下。
MC_Pend_all(comm)
函数MC_Pend_all等待由构成给定的进程组(comm)的所有等级(现等级除外)发送的信号。
G.帮助函数7
可能需要对应各MPI约简运算符(reduce operator)的函数,本实施例中为此定义帮助函数7如下。
MC_Op(op)
函数MC_Op对应MPI_MAX,MPI_MIN,MPI_SUM等的MPI约简运算符而制成。
以下,根据至少一个实施例说明在现有CPU中心型高性能计算机***的MPI并行程序中转换主要的MPI函数的方法。
III.MPI的主要函数的说明
以下主要的6个MPI函数的含义如下。
MPI_Send(buffer,count,datatype,dest,tag,comm):
MPI_Send具有“buffer”,“count”,“datatype”,“dest”,“tag”,“comm”等参数。
根据这些函数,目前进程从作为存储器地址(initial address)的“buffer”向等级(rank)为“dest”的目标进程(destination process)传送(count*datatype)字节的消息。此时,可增加用于区分消息的信息标签(tag)。目标进程的等级“dest”表示属于相关进程组(comm.)的进程的等级。如果在执行该MPI函数过程中发生错误,则返回错误代码。
MPI_Recv(buffer,count,datatype,source,tag,comm,status)
MPI_Recv函数具有“buffer”,“count”,“datatype”,“source”,“tag”,“comm”,“status”等参数。执行所述MPI_Recv函数的目前进程在接收等级为“source”的进程发送的消息后,在作为存储器地址的“message”上在(count*datatype)字节的地址上储存。
此时,可使用tag作为区分接收的消息的信息。“source”表示对应进程组“comm.”所属的进程的等级。如果在执行该MPI函数过程中发送错误则返回错误代码。
MPI_Bcast(buffer,count,datatype,root,comm)
MPI_Bcast函数针对root进程和non-root进程进行不同的操作。目前进程在相关进程组(comm)中为“root”时,向相关进程组“comm”所属的root之外的所有进程,发送自作为存储器地址的“buffer”起(count*datatype)字节的消息。此外,目前进程不为root时,接收“root”进程发送的消息,并在自作为存储器地址的“message”起(count*datatype)字节的地址上储存。如果在执行该MPI函数过程中发送错误则返回错误代码。
MPI_Reduce(send_buffer,recv_buffer,count,datatype,operator,root,comm)
目前进程为“root”时,接收进程组“comm.”所属的所有进程发送的消息并执行operator(例如:MPI_MAX,MPI_MIN,MPI_SUM等)计算后,将其结果储存在“recv_buffer”中。目前进程不为“root”时,将自作为存储器地址的“send_buffer”起(count*datatype)字节的消息向“root”传递。如果在执行该MPI函数过程中发送错误则返回错误代码。
MPI_Scatter(send_buffer,send_count,send_datatype,recv_buffer,recv_
count,recv_datatype,root,comm)
目前进程为“root”时,向进程组“comm.”所属的“root”之外的所有进程,发送自作为存储器地址的“send_buffer”起(send_count*send_datatype)字节的消息。目前进程不为“root”时,接收“root”发送的消息,并在自作为存储器地址的“recv_buffer”起(recv_count*recv_datatype)字节的地址上储存。如果在执行该MPI函数过程中发送错误则返回错误代码。
MPI_Gather(send_buffer,send_count,send_datatype,recv_buffer,recv_
count,recv_datatype,root,comm)
目前进程为“root”时,接收进程组“comm.”所属的所有进程发送的消息,并作为排列在自“recv_buffer”起(recv_count*recv_datatype)字节的地址上储存。目前进程不为“root”时,向“root”传递自作为存储器地址的“send_buffer”起(send_count*send_datatype)字节的消息。如果在执行该MPI函数过程中发送错误则返回错误代码。
IV.MPI主要函数的分析(parsing)
本发明中的MPI程序转换方法将转换前面说明的现有主要的6个MPI函数,所述转换中使用作为编译器技术的分析(Parsing)及符号执行(Symbolic Execution)技术。
在分析MPI函数的过程中,通过符号执行,对调用MPI程序内各MPI函数的执行条件通过分析调用函数MPI_Comm_rank时的rank(=MPI逻辑进程号码)引数(argument),并表现为现进程的等级(rank)值(例如:rank==0或者rank>0等),对于上述信息和各MPI函数调用的引数通过使用给定的等级(rank)信息,并判断各MPI函数的调用者是sender或者是receiver。
根据本发明的MPI函数转换(MPI函数调用转换)在调用MPI程序内的各MPI函数的过程中,在源级别上由多字节(size-m)消息转换为固定大小字节(size-1)消息,此时通过使用前面分析的各MPI函数调用的sender与receiver信息来有条件地进行转换。
V.主要的MPI函数的转换
以下,对前面所述的6个主要的MPI函数的转换方法的各种实施例进行说明。
各MPI函数的转换方法如图4至图9所示的流程图。
图4至图9中所示的各流程图图示了当各MPI函数被转换时,转换的程序的执行流程。在转换过程中基于源代码的分析来提取MPI函数及该函数的参数(parameters),并基于利用所述函数及其参数生成的多个命令行生成转换的代码。
<MPI_Send函数转换例>
图4根据本发明至少一个实施例图示了MPI函数之一的MPI_Send的转换(置换)过程。
如上述例子,具有1列的命令行的原型输入代码根据本发明的方法生成依时间顺序的多列,本实施例中依次生成5列的命令行。
<MPI_Recv函数转换例>
图5根据本发明至少一个实施例图示了MPI函数之一的MPI_Recv的转换过程。
如上述例文中所示,根据本发明,MPI_Recv函数的第2参数作为常数“1”被传递。MPI_Recv函数最终接收1字节的mc_buffer。然后,MC_Memcpy函数利用所述mc_buffer的地址及大小信息将存储器上的数据储存在“buffer”上。
<MPI_Bcast函数转换>
图6根据本发明至少一个实施例图示了MPI函数之一的MPI_Bcast的转换过程。
<MPI_Reduce函数转换>
图7根据本发明至少一个实施例图示了MPI函数之一的MPI_Reduce的转换过程。
<MPI_Scatter函数转换>
图8根据本发明至少一个实施例图示了MPI函数之一的MPI_Scatter的转换过程。
<MPI_Gather函数转换>
图9根据本发明至少一个实施例图示了MPI函数之一的MPI_Gather的转换过程。
通过上述实施例,揭示了能够将应用于现有分布式存储器结构的HPC上的MPI程序直接应用于存储器中心型结构的HPC上的MPI程序转换方法及装置。其结果,根据本发明能够将用于分布式存储器结构的HPC而开发的大量的MPI程序无需大的改动便可直接应用于存储器中心型结构的HPC,从而具有巨大的经济性优点。
虽然已在此描述了某些示例性实施例和实施方式,但是根据该描述,其它实施例和修改将是明显的。因此,本发明构思不限于这些实施例,而是限于所附权利要求的更宽范围,并且对于本领域普通技术人员来说,各种显而易见的修改和等同布置将是明显的。
Claims (19)
1.一种用于存储器中心型计算机的MPI程序转换方法,其中,该方法包括:
使执行分散处理的多台计算机装载并联的高性能计算机***用MPI并行程序的源代码的步骤;
通过分析所述源代码来提取MPI函数命令文本的步骤;
利用所述MPI函数命令文本将相关的MPI函数通过网络生成与另一计算机进行通信的网络函数命令文本及生成通过总线线路直接访问由多台计算机共享的存储器的总线线路函数命令文本的步骤;以及
储存包括所述网络函数命令文本和总线线路函数命令文本的转换的源代码的步骤。
2.如权利要求1所述的用于存储器中心型计算机的MPI程序转换方法,其中,
所述网络函数命令文本包括用于储存绝对地址信息的绝对地址传递者。
3.如权利要求2所述的用于存储器中心型计算机的MPI程序转换方法,其中,
所述绝对地址传递者由包括所述存储器的绝对地址信息的结构体(对象)生成。
4.如权利要求1所述用于存储器中心型计算机的MPI程序转换方法,其中,
所述MPI函数包括MPI_Send、MPI_Recv、MPI_Bcast、MPI_Reduce、MPI_Scatter、MPI_Gather中至少一个。
5.如权利要求4所述的用于存储器中心型计算机的MPI程序转换方法,其中,
包括所述MPI_Send函数的命令文本包括作为参数的用于储存绝对地址信息的绝对地址传递者,在执行所述MPI_Send函数命令文本后,等待来自目标计算机的响应。
6.如权利要求4所述的用于存储器中心型计算机的MPI程序转换方法,其中,
包括所述MPI_Recv函数的命令文本包括作为参数的用于储存绝对地址信息的绝对地址传递者,在执行所述MPI_Recv函数命令文本后,向执行MPI_Send函数命令语的源计算机发送响应信号。
7.如权利要求4所述的用于存储器中心型计算机的MPI程序转换方法,其中,
包括所述MPI_Bcast函数的命令文本为:
当相关进程为根进程时,在执行向其他所有进程传递绝对地址信息的MPI_Bcast函数后,等待来自其他所有进程的响应,或者
当相关进程不为根进程时,在执行MPI_Bcast函数后,向根进程传送响应信号。
8.如权利要求4所述的用于存储器中心型计算机的MPI程序转换方法,其中,
包括所述MPI_Reduce函数的命令文本为:
当相关进程为根进程时,接收其他所有进程的绝对地址信息并执行运算符计算的MPI_Reduce函数,或者
当相关进程不为根进程时,执行MPI_Reduce函数以将相关进程的绝对地址信息向根进程传递。
9.如权利要求4所述的用于存储器中心型计算机的MPI程序转换方法,其中,
包括所述MPI_Scatter函数的命令文本为:
当相关进程为根进程时,执行MPI_Scatter函数以传递其他所有进程的绝对地址信息的排列,或者
当相关进程不为根进程时,执行MPI_Scatter函数以将根进程传送的消息储存在相关进程的绝对地址信息中。
10.如权利要求4所述的用于存储器中心型计算机的MPI程序转换方法,其中,
包括所述MPI_Gather函数的命令文本为:
当相关进程为根进程时,在执行将其他进程的绝对地址信息以排列的形式储存在相关进程的绝对地址上的MPI_Gather函数后,将所有处理器的绝对地址信息以排列的形式储存,或者
当相关进程不为根进程时,执行传递相关进程的绝对地址信息的MPI_Gather函数。
11.一种用于存储器中心型计算机的MPI程序转换装置,所述装置用于转换MPI并行程序的源代码,所述MPI并行程序的源代码用于多台计算机并联并执行分散处理的计算机装置中,其中,该MPI程序转换***包括:
储存媒介,其用于储存源代码和转换的源代码;
处理装置,其通过分析对所述源代码来提取MPI函数命令文本,利用提取的MPI函数命令文本将相关MPI函数通过网络生成与其他计算机进行通信的网络函数命令文本及生成通过总线线路直接访问由多台计算机共享的存储器的总线线路函数命令文本,然后将包括所述网络函数命令文本和总线线路函数命令文本的转换的源代码储存在所述储存媒介中。
12.如权利要求11用于存储器中心型计算机的MPI程序转换***,其中,
所述网络函数命令文本包括用于存储绝对地址信息的绝对地址传递者。
13.如权利要求12所述的用于存储器中心型计算机的MPI程序转换***,其中,
所述绝对地址传递者由包括所述存储器的绝对地址信息的结构体(对象)生成。
14.如权利要求11所述的用于存储器中心型计算机的MPI程序转换***,其中,
包括所述MPI_Send函数的命令文本包括作为参数的储存绝对地址信息的绝对地址传递者,在执行所述MPI_Send函数命令文本后,等待来自目标计算机的响应。
15.如权利要求11所述的用于存储器中心型计算机的MPI程序转换***,其中,
包括所述MPI_Recv函数的命令文本包括作为参数的用于储存绝对地址信息的绝对地址传递者,在执行所述MPI_Recv函数命令文本后,向执行MPI_Send函数命令语的源计算机发送响应信号。
16.如权利要求11所述的用于存储器中心型计算机的MPI程序转换***,其中,
包括所述MPI_Bcast函数的命令文本为:
当相关进程为根进程时,在执行向其他所有进程传递绝对地址信息的MPI_Bcast函数后,等待来自其他所有进程的响应,或者
当相关进程不为根进程时,在执行MPI_Bcast函数后,向根进程传送响应信号。
17.如权利要求11所述的用于存储器中心型计算机的MPI程序转换***,其中,
包括所述MPI_Reduce函数的命令文本为:
当相关进程为根进程时,接收其他所有进程的绝对地址信息并执行运算符计算的MPI_Reduce函数,或者
当相关进程不为根进程时,执行将相关进程的绝对地址信息向根进程传递的MPI_Reduce函数。
18.如权利要求11所述的用于存储器中心型计算机的MPI程序转换***,其中,
包括所述MPI_Scatter函数的命令文本为:
当相关进程为根进程时,执行MPI_Scatter函数以传递其他所有进程的绝对地址信息的排列,或者
当相关进程不为根进程时,执行MPI_Scatter函数以将根进程传送的消息储存在相关进程的绝对地址信息中。
19.如权利要求11所述的用于存储器中心型计算机的MPI程序转换***,其中,
包括所述MPI_Gather函数的命令文本为:
当相关进程为根进程时,在执行将其他进程的绝对地址信息以排列的形式储存在相关进程的绝对地址中的MPI_Gather函数后,将所有处理器的绝对地址信息以排列的形式储存,或者
当相关进程不为根进程时,执行传递相关进程的绝对地址信息的MPI_Gather函数。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2018-0128371 | 2018-10-25 | ||
KR20180128371 | 2018-10-25 | ||
KR10-2018-0160347 | 2018-12-12 | ||
KR1020180160347A KR102126896B1 (ko) | 2018-10-25 | 2018-12-12 | 메모리 중심 컴퓨터를 위한 mpi 프로그램 변환 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111104119A true CN111104119A (zh) | 2020-05-05 |
Family
ID=70326770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911011909.6A Pending CN111104119A (zh) | 2018-10-25 | 2019-10-23 | 用于存储器中心型计算机的mpi程序转换方法及装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10963323B2 (zh) |
CN (1) | CN111104119A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118012818A (zh) * | 2024-04-10 | 2024-05-10 | 山东省计算中心(国家超级计算济南中心) | 一种基于新一代申威众核处理器的进程间通信优化方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200358721A1 (en) * | 2020-07-30 | 2020-11-12 | Intel Corporation | Buffer allocation for parallel processing of data |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6457106B1 (en) * | 1997-07-22 | 2002-09-24 | Nec Corporation | Shared memory control system and shared memory control method |
US20070174558A1 (en) * | 2005-11-17 | 2007-07-26 | International Business Machines Corporation | Method, system and program product for communicating among processes in a symmetric multi-processing cluster environment |
US20100161911A1 (en) * | 2007-05-31 | 2010-06-24 | Eric Li | Method and apparatus for mpi program optimization |
CN101937367A (zh) * | 2009-06-30 | 2011-01-05 | 英特尔公司 | Mpi源代码程序到基于mpi线程的程序的自动转换 |
KR20140071194A (ko) * | 2012-12-03 | 2014-06-11 | 삼성전자주식회사 | 집합 통신 수행 방법 및 이를 이용한 집합 통신 시스템 |
US20180069803A1 (en) * | 2016-09-08 | 2018-03-08 | Bull Sas | Message exchange during parallel execution of processes in a high-performance computer |
US9959238B1 (en) * | 2014-12-23 | 2018-05-01 | EMC IP Holding Company LLC | Message passing among interdependent parallel processes using a shared memory |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR0176088B1 (ko) | 1995-12-06 | 1999-05-15 | 양승택 | 병렬 컴파일러 및 그 제어 병렬화 설계방법 |
JP6696315B2 (ja) | 2016-06-17 | 2020-05-20 | 富士通株式会社 | 並列処理装置及びメモリキャッシュ制御方法 |
US10810064B2 (en) * | 2018-04-27 | 2020-10-20 | Nasdaq Technology Ab | Publish-subscribe framework for application execution |
-
2019
- 2019-10-22 US US16/659,761 patent/US10963323B2/en active Active
- 2019-10-23 CN CN201911011909.6A patent/CN111104119A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6457106B1 (en) * | 1997-07-22 | 2002-09-24 | Nec Corporation | Shared memory control system and shared memory control method |
US20070174558A1 (en) * | 2005-11-17 | 2007-07-26 | International Business Machines Corporation | Method, system and program product for communicating among processes in a symmetric multi-processing cluster environment |
US20100161911A1 (en) * | 2007-05-31 | 2010-06-24 | Eric Li | Method and apparatus for mpi program optimization |
CN101937367A (zh) * | 2009-06-30 | 2011-01-05 | 英特尔公司 | Mpi源代码程序到基于mpi线程的程序的自动转换 |
KR20140071194A (ko) * | 2012-12-03 | 2014-06-11 | 삼성전자주식회사 | 집합 통신 수행 방법 및 이를 이용한 집합 통신 시스템 |
US9959238B1 (en) * | 2014-12-23 | 2018-05-01 | EMC IP Holding Company LLC | Message passing among interdependent parallel processes using a shared memory |
US20180069803A1 (en) * | 2016-09-08 | 2018-03-08 | Bull Sas | Message exchange during parallel execution of processes in a high-performance computer |
Non-Patent Citations (1)
Title |
---|
胡晨骏;王晓蔚;: "基于多核集群***的并行编程模型的研究" * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118012818A (zh) * | 2024-04-10 | 2024-05-10 | 山东省计算中心(国家超级计算济南中心) | 一种基于新一代申威众核处理器的进程间通信优化方法 |
Also Published As
Publication number | Publication date |
---|---|
US20200133749A1 (en) | 2020-04-30 |
US10963323B2 (en) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5274730B2 (ja) | PCIeアーキテクチャ中でのI/O拡張要求および応答のルーティング | |
US8325633B2 (en) | Remote direct memory access | |
US8490113B2 (en) | Messaging in a parallel computer using remote direct memory access (‘RDMA’) | |
US11050814B2 (en) | Method, device and vehicle for message deduplication | |
US20080273543A1 (en) | Signaling Completion of a Message Transfer from an Origin Compute Node to a Target Compute Node | |
CN111104119A (zh) | 用于存储器中心型计算机的mpi程序转换方法及装置 | |
US20080301704A1 (en) | Controlling Data Transfers from an Origin Compute Node to a Target Compute Node | |
US20090265492A1 (en) | Data transmission device | |
CN112506676B (zh) | 进程间的数据传输方法、计算机设备和存储介质 | |
US7889657B2 (en) | Signaling completion of a message transfer from an origin compute node to a target compute node | |
CN116257471A (zh) | 一种业务处理方法及装置 | |
RU2598594C2 (ru) | Нечувствительный к задержке буфер транзакции для связи с квитированием | |
US9088594B2 (en) | Providing to a parser and processors in a network processor access to an external coprocessor | |
CN113507530B (zh) | 数据转发方法、相关***和设备及存储介质 | |
KR102126896B1 (ko) | 메모리 중심 컴퓨터를 위한 mpi 프로그램 변환 방법 및 장치 | |
CN113849449A (zh) | 一种通信***和信息交互方法、设备和介质 | |
JP2739830B2 (ja) | マルチプロセッサシステム用データ通信装置 | |
US20030196008A1 (en) | Method and apparatus for checking the state of peripherals | |
CN110727391A (zh) | 交易数据存储方法及装置、区块链***、介质和电子设备 | |
US20240111694A1 (en) | Node identification allocation in a multi-tile system with multiple derivatives | |
CN116226027B (zh) | 数据传输***、方法、装置、通信设备及存储介质 | |
US10452579B2 (en) | Managing input/output core processing via two different bus protocols using remote direct memory access (RDMA) off-loading processing system | |
WO2023134588A1 (zh) | 计算***、方法、装置及加速设备 | |
CN115866094A (zh) | 一种数据传输***、方法及电子设备 | |
Kwon et al. | A Study on Verification System to Support Efficient Interface Test in Embedded System |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200505 |