版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算科学与工程中的并行编程技术Parallel Programming Technology in Computational Science and Engineering 都志辉清华大学计算机系 Email : Phone: 62782530http:/ main(int argc, char* agrv)nnint curid, recvid, sendid, procsNum, msgsize;nchar* sendmsg;nchar* recvmsg;nnMPI_Status status;nnMPI_Init(&argc, &argv);nMPI_Comm_rank(MPI_COM
2、M_WORLD, &curid);nsendmsg = SetMsg(&msgsize, curid);nrecvmsg = (char*)malloc(msgsize);nMPI_Comm_size(MPI_COMM_WORLD, &procsNum);nfor(int i = 0; i prcsNum; i +)nnif ( i = curid )nnsendid = (i + argc) % procsNum;nrecvid = (i - argc + procsNum) % procsNum;nMPI_Send(sendmsg, msgsize, MPI_CHAR, sendid, 1
3、00, MPI_COMM_WORLD);nMPI_Recv(recvmsg, msgsize, MPI_CHAR, recvid, 100, MPI_COMM_WORLD, &status);nif ( recvmsg0 != 0)nprintf(进程%d发送消息%s给进程%d, recvid, recvmsg, curid);nnnMPI_Finalize();nreturn 0;n作业实例n#include mpi.hn#include n#include nvoid main(argc,argv)nint argc;char* argv;nnint N,K,myid;nint sendi
4、d,dest;nchar* data=(char*)malloc(25*sizeof(char);nint i=8,n;nstrcpy(data,hello!);nn=strlen(data);nitoa(i,temp,1);ndatan=*temp;ndatan+1=0;nK=(int)argv1;nMPI_Status status;nMPI_Init(&argc,&argv);nMPI_Comm_size(MPI_COMM_WORLD,&N);nMPI_Comm_rank(MPI_COMM_WORLD,&myid);nndest=(myid+K)%N;nMPI_Send(data,1,M
5、PI_INT,dest,100,MPI_COMM_WORLD);nMPI_Recv(data,1,MPI_INT,MPI_ANY_SOURCE,100,MPI_COMM_WORLD,&status);nprintf(进程d发送消息s给进程d,(int)data18,data,myid);nMPI_Finalize();n作业实例n#include mpi.hn#include n#include nconst int K=1;nint main(int argc,char *argv)nint id,size;nMPI_Status status;nchar message50;nMPI_In
6、it(&argc,&argv);nMPI_Comm_rank(MPI_COMM_WORLD,&id);nMPI_Comm_size(MPI_COMM_WORLD,&size);nsprintf(message,HELLO!My rank is %d,id);nMPI_Send(message,strlen(message)+1,MPI_CHAR,(id+K)%size,0,MPI_COMM_WORLD);nMPI_Recv(message,50,MPI_CHAR,(id-K+size)%size,0,MPI_COMM_WORLD,&status);nfprintf(stderr,进程%d发送消
7、息%s给进程%dn,(id-K+size)%size,message,id);nMPI_Finalize();nMPICH简介/mpi/mpich1/n完成者nArgonne National LaboratorynMississippi State Universityn最广泛使用的一个MPI实现版本n目前发展与MPI-1同步发展支持MPI-2(MPICH2)基于Linux系统的MPICHnMPICH包的获取n/mpi/mpich1/download.htmln安装n解压: tar zxv
8、f mpich.tar.gznRedhat 完全安装n配置和编译:cd mpich;./configure;make; make installn设置路径: 将 mpich/bin 加入缺省查找路径基于Linux系统的MPICH(续) 目录结构mpich/bin 可执行脚本mpich/doc 文档mpich/examples 例子mpich/include 头文件mpich/lib 库mpich/man 参考手册mpich/www 参考手册 不同版本的目录结构是不同的 基于Linux系统的MPICH(续)MPI程序的编译MPI编译器与本地编译器的关系调用与包含关系mpiCC/mpicc/mpi
9、f77/mpif90C+/C/F77/F90-mpilog/-mpitrace 产生LOG或跟踪文件-mpianim 产生实时动画-show 显示编译时产生的命令,但并不执行-help 给出帮助信息-echo 显示出当前正在编译联接的命令信息mpiCC/mpicc/mpif77/mpif90 -o test test.cc/c/f/f90基于Linux系统的MPICH(续)n建立MPI程序运行所必需的信任机制n为什么要建立信任机制?n如何建立信任机制?n通过/etc/hosts.equiv文件建立信任机制n依次列出所信任的机器名或IP地址n例子1,例子2n通过.rhosts文件建立信任机制n依
10、次列出机器名及其相应的帐户n例子基于Linux系统的MPICH(续)n文件准备n需要哪些文件?n如何准备?n复制可执行程序和相关数据n将可执行程序和所需要的数据文件拷贝到指定机器的指定位置nrcp cpi tp1:/home/mpi/mpich/examples/basic/.nrcp 源 目 源/目 机器名:路径n问题n是否一定要拷贝文件?基于Linux系统的MPICH(续)nMPI程序的执行n使用缺省配置文件 mpirun -np N executive_file 缺省配置文件,使用缺省路径n使用指定配置文件 mpirun -p4pg confile executive_file 使用指定
11、机器指定账户指定路径下的指定文件nmpirun machinefile mf executive_file 指定配置文件,使用缺省路径n帮助命令 mpiman基于Linux系统的MPICH(续)n例子cd mpich/examples/basicmake cpimpirun -np 4 cpi使用mpich/util/machines/machine.LINUX作为配置文件或者mpirun -p4pg confile cpi基于Linux系统的MPICH(续)n配置文件confile为myhost 0 mpich/examples/basic/cpimyhost 1 mpich/example
12、s/basic/cpimyhost 1 mpich/examples/basic/cpimyhost 1 mpich/examples/basic/cpi用一台机器模拟四台机器运行基于WINDOWS系统的MPICHn下载/pub/mpi/nt/mpich.nt.1.X.X.X.all.zip/pub/mpi/nt/mpich.nt.1.X.X.zipn解压并安装(WIN2000)解压zip文件setupc:Program FilesMPICHn编译MPI程序头文件:mpi.h/mpif.h库 : ws2_32.li
13、b mpich.lib pmpich.lib romio.lib基于WINDOWS系统的MPICH(续)n配置与运行缺省配置MPIRun -np N executive_fileC:Program FilesMPICHmpdbin用MPIConfig进行配置,选取参加计算的机器 C:Program FilesMPICHmpdbin 指定配置MPIRun configfile配置文件的写法用MPIRegister进行注册(类似于Linux环境下的放权)基于NT系统的MPICH(续)n例子MPIRun -np 4 cpiMPIRun -localonly 4 cpi使用配置文件MPIRun con
14、file exe c:mpintcpi.exe hosts NT01 4基于Windows系统的MPICHn下载/mpi/mpich/download.html/pub/mpi/nt/mpich.nt.1.X.X.X.all.zip/pub/mpi/nt/mpich.nt.1.X.X.zipn解压并安装(WIN2000,XP)解压zip文件setupc:Program FilesMPICHn编译MPI程序头文件:mpi.h/mpif.h库 : ws2_32.lib mpich.lib
15、pmpich.lib romio.libcreating a new MPICH project with MS Developer Studio 61.Open MS Developer Studio - Visual C+ 2.Create a new project with whatever name you want in whatever directory you want. The easiest one is a Win32 console application with no files in it.creating a new MPICH project with MS
16、 Developer Studio 63.Finish the new project wizard. 4.Go to Project-Settings or hit Alt F7 to bring up the project settings dialog box. 5.Change the settings to use the multithreaded libraries. Change the settings for both Debug and Release targets.creating a new MPICH project with MS Developer Stud
17、io 66.Set the include path for all target configurations: This should be MPICHSDKincludecreating a new MPICH project with MS Developer Studio 67.Set the lib path for all target configurations: This should be MPICHSDKlibcreating a new MPICH project with MS Developer Studio 68.Add the ws2_32.lib libra
18、ry to all configurations (This is the Microsoft Winsock2 library. Its in your default library path).Add mpich.lib to the release target and mpichd.lib to the debug target.creating a new MPICH project with MS Developer Studio 69.Close the project settings dialog box. 10.Add your source files to the p
19、roject11.Build LAM-MPI/a high-performance, freely available, open source implementation of the MPI standard that is researched, developed, and maintained at the Open Systems Lab at Indiana University.LAM 7.1.1 Release nPlatform:nAIX nIRIX nLinux nMac OS X nOpenBSD nSolaris nMicr
20、osoft Windows (Cygwin) LAM的安装nshell$ gunzip -c lam-7.1.tar.gz | tar xf nshell$ cd lam-7.1# Set the desired C, C+, and Fortran compilers, unless using the GNU compilers is sufficient# (this example assumes a Bourne-like shell)nshell$ CC=ccnshell$ CXX=CCnshell$ FC=f77nshell$ export CC CXX FCnshell$ ./
21、configure -prefix=/directory/to/install/innshell$ makenshell$ make installn# The following step is optional. Ensure that $prefix/bin is in in your $path so that LAMs newly-created mpicc can be found before running this step.nshell$ make examplesLAM/MPIn启动LAM环境n执行LAM的结点配置文件列表 “boot schema”, “hostfile
22、”, or “machinefile.”shell$ cat lamhosts cpu=4 the number of CPUs specified here has no correlation to the physicial number of CPUs in the machinenThe recon tool verifies that the cluster is bootable: shell$ recon -v lamhostsnThe lamboot tool actually starts LAM on the specified cluster. % lamboot -v
23、 lamhosts 检查问题nWhich mpirunMpirun 命令nshell$ mpirun C hello在所有可得的CPU上运行hello(SMP)nshell$ mpirun N hello每个结点运行一个hellonshell$ mpirun -np 4 hello顺序选择的4个CPU上运行helloLAM MPIn用配置文件运行shell$ mpirun -v appfile c0 manager C worker starts a manager process on c0, and also starts a worker process on all CPUs that LAM was booted on c0 manager c1-8 worker 查看与终止n查看MPI应用shell$ m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 购买第三方服务合同类型
- 会计工作计划范文格式2024工作计划模板
- 学校教学计划锦集
- 五年级语文教研工作计划
- 五年级科学下册教学计划例文
- 秋教务工作计划例文
- 2024年住房和城乡建设局上半年总结及下半年计划
- 计划生育业务评估实施方案
- 2021律师常理会工作计划
- 高二语文教师教学工作计划
- 解析几何课件(吕林根+许子道第四版)
- 智能矿山设备项目融资计划书【模板范文】
- 曼昆《经济学原理》(微观)第五版测试题库 (16)
- 世界地球日介绍PPT模板
- 标识牌施工实施方案.docx
- 支气管镜的临床应用PPT课件
- 工作票签发人试题(答案)
- 河南交通职业技术学院
- 食品安全国家标准预包装食品标签通则
- 公司供应商管理体系框架图
- 园林绿化养护协议书
评论
0/150
提交评论