基于Linux的MPI并行环境的配置
- 格式:pdf
- 大小:80.58 KB
- 文档页数:2
并行程序设计实验报告姓名:学号:一、实验目的通过本次试验,了解使用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是一个由英国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并行集群的搭建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(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++0 引言有限元方法是20世纪50年代伴随电子计算机的诞生,在计算数学和计算工程领域里诞生的一种高效而灵活的计算方法,它将古典变分法与分片多项式插值相结合,易于处理复杂的边值问题,具有有限差分法无可比拟的优越性,广泛应用于求解热传导、电磁场、流体力学等相关问题,已成为当今工程分析和计算中不可缺少的最重要的工具之一。
有限元方法的“化整为零、积零为整”的基本思想与并行处理技术的基本原则“分而治之”基本一致,因而具有高度的内在并行性。
在计算机技术快速发展使得并行机的价格日益下降的今天,有限元并行计算引起了学术界和工程界的普遍关注,吸引了众多科研与工程技术人员。
但要实现有限元并行编程,并不是一件容易的事,特别是对于复杂区域问题,若从网格生成、任务的划分、单元刚度矩阵的计算、总刚度矩阵的组装,到有限元方程组的求解以及后处理,都需要程序员自己编写代码的话,将是一件十分繁琐的事情。
本文探讨了构建基于MPI+FreeFem++的有限元并行计算环境,在该环境下,程序员可避免冗长代码的编写,进而轻松、快速、高效地实现复杂问题的有限元并行计算。
1 FreeFem++简介FreeFem++ 是一款免费的偏微分方程有限元计算软件,它集成网格生成器、线性方程组的求解器、后处理及计算结果可视化于一体,能快速而高效地实现复杂区域问题的有限元数值计算。
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配置以及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.1.1Linux操作系统下的环境搭建1.1.1.1 l am-mpiMPI是一种消息传递编程模型,并成为这种模型编程的代表和事实上的标准。
MPI是一个库而不是一门语言,因此对MPI的使用必须和特定的语言结合起来进行,如科学与工程计算领域的FORTRAN语言、目前广泛使用的开发语言C等。
LAM(Local Area Multicomputer)是免费的MPI实现,由Ohio State University开发。
配置并行环境之前几点说明:1.安装Linux系统(RedHat 9.2)2.安装网卡驱动(因为实验室的机群系统dellPE2850服务器无法自动识别网卡,需要手动驱动网卡。
普通机器RH可自动识别其网卡的机器.网卡驱动在自带的Server Assistant 光盘中:)步骤:#cd /mnt/cdrom/pexxxx/network/r82795该文件夹下,有网卡驱动的压缩包,将其拷贝到 /root下,解压#tar -xzvf *进入解压后的文件夹:#cd /root/Intel_LAN_72_RHLinux_src_A00/e1000/e1000-5.2.17.10/src , #make install安装后,重起机器。
3.在重新启动过程中,系统会自动识别新硬件,此时需要对网卡的相关信息进行配置修改网络配置文件如下:1)修改文件 /etc/sysconfig/network-scripts/ifcfg-eth0 ,修改IP、网关等信息:DEVICE=eth0 设备名称BOOTPROTO=staticONBOOT=yesIPADDR=192.168.0.109 IP地址NETMASK=255.255.255.0 子网掩码NETWORK=192.168.0.0 可选写BROADCAST=192.168.0.255 可选写GATEWAY=192.168.0.1 网关2)配置DNS,需要修改 /etc/resolv.conf 文件nameserver 210.47.208.8 DNS服务器地址3)修改 /etc/sysconfig/network文件,指定主机名NETWORKING = yesHOSTNAME = node064)修改 /etc/hosts 文件,对主机名加以解释,加入:192.168.0.106 node06完成上面几步后,网络基本配置完成,此时需要重启机器,或重新开启网络服务:可以使用命令:#reboot 重启机器#service network restart 重新开启网络服务注:每台机器都配备两块网卡:eth0、eth1,如果网卡驱动、网络配置后网络仍然不通,需要关闭eth1,而只启用eth0。