天天看點

《并行計算的程式設計模型》一1.1 引言

Programming Models for Parallel Computing

消息傳遞接口

William D. Gropp,伊利諾伊大學厄巴納–香槟分校

Rajeev Thakur,阿貢國家實驗室

在使用分布式記憶體程式設計模型的并行程式中,MPI是一個标準和可移植的通信接口。MPI既為并行通信提供豐富的函數接口,也為并行檔案I/O通路等提供函數接口。同時,MPI也支援多程式多資料(MPMD)程式設計模型。MPI是一種基于庫的系統,而非編譯器或者程式設計語言。MPI庫函數通過C和Fortran語言實作。MPI指由函數名、參數、語義構成的專門的函數接口,而非特定的函數實作。MPI論壇負責定義和制定MPI,該論壇由大量來自工業、學術、研究實驗室等機構的專家和使用者組成。目前,高性能MPI庫已在各種計算平台(例如筆記本、桌上型電腦、伺服器、叢集、商業化的高性能計算機)和作業系統上得到應用,進而更加友善地在各種計算平台上實作高性能和可移植的并行程式。是以,在并行科學應用領域,MPI成為應用最廣泛的程式設計接口。

MPI背景

1992年,人們開始嘗試為消息傳遞定義一種獨立和标準化的接口。當時,許多應用程式程式設計接口是不同且無法移植的,例如計算機廠商提供的程式設計接口(Intel NX [232]、IBM EUI [119]、Thinking Machines CMMD [272]、nCUBE [207])和其他研究庫(PVM [121]、p4 [51]、Chameleon [130]、Zipcode [254])。采用上述程式設計接口開發的應用程式無法在不同的機器上運作或者高效運作。如果一家計算機廠家倒閉,基于該廠家提供的程式設計接口開發的應用程式将無法運作。應用程式程式設計接口的多樣性阻礙了應用程式開發。是以,需要人們為應用程式開發定義一種獨立和标準化的接口。

1994年,MPI釋出了第一個版本(MPI-1)。它包含基本的消息傳遞特性,例如點對點通信、聚合通信、資料類型和非阻塞式通信。1997年,MPI論壇釋出了MPI的第二個主要版本(MPI-2)。MPI-2對MPI-1進行了擴充,增加了單邊通信、并行I/O和動态程序等特性。2012年,釋出了MPI的第三個主要版本(MPI-3)。MPI-3包含非阻塞聚合通信、相鄰聚合通信等新特性,并對單邊通信接口進行了大量擴充。在本章中,我們将介紹這些新的特性。

繼續閱讀