平行计算程式设计.docx
《平行计算程式设计.docx》由会员分享,可在线阅读,更多相关《平行计算程式设计.docx(234页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Fortran BeMPI平行tl算程式编著:奠B守成期山民国192年2月12日15: (03) 5776085 x 305E-mail : cOOtchOOnchc.gov.twFortran II 言1MPI平行tt算程式1第一章前言61.1 MPI平行算戟醴71.2 g|家高速路舆tt算中心的平行it算璟境81.3 在IBM系统上如何使用MPI101.3.1 IBM系统的MPI Fortran程式编群指令101.3.2 IBM 系统的 Job command file111.3.3 IBM系统的平行程式的轨行指令141.4 在PCCluster上如何使用MPI171.4.1 PC Clu
2、ster 上的 MPI Fortran 程式编葬指令171.4.2 PC Cluster 上的 Job command file181.4.3 PC Cluster上的平行程式轨行指令19第二章舞遑界资料交换的平行程式212.1 MPI基本指令222.1.1 mpif.h include file222.1.2 MPI_INIT, MPI_HNALIZE232.1.3 MPI_COMM_SIZE, MPI_COMM_RANK232.1.4 MPI_SEND, MPI_RECV242.2 瓢遵界资料交换的循序程式T2SEQ282.4 MPI_SCATTER , MPI_GATHER , MPI_
3、REDUCE362.4.1 MPI_SCATTER , MPI_GATHER362.4.2 MPI_REDUCE, MPI_ALLREDUCE392.5 资料切割的平行程式T2DCP42第三章需要遵界资料交换的平行程式463.1 MPI_SENDRECY MPI_BCAST473.1.1 MPI_SENDRECV473.1.2 MPI.BCAST483.2 遏界资料交换的循序程式T3SEQ503.3 资料不切割的暹界资料交换平行程式T3cp523.4 资料切割的遏界资料交换平行程式(一)T3DCP_1613.5 资料切割的遏界资料交换平行程式(二)T3DCP_266第四章格黠数不能整除的平行程
4、式724.1 格黠数不能整除的循序程式T4SEQ734.2 .MPLSCATTERV、MPI_GATHERV754.3 MPI_PACK、UNPACK. BARRIER. WTIME794.3.1 MPI_PACK、MPI_UNPACK794.3.2 MPI_BARRIER、MPI_WTIME834.4 资料切割的平行程式T4DCP85第五章多雉障列的平行程式915.2 多雉阵列资料不切割的平行程式T5cp965.3 多雒障列末雉资料切割的平行程式T5DCP1055.4 舆二雉切割有的MPI副程式1135.4.1 垂直座襟圃示法见J (CartesianTopology)1135.4.2 界定
5、二雉切割的 MPI 副程式 MPI_CART_CREATE114MPI_CART_COORDS. MPI_CART_SHIFT1145.4.3 定羲固定隔资料的MPI副程式118MPI_TYPE_VECTOR. MPI_TYPE_COMMIT1185.5 多雉障列末二雒切割的平行程式T5_2D121第六章MPI程式的效率提昇1366.1 Nonblocking 资料僖送1376.2 资料停送的合饼1486.3 以遴界资料算取代遏界资料交换1536.4 W?出入资料的安排1556.4.1 事先切割输入资料1556.4.2 事接收集切割遇的输出资料158第七章溥出的资料别1617.1醇出的资料别1
6、627.3雨方逗牖舆管法180第八章 多方依$1及SOR解法1868.1 四方依11及SOR解法1878.2 黑白黠隔SOR解法1918.3 斑 SOR 解法2008.4 八方依$1舆四色黠隔SOR解法207第九章有限元素法程式2169.1 有限元素法的循序程式2179.2 有限元素法的平行程式220附一 撰嘉言的MPI程式231参考害目235Parallel Processing without Partition of1-D Arrays236Parallel Processing with Partition of 1-D Arrays237Parallel on the 2nd Dim
7、ension of 2-D Arrays without Partition238Parallel on the 2nd Dimension of 2-D Arrays with Partition239Partition on the 3rd dimension of 3-D Arrays240第一章前言本章耨介貂MPI平行算戟阈家高速路舆tl算中心现有的平行tl算璟境、以及在 各型械器上如何使用MPIo第一第曾军介貂MPI平行言十算戟:18。第二第介貂阈家高速路舆算中心垣有的平行算璟境。第三第介貂如何在IBM系统上使用MPI ,包括路的1殳定、平行程式的编葬、及平行 程式的孰行等。第四第介
8、貂如何在PC cluster上使用MPI ,包括路的定、平行程式的编群、及平行程式 的轨行等。1.1 mpi平行fi算戟:醴MPI (Message Passing Interface)是第一彳固襟型化的Message Passing平行言。可以使用 在Fortran, C、C+等II言撰嘉的程式上。MPI平行程式可以在分散式暂己惊醴平行系统上轨 行,也可以在共用得己惊醴平行系统上轨行。目前系统摩商所提供的MPI勒:醴是SB於MPI1.2 版。它提供了一百多他副程式程式人员来il用。MPI愤曾在1998年公布了 MPI 2.0版 的规格,数年之接就曾有MPI 2.0版的朝:!可用了。日前美阈的
9、Argonne National Lab已 公布了 MPICH 1.2.0版的整套戟醴,版含有MPI 2.0版的部份功能。有典趣的者可以 免费自路下戟醴,其址是http:/www-unix.mcs.anl.gov/mpi/mpich也可以用anonymous ftp下载敦:1 ,其址是ftp.mcs.anl.gov其下目 (directory) pub/mpi 裹槽名 mpich-1.2.0.tar.Z 或 mpich120.tar.gz ,在目 之下 逮有三午多舆MPI相的可供参考。1.2 阈家高速路舆tt算中心的平行ft算璟境目前域I家高速路舆 11算中心的 IBMSP2、IBMSP2SM
10、P、IBMp690、HPSPP2200. SGI 0rigin2000和Fujitsu VPP300等系统上均有公司自的MPI平行戟醴,PC cluster上是装 用MPICH公用平行戟醴,也都有能力孰行平行程式o但是到目前悬止,只有PC cluster. IBM SP2. IBM SP2 SMP和IBM p690 有一彳固CPU只孰行一彳固程式的平行璟境,其他檄器上刖 辗此槿定。例如,若有一彳固用户要用四彳固CPU来孰行其平行程式,他在IBMSP2上取得 四他CPU之彳及,道四他CPU就仅只孰行道彳固平行程式直到它轨行完止,不曾有其他程 式迤来跟他揖CPU畴但他在其他檄器(如HP SPP20
11、00)上取得四彳固CPU之彳及,如果所 有使用者封CPU的需求数量超系统的CPU ,他所取得四彳固CPU之中的每一他 CPU ,都有可能要跟其他程式以分畴方式(time sharing)共用T固CPU。HP SPP2000和SGI ORIGIN2000悬共用言己惊IS平行系统,)1系统是16果复CPU共用 SP2和VPP300是匾於分散式言已惊醴平行系统,每一他CPU倩有它褐用的 惊醴。IBM SP2 SMP及IBM p690是共用得己惊醴及分散式官己1115混合的平行系统,SP2 SMP 每一IS node借有4 SI CPU共用一司己惊醴,目前借有42 node的SMP clustero
12、p690每一 f固node倩有32 SI CPU共用一己惊醴,目前借有8彳固node的SMP clustero SP2、SP2 SMP 和p690是探用系统U匾的工作排程戟IS (job scheduler) LoadLeveler来安排用户的批次 工作(batch job)。使用者必须借妥LoadLeveler的job command file ,使用llsubmit指令把批 次工作交给系统来轨行。SPP2000. ORIGIN2000和VPP300是探用NQS (Network Queue System)工作排程戟it来安排用户的批次工作。使用者必须借妥NQS的job command fi
13、le , 使用qsub指令把批次工作交给各系统来轨行。PC cluster是探用DQS (Distributed Queue System)工作排程戟醴来安排用户的批次工作,其使用方式似NQS。1.3 在IBM重月窗系统上如何使用MPI首先,C shell用户要在自己home directory的.cshrc槽裹加入下列路 , if檬才能多包抓得到 include file (mpif.h mpif90.h、mpi.h)、编群指令(mpxlf、mpxlf90、mpcc)、MPI library 和 LoadLeveler 指令(llsubmit Hq、llstatusx llcancel)os
14、et lpath=(./usr/1 pp/ppe.poe/include /usr/lpp/ppe.poe/lib)set lpath=($lpath /usr/1 pp/ppe.poe/bin /home/loadl/bin ) set path=($path $lpath)加好上述路之彳度,符.cshrc存槽,再孰行source .cshrc指令,即可谨行平行程式的编群典孰 行。筵退(logout)彳爰再筵到(login)之彳爰就不必再寻I行source .cshrc指令。1.3.1 IBM 躺系统的MPI Fortran程式群指令使用MPI的Fortran 77平行程式,其编群器(com
15、piler) 一般叫做mpif77,但是在IBM重系统上郤叫做mpxlfo mpxlf常用的编Ifil项如下:mpxlf -03 -qarch=auto -qstrict -o file.x file.f其中IB工直-03是作最高级的最佳化(level 3 0Ptimization),可使程式的tt算速度加快数倍-qarch=auto是通知编葬器程式要在同型檄器上轨行-qstrict是通知编群器不要改建It算的)嗔序-o file.x是指定期l行檎名file.x ,不指定畴其内定(default)槽名卷a.out1.3.2 IBM 胎系统的 Job command Hie要在IBM SP2(i
16、vy)上轨行平行程式,使用者必须借妥LoadLeveler的job command fileo例如,下面道彳固job command file叫做jobp4 ,它要在四彳固CPU上期I行平行程式file.xo#!/bin/csh# executable = /usr/bin/poe# arguments = /your_working_directory/file.x -euilib us# output = outp4# error = outp4# job_type = parallel# class = medium# min_processors = 4# max_processors
17、 = 4# requirements = (Adapter = nhps_userH)# wall_clock_limit = 20# queue其中 executable = /usr/bin/poe 是固定不建,poe 是指 Parallel Operating Environmentarguments =轨行槽所在之全路及槽名output =襟津翰出槽名(stdout)error =哥I息(error message)输出槽名class= SP2CPU的分别,使用Hclass指令可以看到分别:short(CPU畤上限悬12小畴,共有101 120MHzCPU)medium (CPU上限悬
18、24小畴,共有64颗160MHz CPU)long (CPU上限悬96小畴,共有24颗120MHz CPU)min_processors =最少的 CPU 数目max_processors =最多的 CPU 数目requirements = (Adapter = nhps_usern)是固定不燮wall_clock_limit =job最多需要的畤,军位悬分queue是固定不燮平行tt算可以使用的CPU数目,short class最多4彳固CPU, medium class最多32 IS CPU , 10ngelass最多8彳固CPU。由於MPI 1.2版不具借取得CPU、控制CPU、和皇帝i
19、f CPU的功能, 所以min_processors和max_processors要填相同的数字。要在IBM SP2 SMP (ivory)上轨行平行程式,使用者必须借妥LoadLeveler的job command fileo例如,下面11彳固job command file叫做jobp4 ,它要在四彳固CPU上轨行平行程式file.Xo#!/bin/csh# network.mpi= cssO,shared,us# executable = /usr/bin/poe# arguments = /your_working_directory/file.x -euilib us# output
20、= outp4# error= outp4# job_type= parallel# class= medium# tasks_per_node = 4# node = 1# queue由於IBM SP2 SMP每彳固Node含有四棵375MHz CPU共用4GB或8GB的言己惊醴。class= SP2 SMPCPU的分别,使用llclass指令可以看到分别:short (CPU上限卷12小畴,3 Node共有6颗CPU)medium (CPU畤上限悬24小畴,32他Node共有128颗CPU)bigmem (CPU畤上限卷48小畴,4他Node共有16颗CPU)il彳固class 彳固Nod
21、e借有8GB的共用言已惊IStasks_per_node=4 是 明一Node IS用四棵 CPUnode= 1是明要用一彳固Node ,一共四棵CPU平行tt算可以使用的CPU数目medium class是8彳固Node 一共32颗CPU。要在IBM p690上轨行平行程式,使用者必须倩妥LoadLeveler的job command fileo例如,下面道1固job command file叫做jobp8 ,它要在8他CPU上轨行平行程式file.Xo#!/bin/csh# executable = /usr/bin/poe# network.mpi= csss,shared,us# ar
22、guments=/your-working-directory/file.x# output = outp8# error = outp8# job_type = parallel# class = 8cpu# tasks_per_node = 8# node = 1# queue由於IBMp690每彳固Node含有32棵1.3 GHz CPU共用128GB的每己醴。class= p690 CPU的分组别,使用llclass指令可以看到分组别:32cpu(CPU上限悬36小畴,2彳固Node共有64 CPU)16cpu(CPU上限悬72小畴,1彳固Node共有32 CPU)8cpu(CPU上限
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 平行 计算 程式 设计
限制150内