基于Linux的MPI并行环境的配置
并行程序实验报告

并行程序设计实验报告姓名:学号:一、实验目的通过本次试验,了解使用OpenMP编程的基本方法和MPI的编程方法,通过实践实现的基本程序,掌握基本的线程及进程级并行应用开发技术,能够分析并行性能瓶颈及相应优化方法。
二、实验环境Linux操作系统,mpi库,多核处理器三、实验设计与实现(一)MPI并行程序设计用MPI编写一个greeting程序,编号为0的进程接受其它各进程的“问候”,并在计算机屏幕上显示问候情况。
用MPI编写一个多进程求积分的程序,并通过积分的方法求π的值,结果与π的25位精确值比较。
(二)多线程程序设计用Pthreads或OpenMP编写通过积分的方法求π的程序。
把该程序与相应的MPI程序比较。
用Pthreads或OpenMP编写编写矩阵相乘的程序,观察矩阵增大以及线程个数增减时的情形。
四、实验环境安装(一)MPI环境安装1.安装kylin操作系统的虚拟机(用VirtualBox)2.安装增强功能,使之与windows主机能够文件共享。
3.拷贝mpich-3.0.4.tar.gz到/root/myworkspace/目录下,并解压(tar xzf mpich-3.0.4.tar.gz)4.下面开始安装mkdir /root/myworkspace/mpi./configure --prefix=/root/myworkspace/mpi --disable-f77 --disable-fcmakemake install5.配置环境变量打开/root/.bashrc文件,在文件的末尾加上两行:PATH=$PATH:/root/myworkspace/mpi/binexport PATH保存退出,然后执行命令source /root/.bashrc(二)openMP实验环境安装Visual Studio中修改:项目->属性->c/c++->语言,将“OpenMP支持”改成“是”:五、实验结果及分析(一)MPI并行程序设计实验一:问候发送与接收非零号进程将问候的信息发送给0号进程,0号进程依次接收其它进程发送过来的消息并将其输出。
openfoam mpi编译

OpenFOAM是一个由英国OpenCFD公司开发的开源计算流体力学软件。
它采用C++编程语言,可以在Linux操作系统上运行。
OpenFOAM具有模块化的结构,使得用户可以方便地定制和扩展其功能。
为了加快计算速度,OpenFOAM还支持MPI并行计算。
MPI(Message Passing Interface)是一种用于编写并行程序的标准。
使用MPI,用户可以在多个处理器上同时执行程序,从而加快计算速度。
在OpenFOAM中,MPI被用于加速求解大规模计算流体力学问题的速度。
在本文中,我们将介绍如何在OpenFOAM中使用MPI进行编译。
一、安装MPI库我们需要安装MPI库。
在Linux系统中,MPI一般通过包管理器进行安装。
以Ubuntu系统为例,可以使用以下命令安装MPI库:sudo apt-get install mpich二、配置MPI环境安装完MPI库后,需要配置MPI环境。
在OpenFOAM中,MPI的配置是通过修改OpenFOAM的环境变量来实现的。
我们需要找到OpenFOAM的安装路径,然后在用户目录下找到.bashrc文件,在其中添加如下行:export WM_MPLIB=SYSTEMOPENMPIexport WM_COMPILE_OPTION=mpi其中,WM_MPLIB指定了使用的MPI库,这里我们使用了OpenMPI;WM_COMPILE_OPTION指定了编译选项为MPI。
三、进行编译配置完成后,就可以进行编译了。
需要清理之前的编译结果,可以使用以下命令进行清理:wclean all进行新的编译:wmake这样就可以在OpenFOAM中使用MPI进行编译了。
四、检查编译结果需要检查编译结果是否正确。
可以通过运行一个包含MPI并行计算的例子来验证编译是否成功。
如果例子能够正确运行并且加速效果明显,说明MPI编译成功。
总结通过本文介绍,我们了解了如何在OpenFOAM中使用MPI进行编译。
Linux并行集群的搭建PBS

Linux并行集群的搭建PBSLinux并行集群的搭建实验环境OS:CentOS 5.10 x86_64(一台admin,两台计算节点)主机名和和IP对应关系如下admin: 192.168.78.11node1:192.168.78.12node2:192.168.78.13软件版本:PBStorque-3.0.6.tar.gzmaui-3.3.1.tar.gzopenmpi-1.8.1.tar.bz2并行软件:apoa1.tar.gzNAMD_2.9_Linux-x86_64-multicore.tar.gz一:环境配置1.修改hosts文件,添加内容如下192.168.78.11 admin192.168.78.12 node1192.168.78.13 node22.设置无密码访问ssh-keygen一直按enter键即可,进入.ssh目录生成认证密码,并设置权限[root@admin ~]#cd.ssh/[**************]#lsid_rsa id_rsa.pub[**************]#cpid_rsa.pubauthorized_keys[**************]#chmod600authorized_keys[**************]#lltotal 12-rw------- 1rootroot 394 Aug 23 03:52 authorized_keys-rw------- 1rootroot 1675 Aug 23 03:50 id_rsa-rw-r--r-- 1rootroot 394 Aug 23 03:50 id_rsa.pub3.然后复制.ssh目录到所有计算节点[root@admin~]# for i in 1 2 ; do scp -r /root/.ssh node$i:/ro ot/ ; done第一次要输入两台计算节点的root密码,以后都是无密码访问了4.复制hosts文件到所有计算节点[root@admin ~]#for i in 1 2 ; do scp /etc/hosts node$i:/etc/ ; done5.配置nfs服务把管理节点上的/export作为共享目录[root@admin~]#mkdir -p /export/{apps,home,scripts,sourc e} //其中apps为软件共享目录,home为共享家目录[root@admin ~]#cat /etc/exports/export 192.168.78.0/255.255.255.0(rw,sync)6.启动nfs服务并检查启动是否成功[root@admin~]#chkconfig portmap on ; /etc/init.d/portma p startStartingportmap: [ OK ][root@admin~]#chkconfig nfs on ; /etc/init.d/nfs start[root@admin~]#showmount -e localhostExport listforlocalhost:/export 192.168.78.0/255.255.255.0[root@admin ~]#7.配置autofs[root@admin ~]#cat /etc/auto.master/home/etc/auto.home --timeout=1200/share/ec/auto.share --timeout=1200[root@admin ~]#cat /etc/auto.share* admin:/export/&[root@admin ~]#cat /etc/auto.home* -nfsvers=3 admin:/export/home/&[root@admin ~]#8.启动autofs服务[root@admin~]#chkconfig autofs on ; /etc/init.d/autofs star t9.复制auto.master auto.share auto.home到所有计算节点[root@admin ~]#for i in 1 2; do scp /etc/auto.master node$i: /etc/; done[root@admin ~]#for i in 1 2; do scp /etc/auto.share node$i:/ etc/; done[root@admin ~]#for i in 1 2; do scp /etc/auto.home node$i: /etc/; done10.启动autofs服务[root@admin ~]#for i in 1 2; do ssh node$i /etc/init.d/autof s start; done[root@admin ~]#for i in 1 2; do ssh node$i chkconfig autofs on; done11.配置NIS服务[root@admin ~]#yum -y install ypserv[root@admin~]#nisdomainname [root@admin~]#echo "NISDOMAIN=">>/etc /sysconfig/network[root@admin ~]#cp /usr/share/doc/ypserv-2.19/securenets /var/yp/[root@admin ~]#vi /var/yp/securenets修改后内容如下[root@admin~]#grep -v "^#" /var/yp/securenets255.0.0.0 127.0.0.0255.255.255.0 192.168.78.0[root@admin ~]#12.启动NIS服务[root@admin~]#/etc/init.d/ypserv start ;chkconfig ypserv o nStarting YP servers ervices: [ OK ][root@admin~]#/etc/init.d/yppasswdd start ;chkconfig yppa sswdd onStarting YP passwd service: [ OK ][root@admin ~]#13.修改/etc/default/useradd文件把HOME=/home更改为HOME=/export/home14.在/etc/skel目录下创建.ssh目录并在.ssh目录下建立一个名为config的文件,设置如下[root@admin~]#mkdir /etc/skel/.ssh[root@admin~]#touch /etc/skel/.ssh/config[root@admin ~]#cat /etc/skel/.ssh/configStrictHostKeyChecking noUserKnownHostsFile /dev/null[root@admin~]#chmod 600 /etc/skel/.ssh/config15.创建用于同步用户的命令◆在/usr/local/sbin目录下创建了一个名为sync_users的脚本,内容如下:#!/bin/bashYPINIT=/usr/lib64/yp/ypinitfor USER in $(sed -n '/export/p' /etc/passwd | awk -F ":" '{pri nt$1}')doif [ -z "$USER" ]; then$YPINIT -melseusermod -d /home/$USER $USERfidone$YPINIT -m◆赋予可执行权限chmod 755/usr/local/sbin/sync_users◆以后执行sync_users命令就可以同步新创建的用户16.创建一个测试用户linuxidc,并同步该用户[root@admin~]#useradd linuxidc[root@admin~]#echo linuxidc | passwd --stdin linuxidc[root@admin~]#sync_users注:以后每添加一个新用户,都需要执行sync_users命令17. 配置NIS客户端,在所有计算节点上安装ypbind,RHEL默认已经安装[root@admin~]# for i in 1 2; do ssh node$i auth-config --en able-nis --nisdomain= \--nisserver=admin --update; done18.验证NIS服务配置是否正确[root@node1~]#ypcat passwdlinuxidc:$1$tsPKQvPP$Kwom9qG/DNR1w/Lq./cQV.:500:500:: /home/linuxidc:/bin/bash[root@admin ~]#for i in 1 2; do ssh node$i id linuxidc; done uid=500(linuxidc) gid=500(linuxidc) groups=500(linuxidc)uid=500(linuxidc) gid=500(linuxidc) groups=500(linuxidc)有上面输出可知,NIS服务配置正确二:安装和配置torque(管理节点)1.首先安装openmpi[root@adminparallel]#tar xjvf openmpi-1.8.1.tar.bz2 -C /usr/ local/src/[root@adminparallel]#cd /usr/local/src/openmpi-1.8.1/[*********************.1]#./configure--prefix=/share/ap ps/openmpi[*********************.1]#make[*********************.1]#makeinstall[*********************.1]#cp-r examples/ /share/apps/ openmpi2.添加环境变量,在/share/scripts目录先建立了一个Path.sh,以后也方便计算节点添加环境变量[root@adminscripts]#pwd/share/scripts[root@adminscripts]#cat Path.sh#!/bin/bashgrep openmpi /etc/profile || cat >>/etc/profile <<EOFexport PATH=/share/apps/openmpi/bin:\$PATHexport LD_LIBRARY_PATH=/share/apps/openmpi/lib:\$LD_LI BRARY_PATHEOF[root@adminscripts]#[root@adminscripts]#sh Path.sh[root@adminscripts]#source /etc/profile3.测试openmpi是否安装成功[root@adminscripts]#which mpirun/share/apps/openmpi/bin/mpirun[root@adminscriptss]#which mpiexec/share/apps/openmpi/bin/mpiexec4.安装torque[root@adminparallel]#tar xzvf torque-3.0.6.tar.gz -C /share/ source/[root@adminparallel]#cd /share/source/torque-3.0.6/[********************.6]#./configure--enable-syslog --e nable-nvidia-gpus --enable-cpuset --disable-gui --with-rcp=scp --with-sendmail[********************.6]#make[********************.6]#makeinstall[********************.6]#pwd/share/source/torque-3.0.6[********************.6]#catinstall.shcd /share/source/torque-3.0.6make install[********************.6]#5.初始化torque创建默认队列[********************.6]#./torque.setuproot initializingTORQUE(admin: root@admin)PBS_Server admin:Create mode and server database exists, do you wishtocontinue y/(n)?yroot 26351 1 0 06:44? 00:00:00 pbs_server -t create Max openservers:10239Max openservers:10239[********************.6]#6.查看创建的默认队列batch[********************.6]#qmgr-c"ps"## Create queues and set their attributes.### Create and define queue batch#create queue batchset queue batch queue_type = Executionset queue batch resources_default.nodes = 1set queue batch resources_default.walltime= 01:00:00set queue batch enabled = Trueset queue batch started = True## Set server attributes.#set server scheduling = Trueset server acl_hosts = adminset server admins= root@adminset server operators = root@adminset server default_queue = batchset server log_events = 511set server mail_from = admset server scheduler_iteration = 600set server node_check_rate = 150set server tcp_timeout = 6set server mom_job_sync = Trueset server keep_completed = 300[********************.6]#7.更改队列batch部分属性,以满足实际需求[********************.6]#qmgr-c"sqbatchresources_de fault.walltime=24:00:00"[********************.6]#qmgr-c"ssquery_other_jobs=t rue"8.建立mom配置文件,用于复制到所有计算节点[root@adminmom_priv]#pwd/var/spool/torque/mom_priv[root@adminmom_priv]#cat config$pbsserver admin$logevent 2259.创建节点信息文件[root@adminserver_priv]#pwd/var/spool/torque/server_priv[root@adminserver_priv]#cat nodesnode1node2[root@adminserver_priv]#10.查看目前节点信息均为down状态[root@adminserver_priv]#pbsnodes -anode1state = downnp = 1ntype = clustermom_service_port = 15002mom_admin_port = 15003gpus = 0node2state = downnp = 1ntype = clustermom_service_port = 15002mom_admin_port = 15003gpus = 0[root@adminserver_priv]#11.复制pbs_server启动脚本,并设置开机自动启动[********************.6]#pwd/share/apps/torque-3.0.6[********************.6]#cpcontrib/init.d/pbs_server/etc /init.d/[********************.6]#chmod755/etc/init.d/pbs_serve r[********************.6]#chkconfigpbs_serveron12.复制pbs_mom脚本,方便复制到计算节点[********************.6]#cpcontrib/init.d/pbs_mom/etc/ init.d/13.安装maui[root@adminparallel]#tar xzvf maui-3.3.1.tar.gz -C /usr/local /src/[root@admin ~]#cd /usr/local/src/maui-3.3.1/[******************.1]#./configure--prefix=/usr/local/ma ui --with-pbs=/usr/local[******************.1]#make[******************.1]#makeinstall14.复制maui启动脚本,设置正确路径,并设置为开机启动[******************.1]#cpetc/maui.d/etc/init.d/mauid[******************.1]#vi/etc/init.d/mauid更改MAUI_PREFIX=/opt/maui为MAUI_PREFIX=/usr/local/m aui[******************.1]#chmod755/etc/init.d/mauid[******************.1]#chkconfigmauidon15.启动maui调度服务[******************.1]#/etc/init.d/mauidstartStartingMAUIScheduler: [ OK ][******************.1]#16.添加maui命令环境变量[******************.1]#vi/etc/profileexport PATH=/share/apps/openmpi/bin:/usr/local/maui/bin: $PATH[******************.1]#source/etc/profile17.安装并行软件到共享目录[root@adminnamd]#tar xzvf NAMD_2.9_Linux-x86_64-multi core.tar.gz -C /share/apps/[root@adminnamd]#tar xzvf apoa1.tar.gz -C /share/apps/ [root@adminapps]#pwd/share/apps[root@adminapps]#mv NAMD_2.9_Linux-x86_64-multicore/ namd18.添加namd命令环境变量,同时也添加到Path.sh方便计算节点添加环境变量[******************.1]#vi/etc/profileexport PATH=/share/apps/openmpi/bin:/usr/local/maui/bin: /share/apps/namd:$PATH[******************.1]#source/etc/profile[root@adminscripts]#which namd2/share/apps/namd/namd2[root@adminscripts]#cat Path.sh#!/bin/bashgrep openmpi /etc/profile || cat >>/etc/profile <<EOFexport PATH=/share/apps/openmpi/bin:/share/apps/namd:\$PATHEOF[root@adminscripts]#至此管理端配置完成三:计算节点配置torque1.计算节点安装torque[root@admin ~]#for i in 1 2; do ssh node$i sh /share/source /torque-3.0.6/install.sh; done2.复制mom配置文件到计算节点[root@admin ~]#for i in 1 2; do scp /var/spool/torque/mom _priv/confignode$i:/var/spool/torque/mom_priv/; done3.复制mom启动脚本到计算节点,启动pbs_mom服务,并设置开机启动[root@admin ~]#for i in 1 2; do scp /etc/init.d/pbs_mom no de$i:/etc/init.d/; done[root@admin ~]#for i in 1 2; do ssh node$i /etc/init.d/pbs_ mom start; doneStartingTORQUEMom: [ OK ]StartingTORQUEMom: [ OK ][root@admin ~]#for i in 1 2; do ssh node$i chkconfig pbs_m om on; done4.设置环境变量[root@admin ~]#for i in 1 2; do ssh node$i sh /share/scripts /Path.sh; done5.测试环境变量设置是否正确[root@admin ~]#for i in 1 2; do ssh node$i which mpirun; d one/share/apps/openmpi/bin/mpirun/share/apps/openmpi/bin/mpirun[root@admin ~]#for i in 1 2; do ssh node$i which namd2; d one/share/apps/namd/namd2/share/apps/namd/namd2[root@admin ~]#6.此时再观察计算节点状态,已经变成free了,即可以提交任务到计算节点了[root@adminapps]#pbsnodes -anode1state = freenp = 1ntype = clusterstatus=rectime=1408751492,varattr=,jobs=,state=free,netlo ad=12996103,gres=,loadave=0.01,ncpus=1,physmem=1024932 kb,availmem=2082428kb,totmem=2165536kb,idletime=0,nuser s=0,nsessions=0,uname=Linuxnode12.6.18-371.el5 #1 SMP Tue Oct 1 08:35:08 EDT 2013 x86_64,opsys=linuxmom_service_port = 15002mom_admin_port = 15003gpus = 0node2state = freenp = 1ntype = clusterstatus=rectime=1408751482,varattr=,jobs=,state=free,netlo ad=12983275,gres=,loadave=0.03,ncpus=1,physmem=1024932 kb,availmem=2082444kb,totmem=2165536kb,idletime=0,nuser s=0,nsessions=0,uname=Linuxnode22.6.18-371.el5 #1 SMP Tue Oct 1 08:35:08 EDT 2013 x86_64,opsys=linuxmom_service_port = 15002mom_admin_port = 15003gpus = 0[root@adminapps]#四:验证并行集群是否搭建成功1.在管理节点上以建立的linuxidc用户登录,首先设置节点间无密码互访,操作和root用户一样,只是不需要复制.ssh目录2.复制namd用软件apoa1到当前目录下[linuxidc@admin ~]$cp -r /share/apps/apoa1/ ./3.创建PBS脚本[linuxidc@admin~]$touch test.pbs脚本内容如下[linuxidc@admin ~]$cat test.pbs#!/bin/bash#PBS -N linuxidcjob1#PBS -j oe#PBS -l nodes=2:ppn=1NP=`cat $PBS_NODEFILE | wc -l`echo "This job's id is $PBS_JOBID@$PBS_QUEUE"echo "This job's workdir is $PBS_O_WORKDIR"echo "This job is running on following nodes:"cat $PBS_NODEFILEecho "This job begins at:" `date`echoechocd $PBS_O_WORKDIRmpirun -np $NP-machinefile $PBS_NODEFILE namd2 apoa1 /apoa1.namdechoechoecho "This job stops at:" `date`[linuxidc@admin ~]$4.提交任务[linuxidc@admin ~]$qsub test.pbs5.查看作业运行状态[linuxidc@admin~]$qstatJobid Name User Time UseS Queue -------------------------------------------------------- -------- - -----1.admin linuxidcjob1 linuxidc 0 R b atch[linuxidc@admin~]$qstat -nadmin:Req'd Req'd ElapJobID Username Queue Jobname SessID NDS TSK Memory Time S Time--------------------------------------- ---------------- ------ ----- ------ ------ ----- - -----1.admin linuxidc batch linuxidcjob1 66762 2 -- 24:00 R --node2/0+node1/0[linuxidc@admin ~]$由上面可知作业已经在node1和node2上运行了至此,linux并行集群搭建完成。
MPI综合实验报告

MPI综合实验报告一、实验目的本次实验旨在探究MPI并行计算技术在多节点集群中的应用,并通过编写相关代码实现一个简单的并行计算任务,验证MPI的计算能力和效果。
二、实验原理MPI(Message Passing Interface)是一种并行计算中进程间通信的标准接口。
MPI通过发送和接收消息来实现进程之间的通信,协调各个计算节点的工作。
一般而言,MPI程序由多个进程组成,每个进程可以独立地执行计算任务,当需要进行通信时,进程可以通过MPI提供的接口来发送和接收消息。
三、实验过程1.配置MPI环境在实验开始前,需要在多个节点上安装MPI环境,并确保各节点之间能够正常通信,可以互相发送和接收消息。
2.编写代码首先,需要编写一个主进程(通常为进程0)和多个子进程参与计算的代码。
主进程负责将计算任务分配给子进程,并收集子进程的计算结果。
子进程则负责进行具体的计算任务。
以下是一个简单的示例代码:```pythonfrom mpi4py import MPIif rank == 0:#主进程负责任务分配data = [i for i in range(size-1)] # 分配给每个子进程的数据for i in range(1, size):#主进程接收结果result = []for i in range(1, size):print("Result:", result)else:#子进程接收任务数据#子进程进行计算result = data * 2#子进程发送计算结果```以上代码使用了mpi4py库来实现MPI的功能。
在主进程中,首先准备要分配的数据,然后将每个子进程的数据发送给相应的子进程,并接收子进程的计算结果。
在子进程中,首先接收来自主进程的数据,然后进行计算,并将计算结果发送给主进程。
3.运行实验在配置好MPI环境和编写好代码后,将代码保存并上传到各个节点上。
然后,在主节点上执行以下命令来运行程序:``````其中,`-np 5`表示使用5个进程来进行计算。
基于MPI+FreeFem++的有限元并行计算

基于MPI+FreeFem++的有限元并行计算摘要:有限元方法是一种灵活而高效的数值求解偏微分方程的计算方法,是工程分析和计算中不可缺少的重要工具之一。
在计算机技术的快速发展使得并行机的价格日益下降的今天,并行有限元计算方法受到了学术界和工程界的普遍关注。
讨论了基于MPI+FreeFem++的有限元并行计算环境的构建,阐述了在该环境下有限元并行程序的编写、编译及运行等过程,并通过具体编程实例,说明了MPI+FreeFem++环境下的有限元并行编程的简单和高效。
关键词:有限元方法;并行计算;MPI;FreeFem++0 引言有限元方法是20世纪50年代伴随电子计算机的诞生,在计算数学和计算工程领域里诞生的一种高效而灵活的计算方法,它将古典变分法与分片多项式插值相结合,易于处理复杂的边值问题,具有有限差分法无可比拟的优越性,广泛应用于求解热传导、电磁场、流体力学等相关问题,已成为当今工程分析和计算中不可缺少的最重要的工具之一。
有限元方法的“化整为零、积零为整”的基本思想与并行处理技术的基本原则“分而治之”基本一致,因而具有高度的内在并行性。
在计算机技术快速发展使得并行机的价格日益下降的今天,有限元并行计算引起了学术界和工程界的普遍关注,吸引了众多科研与工程技术人员。
但要实现有限元并行编程,并不是一件容易的事,特别是对于复杂区域问题,若从网格生成、任务的划分、单元刚度矩阵的计算、总刚度矩阵的组装,到有限元方程组的求解以及后处理,都需要程序员自己编写代码的话,将是一件十分繁琐的事情。
本文探讨了构建基于MPI+FreeFem++的有限元并行计算环境,在该环境下,程序员可避免冗长代码的编写,进而轻松、快速、高效地实现复杂问题的有限元并行计算。
1 FreeFem++简介FreeFem++ 是一款免费的偏微分方程有限元计算软件,它集成网格生成器、线性方程组的求解器、后处理及计算结果可视化于一体,能快速而高效地实现复杂区域问题的有限元数值计算。
MPICH2配置和使用

MPICH2配置和使用2.配置MPICH2环境变量在安装完成后,需要配置MPICH2的环境变量,以便系统能够找到MPICH2的安装路径。
在Windows系统中,可以在系统属性的高级选项中设置环境变量;在Linux和Mac OS系统中,可以在.bashrc或.profile文件中添加相应的环境变量。
3.编写并行程序使用MPICH2进行并行计算需要编写并行程序。
MPICH2支持多种编程语言,包括C、C++和Fortran。
根据自己的编程语言选择合适的编程接口,例如MPI(消息传递接口)或OpenMP(多线程编程接口)。
根据并行算法和计算模型,设计并实现相应的并行算法。
4.编译并行程序在编写完并行程序后,需要使用编译器将程序源代码编译成可执行文件。
对于C和C++程序,可以使用gcc或g++编译器;对于Fortran程序,可以使用gfortran编译器。
编译时需要链接MPICH2的库文件,以确保程序能够调用MPICH2提供的并行计算功能。
5.运行并行程序在编译完成后,可以使用命令行或脚本来运行并行程序。
运行时需要指定并行程序的执行方式、计算节点的数量和计算节点的地址。
MPICH2提供了一系列命令和选项,用于控制并行程序的执行和调试。
可以通过命令行参数或配置文件来指定这些选项。
6.监测和调试并行程序在并行程序运行过程中,可以使用MPICH2提供的工具来监测和调试程序的运行状态。
MPICH2提供了一系列命令行工具和图形界面工具,用于查看程序的运行日志、性能指标和调试信息。
可以根据需要选择合适的工具,以便及时发现和解决程序中的问题。
mpi配置与

登录注册mpi配置以及lammps并行安装Mpi配置与安装MPICH2是MPI(Message-Passing Interface)的一个应用实现,支持最新的MPI-2接口标准,是用于并行运算的工具,在程序设计语言上支持C/C++和Fortran。
最近因为有项目需要的计算量比较大,所以就学习使用了M PICH2,在此根据网络上查询的相关信息和我自己的实际使用经历,分别总结一下M PICH2在window s和linux下基本的安装使用方法。
软件下载MPICH2的主页是/mpi/mpich2/index.htm,在这个页面上就能找到各平台最新版本MPICH2的下载地址,其中还包括源代码,我在开始作这个项目的时候最新版本是windows版mpic h2-1.0.5p2,源代码mpic h2-1.0.5p4。
我们的项目是一个C entOS版linux下的程序,所以最终是要在linux下运行的,但是又舍不得windows,于是就打算可能的话就在windows下写程序,用M inGW加windows版的MPICH2编译调试,通过后再到wmware虚拟机组成的简单集群作测试。
所以,为避免不必要的麻烦,就要统一一下windows和linux下的MPICH2版本,而且不打算用最新的,因此决定用mpic h2-1.0.5版。
但是,如果在主页上找的话是没有以前旧版本下载的链接的(至少我没找到),只有最新版本的http和ftp下载。
这难不住我等有心之人,既然提供了ftp 下载,那咱就直接到他ftp服务器上找,最新源代码链接的地址是ftp:///pub/mpi/mpich2-1.0.5p4.tar.gz,把后面文件名去掉就应该是文件的ftp存放路径,把这个路径直接写到浏览器地址栏里回车(偶用的是FireFox2),就能看到他们服务器上这个目录的文件列表,里面就有1.0.5版的windows安装文件和源代码包,分别为ftp:///pub/mpi/mpich2-1.0.5-win32-ia32.msi 和ftp:///pub/mpi/mpich2-1.0.5.tar.gz。
并行编程环境设置和注意事项

并行编程环境设置和注意事项一.远程登陆服务器请同学们使用服务器分配的原始密码通过SSH工具登陆到实验集群的登陆节点:202.38.192.99,然后使用命令passwd对初始密码进行修改。
PS:Linux下密码不可见。
接着在自己的账号下使用命令mkdir命令建立2个目录:OpenMP,MPI用来存放不同实验数据和文档。
二.跳转计算节点本次实验除了LC的登陆头节点(202.38.192.99)还有4个计算节点,分别是C0-0,c0-1,c0-2,c0-3。
使用命令ssh可以从当前节点转到计算节点,例如ssh c0-1则可从当前节点转到计算节点c0-1,其他如此类推。
MPI实验在登陆节点上运行程序一定要加-nolocal或者-machinefile 参数,禁止使用登陆节点计算。
三.设置编译环境使用命令vi ~/.bash_profile设置环境变量,添加路径如下文,然后使用. ~/.bash_profile(注意~前有个点+空格)使设置生效,整个操作过程如下:[lp.zh@bl6000 ~]$ vi ~/.bash_profile# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then. ~/.bashrcfi# User specific environment and startup programsPA TH=/opt/mpich-1.2.7pl/bin:/opt/intel/Compiler/11.0/069/bin/ia32:$PA TH:$HOME/bin:/usr/sbin LD_LIBRARY_PA TH=$LD_LIBRARY_PA TH:/usr/lib:opt/mpich-1.2.7pl/lib/:/opt/intel/Compiler /11.0/069/lib/ia32export PA THexport LD_LIBRARY_PA THunset USERNAME[lp.zh@bl6000 ~]$. ~/.bash_profile然后使用which mpirun命令检测路径,如果屏幕显示/opt/mpich/gnu/bin/mpirun表明设置成功。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MPI简介
MPI(Message
P鹪sing
“pich一1.2.6.tⅡ.f5z/(/表示enter键操作)。
(3)解包tar—xvfmpich—1.2.6/。 Inted如e)的定义是多种 (4)进人解压缩解包后的目录。cd 2.6/。 (5)安装mpich一1.2.6。在此我mpich—1.2.6
mpich—I.
多样的,但不外乎下面三个方面的内容,他们限定 了MPI的内涵和外延: (1)MPI是一个库,不是一种语言。按照并行 语言的分类,可以把在F0nraIl或c上实现的MPI 看作是在串行程序的基础上扩展后得到的并行语 言。MPI可以看作是Fortran或C语言的函数库的 调用,它遵守所有对库函数/过程的调用规则,与一 般的函数/过程调用没什么区别。 (2)MPI足一种规范或标准的代表,而不特指 某一个对它的具体实现。 (3)MPI足一种消息传递模型,并成为这种编 程模型的代表和事实上的标准。MH主要和最终 的目的都足服务于进程间通信。 MPIcH是一种重要的MPI实现,本文主要配置
行的并行程序的同一目录下)。
vi
co曲g/
进程名
0 1 l
小结
本文比较详细地叙述了在bnux环境下如何
其中文件的格式为: 主机名 比如:
hpcl hpcl hpcl /usr/home/p’og /usr/home/p’09
路径名
配置MPI,以实现多机的并行运行,或者单机情况
下以多进程来模拟多机并行计算。需要明确的是, 本文只是搭建了一个并行环境编写与运行的软件
一1.2.6/bin。
(8)检查安装是否成功。可以运行mpimn/ (安装成功会显示商ss
pmgmm
name的提示),或
者cd exa“ples/b∞ic/运行具体的实例检验。 至此,“pich—lr 2.6软件已经安装完成,但是 对于一个具体的程序,我们还是不能实现多机或者 多进程运行该并行程序,还需要进一步配置。 在c+MPI的环境下,MPI有两种运行方式: nIn一“p机器数目/,或者mpimn—p4pg/
1 cpi
(3)订hos协.allow/
格式为:机器名机器的用户名(为安全起见,建 议使用普通用户名) ∞ 比如:hpcl (4)vi hosts.equiv/。其中格式与ho啦.a110w 完全一样,可直接copy host8.allow中的内容。 5
cpiversion检验。
假设配置文件名为coIlfig(con堍放置在要运
的删cH的版本是mpich一1.2,6,它可以在http://
www—l|Ilix.IIlcs.anl.90v/mPi/mpich上免费获得。 3
“nux环境下的MPI的配置
・收到本文时间:2007年1月10日 作者简介:李璐,女。陈宝国,男。
lI】pi
万方数据
48
李璐等:基于“nux的MH并行环境的配置
中圈分类号T曰12
1
引言
并行处理技术是衡量一个国家综合国力的重
首先,从hctp://www—unix,Ⅱlcs.ard.印v/rTlp∥ mpich上下载mPich一1.2.6。在unux下一般其文件 的全名为mpich一1.2.6.tar.乎的打包压缩文件。 下面开始MH的具体配置步骤: (1)在Lin“的“系统设置”中“软件包”选项 中,选择”工程和计算“,去掉其中的lam选项。因
第35卷(2007)第ll期
计算机与数字工程
47
基于Linux的MPI并行环境的配置。
李璐”陈宝国2’
(安徽建筑工业学院数理系”合肥230601)(淮南师范学院数学系2’ 淮南232001)
摘要并行处理是一项重要的技术,简要介绍MPI的定义,详尽描述了在“nux环境下如何安装和配置M Pl,搭建并 行程序实现的软件平台,以达到多机并行计算,或者单机多进程模拟多机并行计算。 关键词MPI unux集群并行
下。./co面gLlre—p倘x=/usr/locaL,mpich一1.2.6,
其中带下划线的安装目录可以由用户自己指定。
(6)编译安装程序。make/。 (7)进入安装目录,配置编译的路径。vi bas}m文件或者编辑带pronle后缀名的文件,在这 些文件里添加PATH=¥PATH:/usr/locaL/mpich
他的进程名都为“1”。
万方数据
[2]都志辉.高性能计算并行编程技术一MPI并行程序设 计[M].北京:清华大学出版社,2000 [3]陈国良,并行计算一结构算法编程【M].北京:高等教 育出版社,2000 [4]http://www—uIIix.mc日.aIll.g叫/mpi/mpich
以实现在多台机器上实现多进程并行计算。
(3)进程名除了在本机指定一个“o”以外,其
要标志之一,而桌面超级并行计算机一Linux Pc集 群系统由于具有可扩展性好、成本低廉、高性能和 能够获得免费的Linux,PVM及MPI并行编程环 境等优点,从而特别适合我国国情。本文给出了如 何在Linux环境下配置MPI函数库,以实现并行程 序的编译与运行。 2
为lam是Linux下自带的、能与呻ich引起混淆的
另一台机器的目录,使操作更加方便。
其主要的实现步骤为: (1)启动集群中所有机器的tsh服务。 (2)cd/etc/
vi
machines.uNux/。在这个文件中加
入集群中所有机器的名称。比如,现在将集群中的 机器为hpcl,hpc2,hpc3,则在此文件中加入hpcl,
hpc2,hpc3,每个都占一行。 (4)将具体的并行程序如a1所在的目录(在
第35眷
配置文件名。前者是真正实现多机并行计算,后者 是在单机环境下实现多进程来模拟多机并行。本 文将详细介绍这两种命令格式的具体配置。 3.1配置一np的设置 (1)进入mpich一1.2.6的安装目录。 (2)cd util/IIlachines/。
(3)vi
4集群中实现rsh服务
为了方便并行程序在集群中的各个机器上的 运行、移植以及共享,可以将集群中的机器实现远 程登陆服务,这样可以方便用户在一台机器上访问
(2)不止可以在一个机器上模拟多进程,还可 以在多台机器上实现多进程。如在上述的例子中 还可以加入如“hpc2 l/usr/home/prog”的语句。
F0硼m[EB/OL].MPI:A吣.
sage—p鼬∞llg inkrf如e日诅ndafd.hd.J.0f S”Pe。∞m.
puter
Applicatiom.
此假设为/home)设置为rw可读可写权限。具体
hosts/
机器域名 别名
hpcl.sdu吐.edu.cn hpcl
格式为:IP地址 比如:192.168.130.16l
操作为:cd/etc/,“e。pon9/,添加“/home(程序
所在的目录)hpcl(rw)”,其中hpcl为并行程序所 在的主机名。 (5)运行“pimn—np 3.2配置一P4Pg的设置。
平台,对于具体的并行程序的编写以及调试在这里
不作任何阐述,相关的内容在另外的文章中将作进 一步的阐述。
参考文献 [1]M凹sage
P勰8jng】nter如啦e
/usr/hom∥p。og
其中需要注意以下几点: (1)例中pmg不是源文件名。若实现的是c
+MPI,源文件名为pmg.c,则prog是经过命令 mpicc—o prog prog.c/后的可执行文件名。