opendocdocument-平行计算程式设计.docx
《opendocdocument-平行计算程式设计.docx》由会员分享,可在线阅读,更多相关《opendocdocument-平行计算程式设计.docx(243页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C語言MPI平行計算程式設計編著:鄭守成期間:民國91年1月1日電 話:(03) 5776085 x 305E-mail: c00tch00nchc.gov.twC語言MPI平行計算程式設計1第一章前言61.1 MP1平行計算軟體71.2 國家高速電腦中心的平行計算環境81.3 在1BMSP2上如何使用MPI101.3.1 1BMSP2的MPI C程式編譯指令101.3.2 IBM SP2 的 Job command file111.3.3 IBM SP2的 平行程式的執行指令131.4 在PC Cluster上如何使用MPI161.4.1 PC Cluster上C語言的MPI程式編譯指令16
2、1.4.2 PC Guster 上的 Job command file171.4.3 PC Guster上的平行程式執行指令18第二章無邊界資料交換的平行程式202.1 MP!基本指令212.1.1 mpi.h include file212.1.2 MPIJnit, MPI_Finalize222.1.3 MPI_Comm_size, MPI_Comm_rank222.1.4 MPI_Send, MPI_Recv242.2 無邊界資料交換的循序程式T2SEQ272.3 資料不切割的平行程式T2cp292.4 MPI_Scatter , MPI_Gather , MPI_Reduce352.4
3、.1 MPI_Scatter , MPI_Gather352.4.2 MPI_Reduce, MPI_Allreduce382.5 資料切割的平行程式T2DCP41第三章需要邊界資料交換的平行程式453.1 MPI_Sendrecv, IvPI_Bcast463.1.1 MPI_ Shndrecv463.1.2 MPI_Bcast473.2 邊界資料交換的循序程式T3SEQ493.3 資料不切割的邊界資料交換平行程式T3CP513.4 資料切割的邊界資料交換平行程式(一)T3DCP603.5 資料切割的邊界資料交換平行程式(二)T3DCP_266第四章格點數不能整除的平行程式724.1 格點數
4、不能整除的循序程式T4SEQ734.2 . MPI_Scatterv、MPI_Gatherv754.3 MPI_Pack、MPI_Unpack、MPI_Barrier、MPI_ Wtime784.3.1 MPI_Pack、MPI_Unpack784.3.2 MPLBarrier、MPI_Wtime814.4 資料切割的平行程式T4DCP84第五章多維陣列的平行程式915.1 多維陣列的循序程式T5SEQ925.2 多維陣列資料不切割的平行程式T5CP965.3 多維陣列第一維資料切割的平行程式T5DCP1045.4 定義二維切割的MPI函式1115.4.1 垂直座標圖示法則(Cartesian
5、Topology)1115.4.2 界定二維切割的 MP! 函式 MPI_Cart_create112MPI_Cart_coords、MPI_Cart_shift1125.4.3 定義固定間隔資料的MP!函式117MPI_Type_vector、MPI_Type_commit1175.5 多維陣列首二維切割的平行程式T5_2D119第六章MPI程式的效率提昇1336.1 Nonblocking 資料傳送1346.2 資料傳送的合併1446.3 以邊界資料計算取代邊界資料交換1496.4 輸出入資料的安排1516.4.1 事先切割輸入資料1516.4.2 事後收集切割過的輸出資料157第七章導出
6、的資料類別1607.1 導出的資料類別1617.2 陣列的轉換1687.3 兩方迴歸與管線法179第八章 多方依賴及SOR解法1888.1 四方依賴及SOR解法1898.2 黑白點間隔SOR解法1948.3 斑馬線SOR解法2048.4 八方依賴與四色點間隔SOR解法213第九章有限元素法程式2239.1 有限元素法的循序程式2249.2 有限元素法的平行程式228參考書目240Parallel Processing of 1-D Arrays without Partition241Parallel Processing of 1-D Arrays with Partition242Para
7、llel on the 1st Dimension of 2-D Arrays without Partition243Parallel on the 1st Dimension of 2-D Arrays with Partition244Partition on the 1st dimension of 3-D Arrays245第一章前言本章將介紹MP!平行計算軟體、國家高速電腦中心現有的平行計算環境、以及在各型機器上如何使用MPIo第一節簡單介紹MP!平行計算軟體。第二節介紹國家高速電腦中心現有的平行計算環境。第三節介紹如何在!BM SP2上使用MPI,包括路徑的設定、平行程式的編譯、
8、及平行程式 的執行等。第四節介紹如何在PC cluster上使用MPI ,包括路徑的設定、平行程式的編譯、及平行程式 的執行等。1.1 MPI平行計算軟體MPI (Message Passing Interface)是第一個標準化的Message Passing平行語言。可以使用 在Fortran, C、C+等語言撰寫的程式上。MPI平行程式可以在分散式記憶體平行系統上執 行,也可以在共用記憶體cluster平行系統上執行。目前系統廠商所提供的MPI軟體是屬於 MPI1.2版。它提供了一百多個函式,讓程式人員來選用。MP!協會在1998年公布了 MPI 2.0版的規格,數年之後就會有MPI 2
9、.0版的軟體可用了。日前美國的Argonne National Lab 已經公布了 MPICH 1.2版的整套軟體,該版含有MPI 2.0版的部份功能。有興趣的讀者可 以免費自網路下載該軟體,其網址是http:/www-unix.mcs.anl.gov/mpi/mpich也可以用anonymous ftp下載該軟體,其網址是ftp.mcs.anl.gov其下目錄(directory) pub/mpi 裏檔名 mpich-1.2.1.tar.Z 或 mpich-1.2.l.tar.gz ,在該目錄之下還有許多與MPI相關的資訊可供參考。1.2 國家高速電腦中心的平行計算環境目前國家高速電腦中心的
10、 !BM SP厶 !BM SP2 SMP、HP SPP2000, SGI 0rigin2000 和 Fujitsu VPP300等系統上均有該公司自備的MP!平行軟體,PC cluster上是裝用MPICH公用平行 軟體,也都有能力執行平行程式但是到目前為止,只有PC cluster; IBM SP2和!BM SP2 SMP 設有一個CPU只執行一個程式的平行環境,其他機器上則無此種設定。例如,若有一個用戶 要用四個CPU來執行其平行程式,他在IBM SP2上取得四個CPU之後,這四個CPU就僅 只執行這個平行程式直到它執行完畢為止,不會有其他程式進來跟他搶CPU時間。但是在其 他機器(如HP
11、SPP2000)上取得四個CPU之後,如果所有使用者對CPU的需求數量超過該 系統的CPU總數時,他所取得四個CPU之中的每一個CPU ,都有可能要跟其他程式以分時 方式(time sharing)共用一個 CPU。HP SPP2OOO和SGI ORIGIN2000為共用記憶體平行系統,這種電腦系統是16顆CPU共用 一組記憶體。SP2和VPP3OO是屬於分散式記憶體平行系統,每一個CPU備有它獨用的記 憶體。SP2 SMP是共用記憶體及分散式記憶體混合的平行系統,每一個node備有4顆CPU 共用一組記憶體,目前備有42個node的SMP luster。SP2和SP2 SMP是採用該系統專屬
12、的 工作排程軟體(job scheduler) LoadLeveler來安排用戶的批次工作(batch job)。使用者必須備 妥LoadLeveler的job command file ,使用llsubmit指令把該批次工作交給SP2來執行。SPP2000, ORIGIN2000 和 VPP300 是採用 NQS (Network Queue System)工作排程軟體來安排用戶的批次工作。使用者必須備妥NQS的job command file,使用qsub指令把該批次工作 交給各該系統來執行。PC cluster是採用DQS (Distributed Queue System)工作排程軟體
13、來安排用戶的批次工作,其使用方式類似NQS。1.3 在IBM SP2上如何使用MPI首先,C shell用戶要在自己home directory的.cshrc檔裏加入下列路徑,這樣才能夠抓得到 include file (mpif.lx mpif90.K mpi.h、編譯指令(mpxlR mpxlf9(X mpeg mpCCX MPI library、 和 LoadLeveler 指令(llsubmit、llq、!lstatus llcancel)set lpath=(. /usr/1 pp/ppe.poe/include /usr/lpp/ppe.poe/lib)set lpath=($lp
14、ath /usr/lpp/ppe.poe/bin /home/loadl/bin ) set path=($path $lpath)加好上述路徑之後,將.cshrc存檔,再執行source .cshrc指令,即可進行平行程式的編譯與執 行。簽退(logout)後再簽到(login)之後就不必再執行source .cshrc指令。1.3.1 IBMSP2的MPI C程式編譯指令使用MPI的C平行程式,其編譯器(compiler) 一般叫做mpicc ,但是在IBM SP2和SP2 SMP上卻叫做mpcco mpcc常用的編譯選項如下:mpcc -03 -qarch=auto -qstrict -
15、o file.x file.f其中選項03是作最高級的最佳化(level 3 0Ptimization),可使程式的計算速度加快數倍-qarch=auto是通知編譯器該程式要在同型機器上執行-qstrict是通知編譯器不要改變計算的順序-o file.x是指定執行檔名為file.x ,不指定時其內定(default)檔名為a.out1.3.2 IBM SP2 的 Job command file要在IBM SP2(ivy)上執行平行程式,使用者必須備妥oadLeveler的job command fileo例如,下面這個job command file叫做jobp4 ,它要在四個CPU上執行平
16、行程式file.xo#!/bin/csh# executable = /usr/bin/poe# arguments = /your_working_directory/file.x -euilib us# ouput=oup4# tfror=oup4# job_type=parallel# dass=medium# min_processors = 4# max_processors = 4# requirements = (Adapter = hps_user”)# wall_clock_limit = 20# queue其中 executable = /usr/bin/poe 是固定不變
17、,poe 是指 Parallel Operating Environmentarguments =執行檔所在之全路徑及檔名output=標準輸出檔名(stdout)error=錯誤訊息(errormessage)輸出檔名class=SP2 CPU的分組別,使用llclass指令可以看到分組別:short(CPU時間上限為12小時,共有10顆120MHz CPU)medium (CPU時間上限為24小時,共有64顆160MHz CPU)long (CPU時間上限為96小時,共有24顆120MHz CPU)min_processors =最少的 CPU 數目max_processors =最多的
18、CPU 數目requirements = (Adapter”hps_user)是固定不變wall_clockimit二該job最多需要的時間,單位為分鐘queue是固定不變平行計算可以使用的CPU數目,short class最多4個CPU, medium class最多32個CPU, long class最多8個CPU。由於MPI 1.2版不具備取得CPU、控制CPU、和歸還CPU的功 能,所以min_processors和max_processors要填相同的數字。如果所需要的時間較短時,加 上wall_clock_limit可以較早排入執行的行列。要在IBM SP2 SMP(ivory)上
19、執行平行程式,使用者必須備妥LoadLeveler的job command file例如,下面這個job command file叫做jobp4 ,它要在四個CPU上執行平行程式file.x#!/bin/csh# network.mpi二 cssO,shared,us# executable 二 /usr/bin/poe# arguments = /your_working_directory/file.x euilib us# ouput= oup4# tfror= oup4# job_type= parallel# dass= medium# tasks_per_node = 4# nod
20、e = 1# wall_clock_limit = 20# queue由於!BM SP2 SMP每個Node含有四棵375MHz CPU共用4GB或8GB的記憶體。class=SP2 SMP CPU的分組別,使用llclass指令可以看到分組別:short (CPU時間上限為12小時,3個Node共有6顆CPU)medium (CPU時間上限為24小時,32個Node共有!28顆CPU)bigmem (CPU時間上限為48小時,4個Node共有16顆CPU)這個class 一個Node備有8GB的共用記憶體tasks_per_node=4是說明一個Node選用四棵CPUnode= 1是說明要用
21、一個Node ,共四棵CPU平行計算可以使用的CPU數目medium class是16個Node 一共64顆CPU ,其他class不設 限。1.3.3 IBM SP2的平行程式的執行指令要在IBM SP2及SP2 SMP上執行平行程式,使用者在備妥LoadLeveler的job command file 之後,就可以使用!lsubmit指令將該job command file交給該系統排隊等候執行。例如上一節的job command file例子jobp4即可用下述指令交付執行:llsubmit jobp4工作交付之後,該工作執行的情形可用!lq指令查詢。要縮小查詢的範圍可在llq指令之後加
22、 上grep指令敘明要查詢的class或user id(例如上一個例子jobp4所選用的分組別為medium, 就可用下述指令進行查詢:llq I grep mediumllq顯示之內容有下列事項:job_iduser_idsubmittedstatus piorityclassrunning onivyl.1781.0u43ycc008/13 U:24R50mediumivy39ivyl.1814.0u50pao008/13 2012R50shortivy35其中job_id是LoadLeveler給交付的工作編定的工作代號user_id是使用者的login namesubmitted是交付
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- opendocdocument 平行 计算 程式 设计
限制150内