MPI实验报告
目的:
了解建立高性能计算机的方法,使用现有计算机组装高性能计算机。
环境
主机: windows7 操作系统
虚拟机1:windowsXP, 操作系统
虚拟机2:ubuntu11.10操作系统
虚拟机3:ubuntu11.10操作系统
软件:MPICH2
MPICH2是MPI(Message-Passing Interface)的一个应用实现,支持最新的MPI-2接口标准,是用于并行运算的工具,在程序设计语言上支持C/C++和Fortran。具体参见下面的网站:http://www.mcs.anl.gov/index.php
安装软件及配置
从官网http://www.mcs.anl.gov/research/projects/mpich2/index.php下载mpich2的最新版本mpich2-1.4.1p1. 以及windows上的版本mpich2-1.4.1p1-win-ia32.msi
原创文章:转载请注明出处。 http://lt200819.iteye.com/blog/1321974在unbuntu 11.10上安装
1.ubuntu上缺少g++ md5支持
sudo apt-get install g++ Sudo apt-get install libssl-dev
2.安装mpich2
mkdir mpich2 将mpich安装到这个文件夹下
在获得mpich2-1.4.1之后
1)gzip –d mpich2-1.4.1p1.tar.gz (将gzip压缩的文件解压:mpich2-1.4.1p1.tar)
2)tar xvf mpich2-1.4.1p1.tar (将tar归档的文件解开)
3)cd mpich2-1.4.1p1 (进入mpich2-1.4.1p1的目录)
4)configure (运行shell程序configure对mpich进行一些配置)
./configure --prefix=/home/walter/mpich2 --with-pm=smpd --disable-f77 --disable-fc
使用smpd作为pm
运行make命令”make |& tee make info.txt”
make install
将安装后MPICH2的bin目录“mpich2”添加到系统路径中
3设置环境变量
Sudo vi /ect/environment 在PATH后面加上/home/yourname/mpich2/bin
4然后echo $PATH,看看有没有添加成功。再下一步which smpd,看看有没有找到相应的路径。
5复制node1系统,修改副本的主机名
先在/etc/hosts中删除原来的hostname,然后 vi /etc/hostname改成你想要的,注意必须顶行写。然后使用hostname命令来重新得到hostname,logout一下再login就会改掉。
6修改node1和 node2的host
Ifconfig 得到本机的ip
node1的ip(192.168.1.1) node1 server
#个人认为这里的server加不加都可以就只是一个名字
node2的ip(192.168.1.2) node2
原创文章:转载请注明出处。 http://lt200819.iteye.com/blog/1321974
7自动ssh登录
授权让node1和node2可以无密码的ssh登录对方以及自己
在node1和node2上运行ssh-keygen命令来产生公匙和私匙,分别把公匙内容增添到本机和对方机的 ~/.ssh/authorized_keys。
具体做法:
$ ssh-keygen -t rsa,之后一路回车,这一步将产生~/.ssh目录,以及两个文件d_rsa(私钥)和 id_rsa.pub(公钥)
$ cd ~/.ssh
$ cat id_rsa.pub >> authorized_keys 把node1的公匙存到本地authorized_keys
$ scp node1:~/.ssh/id_rsa.pub node2:~/.ssh/1.pub 把node1的公匙复制到node2
$ ssh node2登录到node2
$ ssh-keygen -t rsa在node2上产生一对公匙和私匙
$ cd ~/.ssh
$ cat id_rsa.pub >> authorized_keys 把node2的公匙保存到本地authorized_keys
$ scp node2:~/.ssh/id_rsa.pub node1:~/.ssh/2.pub 把node2的公匙复制到node1
$ cat 1.pub >> authorized_keys 把node1的公匙加入到node2的authorized_keys
$ ssh node1 登录到node1
$ cd ~/.ssh
$ cat 2.pub >> authorized_keys 把node2的公匙加入到node1的authorized_keys
这里要保证authorized_keys的文件权限为600或者644:chmod 600 authorized_keys
这样在两台电脑之间分别ssh登录过一次以后就能无密码登录了
8 启动Smpd –s
要求passphrase的值在所有节点上相等,这里我用的是litong
因为在windows上也是用这个服务,所以可以实现,windows和linux的互联
在windows上安装
1只需运行mpich2-1.4.1p1-win-ia32.msi,要求passphrase的值在所有节点上相等,这里我用的是litong passphrase
安装完成之后打开C:\Program Files\MPICH2,有几个文件夹需要先说明一下,include是头文件,lib是库文件,开发的时候需要使用;bin文件夹里面是各需要使用的应用程序;examples文件夹中包含的是一个完整的例子,计算圆周率,使用这个来对比运行效率。
打开bin文件夹,运行wmpiregister.exe,注册计算机的用户名和密码,要求此用户有本计算机的管理员权限。这里要求window和linux的用户名相同
安装完后有一个MPICH2 Process Manager服务,自动开启了,不用去管它。这个服务也就是smpd。
2添加环境变量C:\Program Files\MPICH2\bin,此为节点3
在另外一个虚拟机1的windowsxp上按照如上步骤,设置node4
原创文章:转载请注明出处。 http://lt200819.iteye.com/blog/1321974
实验过程及结果
我们利用MPICH2的示例程序进行测试,示例为计算圆周率,可以输入精度。
首先在ubuntu下测试node1,node2(node1,ndoe2都是linux环境)
1修改为静态ip,便于测试
ifconfig 网卡设备名IP地址
将node1的ip设为192.168.1.1
将node2的ip设为192.168.1.2
2启动smpd: smpd -s
3新建文件machinefile
内容为
node1
node2
4 cd mpich2-1.4.1p1
5执行
单节点执行
mpiexec –n 10 ./examples/cpi(n表示进程数)
多节点执行
mpiexec -n 10 -machinefile machinefile ./examples/icpi
图1:在linux下执行的效果图
在windows下测试node3,node4(node3,node4都是windows系统)
1我们设置
node3 192.168.1.3
node4 192.168.1.4
2新建文件machinefile.txt
内容为
192.168.1.3
192.168.1.4
3执行
单节点执行
C:\MPICH2\bin>mpiexec -path "c:\MPICH2\examples " icpi
多节点执行
C:\MPICH2\bin>mpiexec -machinefile machinefile.txt -channel nemesis -path "c:\MPICH2\examples;/home/walter/mpich2-1.4.1p1/examples" icpi
图2:在windows下执行的效果图
在主机(windows7)上操作node1, node2(两个linux节点)协作运行:
1在window下,修改
machine.txt
192.168.1.1
192.168.1.2
2执行
多节点执行
C:\MPICH2\bin>mpiexec -machinefile machinefile.txt -channel nemesis -path "c:\MPICH2\examples;/home/walter/mpich2-1.4.1p1/examples" icpi
图3:在window下执行linux多节点的效果图
在主机(windows7)上操作node1, node3(异构环境)协作运行:
去掉icpi.exe的exe扩展名
1在window下,修改
machine.txt
192.168.1.1
192.168.1.3
2执行
多节点执行
C:\MPICH2\bin>mpiexec -machinefile machinefile.txt -channel nemesis -path "c:\MPICH2\examples;/home/walter/mpich2-1.4.1p1/examples" icpi
图4:在window下执行linux多节点的效果图
3在window下,修改
machine.txt
192.168.1.1:5
192.168.1.3:5
5代表进程数
2执行
多节点执行
C:\MPICH2\bin>mpiexec -machinefile machinefile.txt -channel nemesis -path "c:\MPICH2\examples;/home/walter/mpich2-1.4.1p1/examples" icpi
图5:在window下执行linux多节点的效果图
原创文章:转载请注明出处。 http://lt200819.iteye.com/blog/1321974
结果记录
以下所有结果为10次实验的平均结果,但是会有误差
序号 节点数 进程数 精度 执行时间 误差
1 1 2 10 0.000254 0.000833
2 1 2 5 0.000039 0.003333
3 1 10 10 0.005097 0.000833
4 1 2 1000000 0.187634 0.000001
5 1 10 1000000 0.147634 0.000001
6 2 2 10 0.001383 0.000833
7 2 2 1000000 0.186592 0.000001
结论:
比较1和2,进程数和节点数一定时,精度降低执行时间降低
比较1和3,当进程数增加时,执行时间会增长,这和我们一般预期的结果并不一致。
这里我们分析认为计算节省的时间远少于通信所浪费的时间。
比较4和5,当精度很大时,进程数增加,执行时间会减少。
精度一定时,无论进程数和节点数是否变化,误差不变
比较1和6,进程数和精度一定时,增加节点执行时间也增加了,这里我们也认为计算节省的时间远小于于通信所浪费的时间。
比较4和6,我们发现当精度很大时,多节点执行和单节点执行,速度几乎一样。这里我们也认为计算节省的时间约等于通信所浪费的时间。由于CPU性能很高,我们很难看出增加节点数对性能的有益影响。理论上我们认为当进程数大于单个节点可以运行的数量时,多节点的性能将会优于单节点的性能
实验遇到的问题
本次实验遇到很多问题,花费了很长时间解决。
1. 在虚拟机下快速安装unbuntu11.10没有图形化界面。解决方案:新建虚拟机环境,然后用CD盘启动安装。
2. windows无法访问linux. mpich2-1.4.1的linux版本在安装时默认使用hydra 作为pm,而windows使用 smpd作为pm。解决方案:linux在配置的时候使用smpd作为pm。
3. windows下当前用户无法作为访问的用户.解决方案:新建其他用户,用户名和密码与linux下的用户名和密码相同。
4. 执行程序:linux和windows的执行文件的路径不同,需要用path属性设置 -path "c:\MPICH2\examples;/home/walter/mpich2-1.4.1p1/examples"
5. 一定要关闭所有防火墙
参考网址:
http://baiseda.iteye.com/blog/1024681
http://www.mcs.anl.gov/research/projects/mpich2/index.php
http://www.mcs.anl.gov/research/projects/mpich2/support/index.php?s=support
原创文章:转载请注明出处。 http://lt200819.iteye.com/blog/1321974
分享到:
相关推荐
You must install MPICH2 on all machines that you want to run MPI programs on. Run the installer on each machine individually. The installer creates the following mpich2 directory structure on your ...
"MPICH2 安装、配置及调试运行" 一、MPICH2 介绍 MPICH2 是一个开源的消息传递接口(MPI)实现,用于高性能计算领域。它提供了一个标准化的接口,允许用户编写MPI应用程序,以便在各种计算机架构上运行。 二、下载...
**标题:“mpich2-1.3”** **概述:** `mpich2-1.3` 是一个基于MPI(Message Passing Interface)协议的并行计算库,它提供了跨平台的分布式内存并行计算能力。MPI是用于编写并行程序的标准接口,允许不同计算节点...
**标题:“mpich2-1.0.8”** **描述:“mpich2-1.0.8.tar,mpich2-1.0.8-win-ia32,mpich2-1.0.8-win-x86-64,并行计算环境搭建工具”** 这里提到的是一个用于并行计算环境搭建的工具——MPICH2的1.0.8版本。MPICH...
在IT领域,尤其是在高性能计算与并行编程领域,MPICH2是被广泛使用的消息传递接口(MPI)实现之一,它能够支持大规模并行计算任务。在本文中,我们将深入探讨如何在Visual Studio 2010环境下配置MPICH2,以创建和运行...
MPICH2是一款实现高性能并行计算的开源Message Passing Interface (MPI)实现,它基于IEEE标准MPI-2。本文将详细讲解MPICH2的安装过程及其配置,并简要介绍MPI的基本概念。 **一、MPI(Message Passing Interface)...
MPICH2是一个开源的、可移植的、高性能的Message Passing Interface (MPI)实现,它允许在各种计算平台上进行并行计算。"mpich2-1.2.tar.gz" 是一个包含MPICH2版本1.2的源代码压缩包,用于在不同的系统上构建和安装...
### MPICH2用户指南知识点概览 #### 一、引言 MPICH2是一个高性能的Message Passing Interface (MPI) 实现,它支持多种并行计算环境,并被广泛应用于科学计算和工程领域。本用户指南旨在帮助用户理解如何安装、配置...
MPICH2是一款开源的、实现了MPI(Message Passing Interface)标准的并行计算库,它允许在多处理器系统或分布式计算环境中进行高效的通信和数据交换。Windows 64位版本的MPICH2是专为64位操作系统的用户设计的,确保...
MPICH2是基于MPI(Message Passing Interface)标准的一个开源实现,它为并行计算提供了通信库。这个"mpich2-1.2.1.tar.gz"文件是一个老版本的MPICH2,适用于那些需要特定历史版本或者对新版本不兼容的用户。在...
"mpich2-1.4.1p1.tar" 是一个软件包的名称,其中 "mpich2" 指的是 MPICH2,这是一个开源的实现Message Passing Interface (MPI) 标准的并行计算库。版本号 "1.4.1p1" 表示这是 MPICH2 的1.4.1版本的小补丁版(patch ...
### Ubuntu 10.04 安装 MPICH2-1.0.8 全过程详解 #### 一、概述 MPICH2 是一个高性能、跨平台的消息传递接口(Message Passing Interface, MPI)实现,广泛应用于分布式计算领域,特别是在科学计算和高性能计算中...
"Linux 并行环境及 MPICH2 安装全过程" Linux 并行环境是高性能计算领域的关键技术之一,MPICH2 是一个流行的开源并行计算库。在 Linux 平台上安装 MPICH2 需要完成一系列的准备工作和安装步骤。 一、准备工作 1....
并行计算是现代高性能计算领域中的核心技术,而MPICH2是实现这一技术的重要工具之一。本文将深入探讨MPICH2的原理、应用及其在中南大学的并行计算实验中的具体实践。 MPICH2,全称Message Passing Interface (MPI) ...
标题中的“mpich2_1.4.1p1-1ubuntu_i386”指的是一个针对i386架构的MPICH2版本,版本号为1.4.1p1,该版本是专为Ubuntu操作系统编译和优化的。MPICH2是一个开源的、实现了MPI(Message Passing Interface)标准的并行...
1. **下载**:首先,从官方网站或其他可靠来源获取MPICH2的Windows版本安装包,例如这里提供的`mpich2-1.3.2p1-win-ia32.msi`。 2. **运行安装**:双击安装包,按照向导提示进行安装。选择合适的安装路径,通常默认...
RHEL 5 安装mpich2 假如该文件夹为mpiexe : cd /home/yonghu mkdir mpiexe ,创建完成后,就执行 ./configure -prefix=/home/yonghu/mpiexe 就是配置我们的安装目录,这里同样会等待一段时间,等成功执行后,在mpich...
mpich2(MPI并行程序安装包)是MPI并行程序在WINDOWS系统下的安装包,可以直接在windows7下安装使用,能够帮助用户快速安装并配置MPICH2环境,MPICH2是与MPI-2相对应的MPICH 实现版本,包含了MPI-2相对于MPI-1扩充后的...