資源描述:
《MPI并行程序設計自學教程》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、并行程序設計簡介曙光信息產(chǎn)業(yè)(北京)有限公司1講座內(nèi)容提示基本概念基本的MPI點到點通信(Pointtopoint)MPI中API的主要內(nèi)容,為MPI最基本,最重要的內(nèi)容MPI程序的編譯和運行實例2參考文獻MPI--thecompletereference.MarcSnir,MITPress,1998.ISBN0262692155,0262692163.UsingMPI:portableparallelprogrammingwiththemessage-passinginterface,Will
2、iamGropp,MITPress,1999.2ndedition.ISBN0262571323.UsingMPI-2:advancedfeaturesofthemessage-passinginterface.WilliamGropp,MITPress,1999.ISBN0262571331.高性能計算并行編程技術(shù)-MPI并行程序設計,都志輝,清華大學出版社,2001年8月.3多線程庫標準–Win32API.–POSIXthreads.編譯制導標準–OpenMP–可移植共享存儲并行編程標準.消
3、息傳遞庫標準–MPI–PVM并行編程標準本討論的重點4消息傳遞并行程序設計消息傳遞并行程序設計指用戶必須通過顯式地發(fā)送和接收消息來實現(xiàn)處理機間的數(shù)據(jù)交換。在這種并行編程中,每個并行進程均有自己獨立的地址空間,相互之間訪問不能直接進行,必須通過顯式的消息傳遞來實現(xiàn)。這種編程方式是大規(guī)模并行處理機(MPP)和機群(Cluster)采用的主要編程方式。并行計算粒度大,特別適合于大規(guī)??蓴U展并行算法由于消息傳遞程序設計要求用戶很好地分解問題,組織不同進程間的數(shù)據(jù)交換,并行計算粒度大,特別適合于大規(guī)??蓴U
4、展并行算法.消息傳遞是當前并行計算領(lǐng)域的一個非常重要的并行程序設計方式5什么是MPI?MassagePassingInterface:是消息傳遞函數(shù)庫的標準規(guī)范,由MPI論壇開發(fā),支持Fortran和C一種新的庫描述,不是一種語言。共有上百個函數(shù)調(diào)用接口,在Fortran和C語言中可以直接對這些函數(shù)進行調(diào)用MPI是一種標準或規(guī)范的代表,而不是特指某一個對它的具體實現(xiàn)MPI是一種消息傳遞編程模型,并成為這種編程模型的代表和事實上的標準6MPI的發(fā)展過程發(fā)展的兩個階段MPI1.1:1995MPICH
5、:是MPI最流行的非專利實現(xiàn),由Argonne國家實驗室和密西西比州立大學聯(lián)合開發(fā),具有更好的可移植性.MPI1.2~2.0:動態(tài)進程,并行I/O,遠程存儲訪問、支持F90和C++(1997).7為什么要用MPI?高可移植性MPI已在IBMPC機上、MSWindows上、所有主要的Unix工作站上和所有主流的并行機上得到實現(xiàn)。使用MPI作消息傳遞的C或Fortran并行程序可不加改變地運行在IBMPC、MSWindows、Unix工作站、以及各種并行機上。8?:從簡單入手—Init和Finali
6、ze下面我們首先分別以C語言和Fortran語言的形式給出一個最簡單的MPI并行程序Hello(下頁).該程序在終端打印出HelloWorld!字樣.“HelloWorld”:一聲來自新生兒的問候.9Helloworld(C)#include#include"mpi.h“main(intargc,char*argv[]){MPI_Init(&argc,&argv);printf("Hello,world!");MPI_Finalize();}10Helloworld(For
7、tran)programmaininclude‘mpif.h’integerierrcallMPI_INIT(ierr)print*,'Hello,world!'callMPI_FINALIZE(ierr)end11C和Fortran中MPI函數(shù)約定C必須包含mpi.h.MPI函數(shù)返回出錯代碼或MPI_SUCCESS成功標志.MPI-前綴,且只有MPI以及MPI_標志后的第一個字母大寫,其余小寫.Fortran必須包含mpif.h.通過子函數(shù)形式調(diào)用MPI,函數(shù)最后一個參數(shù)為返回值.MPI-前綴
8、,且函數(shù)名全部為大寫.MPI函數(shù)的參數(shù)被標志為以下三種類型:IN:參數(shù)在例程的調(diào)用中不會被修正.OUT:參數(shù)在例程的調(diào)用中可能會被修正.INOUT:參數(shù)有初始值,且在例程的調(diào)用中可能會被修正12MPI初始化-MPI_INITintMPI_Init(int*argc,char**argv)MPI_INIT(IERROR)MPI_INIT是MPI程序的第一個調(diào)用,它完成MPI程序的所有初始化工作。所有的MPI程序的第一條可執(zhí)行語句都是這條語句。啟動MPI環(huán)境,標志并行代碼的開始.并行代碼之前,第一個