实验3安装MPICH
实验3 安装MPICH
准备知识(自学)
一、Linux命令及脚本文件
目的与要求:使学生掌握Linux基本命令的使用;学会编写简单的脚本文件。
主要内容及提示:
1.Linux基本命令
1.1帮助
所有的Linux命令及C,MPI函数的使用说明都可以通过联机帮助获得。
man 〈命令|C语言函数名|MPI函数名〉
〈命令名〉—help
1.2 文件、目录、磁盘操作命令
ls 查看目录中的内容,常用的参数有–al
pwd 显示当前工作目录
cd 改变当前工作目录,(.表示当前目录;..表示父目录;~表示当前用户的主目录)
mkdir 建立子目录
cp 复制文件或子目录,可用参数 -R
cat 显示文件内容
more 分屏输出(回车:上滚一行;空格:上滚一屏;q:退出)
less 分屏输出(q键退出、还可以使用光标上下移动键)
chmod 改变文件或目录的读(r)写(w)执行(x)属性(三组rwx中,第一组rwx 为该文件主的权限、第二组rwx为同一用户组中其他用户的权限、第三组rwx为其他用户的权限。例如:chmod 765 <文件名>,则文件的读写执行权限为rwxrw-r-x,即7=111B,6=110B,5=101B,这里B表示二进制)
ln 建立文件链接,常用参数-s(相当于Windows中的“快捷方式”)
rm 删除文件,删除子目录(需要参数-r)
mv 移动文件(目标文件若存在,则会被覆盖)
gzip gz文件的压缩/解压缩,常用参数-d(解压缩),-9(最大压缩)
tar tar,tgz文件的打包/解包,常用参数-cvf(打包成tar文件),-xvf (解tar文件包),-zcvf(打包并压缩成tgz文件),-zxvf(解tgz文件) df 显示硬盘各分区的使用情况
mount 装载文件系统
umount 卸载文件系统
1.3 m命令集——DOS/Windows格式软盘的使用
mdir或mdir a: 显示软盘当前目录内容
mcopy Linux操作系统中的文件与DOS/Windos格式软盘之间复制文件
mtype 显示软盘中指定文件的内容
mren 更改软盘中指定文件的文件名
mdel 删除软盘中指定文件
mcd 改变软盘的当前目录
mmd 在软盘上建立子目录
mrd 删除软盘上的子目录
1.4 C/C++/Fortran 77/Fortran 90及MPI程序的编译链接
cc [–o 〈可执行文件名〉] 〈源程序文件名.c|.cpp〉–l〈库名〉
例如:若exam1.c使用了数学函数(如:sqrt(x))则
命令应为cc –o exam1 exam1.c –lm (这里m表示将链接库文件libm.a)
若缺省参数-o 〈可执行文件名〉则默认的可执行文件名为a.out cc –c 〈目标代码文件名.o〉〈源程序文件名.c|.cpp〉仅编译不链接
gcc, f77, g77, make, mpicc, mpiCC, mpif77, mpif90等格式相同。
1.5 重新定向与管道操作
>、>> (输出重新定向);< (输入重新定向);| (管道)
1.6 系统状态
clear 清屏
top 显示系统状态(各进程CPU、内存)
ps 显示已经启动的进程,常用参数有 -x
hostname 显示当前计算机名,常用参数有 -i
date 显示系统日期时间
set 显示/设置系统环境变量
env 显示/设置系统环境变量
kill 终止指定进程
1.7 与用户有关的操作
logout 退出登录
exit 退出登录
whoami 显示当前的用户名(Who am I?)
1.8 远程操作命令
rsh <机器名> [-l 用户名] [〈命令〉[命令的参数]]
rcp [用户名@]机器名:路径/文件名 [用户名@]机器名:路径/文件名
telnet 机器名
ftp 机器名
1.9 编辑器的使用
vi 文件名
i键——进入vi的插入状态
joe 文件名
^KH显示/隐藏joe编辑器的编辑命令帮助,如:^KX为存盘退出。
Xwindow中有多种编辑器,如gedit。
1.10 关于bash
.bashrc文件中可以设置一些环境变量,如:命令程序的检索路径PATH等。
shell提供的小窍门”~”:(~可表示用户的登录主目录,事实上并没有一个目录名为~)。
〈tab〉键的功能:在Linux命令处理程序中(即命令行提示符$>下)可以使用〈tab〉键由Linux系统自动补足可能的文件名。
2.脚本文件
脚本文件是由Linux外部命令、内部命令编写的命令程序,可以实现“批处理”。脚本文件采用文本文件格式,其文件属性应有可执行成分(可用chmod +x 〈脚本文件名〉增加这种属性)。在命令提示符下键入脚本文件名(必要时可带多个参数)启动脚本文件执行。脚本文件中除可以执行Linux命令外,还可以执行算术计算、条件判断、循环等基本流程控制语句。
例如:欲在所有计算机中的gcc用户主目录中建立一个子目录(假设有同学“张山”欲在n10~n17,共8台计算机上都建立ZSMPI子目录,即目录/home/gcc/ZSMPI),可以使用如下命令启动下面的脚本文件
命令: rmkdirs ZSMPI 10 17
脚本文件名:rmkdirs (用任何编辑器建立、然后chmod +x rmkdirs)
脚本文件内容:
#FILENAME: rmkdirs
if [ -z $3 ]
then echo "$0
echo "(e.g.) $0 ZSMPI 10 17"
exit
fi
m=$2
while [ $m -le $3 ]
do
echo ”rsh n$m mkdir $1”
rsh n$m mkdir $1
let m=$m+1
done
注:另一种方法,机器名不一定连续,则需要在脚本文件中列出。脚本文件如下,启动脚本文件只需要一个参数——子目录名。
# FILENAME: rmkdirs1
if [ -z $1 ]
then echo "$0 < subdirname >"
echo "(e.g.) $0 ZSMPI"
exit
fi
for m in 10 11 12 13 17 15 14 16
do
echo ”rsh n$m mkdir $1”
rsh n$m mkdir $1
done
实验3 安装MPICH
3.1 实验目的
本次实验目的安装MPICH。
3.2 MPI介绍
MPI(Message Passing Interface)是目前发展较快、使用面较广的一个公共的消息传递库,顾名思义,就是在现有机器的软硬件通信基础上,实现了并行应用程序中各并行任务之间的相互通信、协调和同步功能,并对这些并行任务进行管理。MPI是在众多专家经多次会谈、综合考虑了NX/2、Express、Vertex、p4、PARMACS和PVM的优点的前提条件下,于1993年形成的一个标准,可谓后起之秀。它具有可移植性、高效性、灵活性和易用性的特点,不仅适用于具有分布式内存的大型机、工作站机群,也可用于具有共享内存的大型机。
3.3 实验内容
一、MPICH的安装及使用
目的与要求:使学生掌握MPI系统地安装、MPI程序的编译链接及运行。
主要内容:
1.MPICH的安装
1.1解压
tar -xzvf openmpi-1.6.5.tar.gz
将MPICH文件解压缩、解包到某子目录。
1.2系统配置
cd openmpi-1.6.5
若当前使用得Shell的辅助检索路径中没有设置当前目录,则应使用命令
./configure --prefix=/opt/openmpi-1.6.5 >& configure.log
注:/opt/openmpi-1.6.5是安装路径,configure.log保存屏幕显示
此外在配置过程可以指定编译器或选择用rsh或ssh。
1.3 编译
make >& make.log
1.4 安装
make install
设置辅助检索路径
1.5 设置路径
若是超级用户安装,则可以统一添加一条辅助检索路径。方法为修改/etc/profile文件
在适当位置修改和添加:
export PATH=/opt/openmpi-1.6.5/bin:$PATH
export INCLUDE=/opt/openmpi-1.6.5/include:$INCLUDE
export LD_LIBRARY_PA TH=/opt/openmpi-1.6.5/lib:$LD_LIBRARY_PA TH
若是普通用户则修改用户目录下的:~/.bash_profile文件
运行以下命令使修改生效:
source /etc/profile (或者source .bashrc)
注:可通过命令$ env | grep -w LD_LIBRARY_PA TH和$ env | grep -w PATH来查看环境变量修改是否成功。可运行目录examples下的例子程序查看是否安装成功在安装时可能需要一些软件,可以通过yum install ** 进行安装,例如:
*** C++ compiler and preprocessor
checking for g++... no
checking for c++... no
checking for gpp... no
checking for aCC... no
checking for CC... no
checking for cxx... no
checking for cc++... no
checking for cl.exe... no
checking for FCC... no
checking for KCC... no
checking for RCC... no
checking for xlC_r... no
checking for xlC... no
checking whether we are using the GNU C++ compiler... no
checking whether g++ accepts -g... no
checking dependency style of g++... none
checking how to run the C++ preprocessor... /lib/cpp
configure: error: in `/usr/hpl/openmpi-1.6.5':
configure: error: C++ preprocessor "/lib/cpp" fails sanity check
See `config.log' for more details
是由于没有编译器,因此可以网上查找软件的名称,然后安装。如下指令可以完成安装该编译器
[root@pc1 ~]# yum install gcc-c++
1.6放权(用ssh或者rsh命令能互相登陆)
在每台系统etc目录下创建文件/etc/hosts文件中输入主机名和IP对应,例如:
192.168.241.1 n1
192.168.241.2 n2
在每台系统etc目录中创建文件/etc/hosts.equiv文件,放权。例如:
n1
n2
放权测试:能ssh到自己和其他机器,并能从其他机器ssh到自己
2.运行MPI示例程序
在多台计算机的用户主目录(例如/home/stu)中建立各学员的子目录(例如:“张三”同学可以以ZSMPI为子目录名)。可用实验一所提供的脚本文件实现
登录其中任意一台计算机(其余的计算机只需启动了Linux操作系统),并将所建立的子目录作为当前工作目录(如:cd ZSMPI)。
2.1 编辑MPI源程序
简单地,可将例子程序(cpi.c, fpi.f)复制到当前目录,命令如下
cp <安装MPICH的目录>/examples/basic/*pi* .
2.2 编译MPI程序(以cpi.c, fpi.f为例)
mpicc –o cpi cpi.c
mpif77 –o fpi fpi.f
2.3 运行MPI程序(spmd模式——同样的程序多数据流)
a) 将可执行程序(例如cpi程序)远程拷贝rcp或者scp到其它计算机(结点)
的相应子目录中
rcp cpi [用户名@]机器名1:路径
rcp cpi [用户名@]机器名2:路径
……
rcp cpi [用户名@]机器名n:路径
b) 编辑机器表配置文件(如:文件名可以是hosts),文件的每一行为一台机器名(结
点名),其中第一行为本机的机器名(结点名)。机器名(结点名)可重复出现,表
示在该机器(结点)上将启动若干个进程运行。
c) 运行
mpirun –machinefile hosts –np 进程数 cpi
注1(a):利用脚本文件实现批量远程拷贝,同时建立机器表配置文件
#FILENAME: update
if [ -z $3 ]
then echo "$0
echo "(e.g.) $0 cpi 41 48"
exit
fi
echo "$HOSTNAME" > hosts
echo "$HOSTNAME 0 $PWD/$1" > pgfile
m=$2
let m=$m+1
while [ $m -le $3 ]
do
rcp $1 n$m:$PWD
echo "rcp $1 n$m:$PWD"
echo "n$m" >> hosts
echo "n$m 1 $PWD/$1" >> pgfile
let m=$m+1
done
注(b):利用脚本文件实现批量远程拷贝,同时建立机器表配置文件
# FILENAME: update1
if [ -z $1 ]
then echo "$0
echo "(e.g.) $0 cpi"
exit
fi
echo "$HOSTNAME" > hosts
echo "$HOSTNAME 0 $PWD/$1" > pgfile
for m in 10 11 12 13 17 15 14 16 #机器名(编号)不一定连续的情形
do
rcp $1 pc$m:$PWD
echo "rcp $1 pc$m:$PWD"
echo "n$m" >> hosts
echo "n$m 1 $PWD/$1" >> pgfile
done
注c):利用上述两个脚本文件之一可以实现批量远程拷贝及建立机器表配置文件。所建立的机器表配置文件分别为hosts和pgfile,它们均为文本文件的格式,分别用于两种不同形式的mpirun命令,例如:
mpirun –machinefile hosts –np 4 cpi
使用上述格式要求可执行文件(如cpi)在相同的用户(如gcc)以及相同的子目录中。
mpirun –p4pg pgfile –np4 cpi
使用上述格式不必要求可执行文件(如cpi)相同的子目录中。事实上,文件pgfile 中已经指明。
MPI安装与运行报告
MPI 安装于运行报告 本机运行环境: 机器型号:联想G450 处理器:Pentium(R)Dual-Core CPU T4200 @ 2.00GHz 运行内存 (RAM):2GB 操作系统:Windows 7(32 位) 程序开发环境:Visual Studio 2008 MPI 版本: mpich2-1.3.2p1-win-ia32 安装程序 详细安装步骤: 1、运行mpich2-1.3.2p1-win-ia32.msi。 安装过程中,会要求设置一个passphrase我的机器上默认的passphrase是beHappy,很有意思的密码。设置这个东西很重要,一定要记住;下面会说到为什么。 2、安装完之后,不知道下一步怎么进行了。打开刚才安装的MPICH2 的快捷方式目录,发现了一个README文件。打开之后,发现了MPICH2的使用方法介绍,于是按照其中的指示,我进行了第一个MPI 并行程序的编写。 我使用的是VC++2008首先创建一个新的工程,取名为MPITes。 添加MPI 库的支持: 按照README中的指导,应该首先将MPI的头文件目录包含到项目中去。结果在项目属性中找了半天,也没有找到添加头文件目录的位置,只找到了包含库文件的位置,我安装MPICH2的目录为D:\Program Files\MPICH2将MPICH2的库文件添加到如下面图1所示的位置即可。 最后才反应过来,这个工程还是空的,没有任何文件,可能跟这个有关系吧。 于是,马上新建了一个Cpp文件main.cpp,将老师PPT中的例子程序拷贝进去。
图1 果然,新建了这个cpp文件之后,项目属性中多出了C/C++这样一项, 于是,就可以在其中设置包含文件的目录了,相应的配置如下面图2所示 图2 设置好这些文件之后,编译程序,结果在连接的时候报错,类似于 main.obj : error LNK2019:无法解析的外部符号_MPI_Finalize,该符号在函数_main中被引用”这样的错误出现了六个。再看READM文档,发现了这样? 句话:
数学模型实验报告
数学模型实验报告 实验内容1. 实验目的:学习使用lingo和MATLAB解决数学模型问题 实验原理: 实验环境:MATLAB7.0 实验结论: 源程序 第4章:实验目的,学会使用lingo解决数学模型中线性规划问题1.习题第一题 实验原理: 源程序: 运行结果: 、 管 路 敷 设 技 术 通 过 管 线 不 仅 可 以 解 决 吊 顶 层 配 置 不 规 范 高 中 资 料 试 卷 问 题 , 而 且 可 保 障 各 类 管 路 习 题 到 位 。 在 管 路 敷 设 过 程 中 , 要 加 强 看 护 关 于 管 路 高 中 资 料 试 卷 连 接 管 口 处 理 高 中 资 料 试 卷 弯 扁 度 固 定 盒 位 置 保 护 层 防 腐 跨 接 地 线 弯 曲 半 径 标 等 , 要 求 技 术 交 底 。 管 线 敷 设 技 术 中 包 含 线 槽 、 管 架 等 多 项 方 式 , 为 解 决 高 中 语 文 电 气 课 件 中 管 壁 薄 、 接 口 不 严 等 问 题 , 合 理 利 用 管 线 敷 设 技 术 。 线 缆 敷 设 原 则 : 在 分 线 盒 处 , 当 不 同 电 压 回 路 交 叉 时 , 应 采 用 金 属 隔 板 进 行 隔 开 处 理 ; 同 一 线 槽 内 强 电 回 路 须 同 时 切 断 习 题 电 源 , 线 缆 敷 设 完 毕 , 要 进 行 检 查 和 检 测 处 理 。 、 电 气 课 件 中 调 试 对 全 部 高 中 资 料 试 卷 电 气 设 备 , 在 安 装 过 程 中 以 及 安 装 结 束 后 进 行 高 中 资 料 试 卷 调 整 试 验 ; 通 电 检 查 所 有 设 备 高 中 资 料 试 卷 相 互 作 用 与 相 互 关 系 , 根 据 生 产 工 艺 高 中 资 料 试 卷 要 求 , 对 电 气 设 备 进 行 空 载 与 带 负 荷 下 高 中 资 料 试 卷 调 控 试 验 ; 对 设 备 进 行 调 整 使 其 在 正 常 工 况 下 与 过 度 工 作 下 都 可 以 正 常 工 作 ; 对 于 继 电 保 护 进 行 整 核 对 定 值 , 审 核 与 校 对 图 纸 , 编 写 复 杂 设 备 与 装 置 高 中 资 料 试 卷 调 试 方 案 , 编 写 重 要 设 备 高 中 资 料 试 卷 试 验 方 案 以 及 系 统 启 动 方 案 ; 对 整 套 启 动 过 程 中 高 中 资 料 试 卷 电 气 设 备 进 行 调 试 工 作 并 且 进 行 过 关 运 行 高 中 资 料 试 卷 技 术 指 导 。 对 于 调 试 过 程 中 高 中 资 料 试 卷 技 术 问 题 , 作 为 调 试 人 员 , 需 要 在 事 前 掌 握 图 纸 资 料 、 设 备 制 造 厂 家 出 具 高 中 资 料 试 卷 试 验 报 告 与 相 关 技 术 资 料 , 并 且 了 解 现 场 设 备 高 中 资 料 试 卷 布 置 情 况 与 有 关 高 中 资 料 试 卷 电 气 系 统 接 线 等 情 况 , 然 后 根 据 规 范 与 规 程 规 定 , 制 定 设 备 调 试 高 中 资 料 试 卷 方 案 。 、 电 气 设 备 调 试 高 中 资 料 试 卷 技 术 电 力 保 护 装 置 调 试 技 术 , 电 力 保 护 高 中 资 料 试 卷 配 置 技 术 是 指 机 组 在 进 行 继 电 保 护 高 中 资 料 试 卷 总 体 配 置 时 , 需 要 在 最 大 限 度 内 来 确 保 机 组 高 中 资 料 试 卷 安 全 , 并 且 尽 可 能 地 缩 小 故 障 高 中 资 料 试 卷 破 坏 范 围 , 或 者 对 某 些 异 常 高 中 资 料 试 卷 工 况 进 行 自 动 处 理 , 尤 其 要 避 免 错 误 高 中 资 料 试 卷 保 护 装 置 动 作 , 并 且 拒 绝 动 作 , 来 避 免 不 必 要 高 中 资 料 试 卷 突 然 停 机 。 因 此 , 电 力 高 中 资 料 试 卷 保 护 装 置 调 试 技 术 , 要 求 电 力 保 护 装 置 做 到 准 确 灵 活 。 对 于 差 动 保 护 装 置 高 中 资 料 试 卷 调 试 技 术 是 指 发 电 机 一 变 压 器 组 在 发 生 内 部 故 障 时 , 需 要 进 行 外 部 电 源 高 中 资 料 试 卷 切 除 从 而 采 用 高 中 资 料 试 卷 主 要 保 护 装 置 。
《数学实验》试题答案
北京交通大学海滨学院考试试题 课程名称:数学实验2010-2011第一学期出题教师:数学组适用专业: 09机械, 物流, 土木, 自动化 班级:学号:姓名: 选做题目序号: 1.一对刚出生的幼兔经过一个月可以长成成兔, 成兔再经过一个月后可以 繁殖出一对幼兔. 如果不计算兔子的死亡数, 请用Matlab程序给出在未来24个月中每个月的兔子对数。 解: 由题意每月的成兔与幼兔的数量如下表所示: 1 2 3 4 5 6 ··· 成兔0 1 1 2 3 5··· 幼兔 1 0 1 1 2 3··· 运用Matlab程序: x=zeros(1,24); x(1)=1;x(2)=1; for i=2:24 x(i+1)=x(i)+x(i-1); end x 结果为x = 1 1 2 3 5 8 13 21 3 4 5 5 89 144 233 377 610 987 1597 2584 4181 6765 1094 6 7711 2865 7 46368 2.定积分的过程可以分为分割、求和、取极限三部分, 以1 x e dx 为例, 利用
已学过的Matlab 命令, 通过作图演示计算积分的过程, 并与使用命令int() 直接积分的结果进行比较. 解:根据求积分的过程,我们先对区间[0,1]进行n 等分, 然后针对函数x e 取和,取和的形式为10 1 i n x i e e dx n ξ=≈ ∑ ? ,其中1[ ,]i i i n n ξ-?。这里取i ξ为区间的右端点,则当10n =时,1 x e dx ?可用10 101 1.805610 i i e ==∑ 来近似计算, 当10n =0时,100 100 1 01 =1.7269100 i x i e e dx =≈ ∑?,当10n =000时,10000 10000 1 1 =1.718410000 i x i e e dx =≈ ∑ ?. 示意图如下图,Matlab 命令如下: x=linspace (0,1,21); y=exp(x); y1=y(1:20); s1=sum(y1)/20 y2=y(2:21); s2=sum(y2)/20 plot(x,y); hold on for i=1:20 fill([x(i),x(i+1),x(i+1),x(i),x(i)],[0,0,y(i),y(i),0],'b') end syms k;symsum(exp(k/10)/10,k,1,10);%n=10 symsum(exp(k/100)/100,k,1,100);%n=100 symsum(exp(k/10000)/10000,k,1,10000);%n=10000
MPICH2在Windows环境下Visual_Studio_2010的环境搭建
MPICH2在Windows系统Visual Studio 2010的环境搭建 本机运行环境: 机器型号:联想G450 处理器:Pentium(R)Dual-Core CPU T4200 @ 2.00GHz 运行内存(RAM):2GB 操作系统:Windows 7(32位) 程序开发环境:Visual Studio 2008 MPI版本: mpich2-1.3.2p1-win-ia32安装程序 MPI的编译和运行 对于简单的程序,可以使用专门的编译命令。对于大的项目,最好使用标准的Makefile。MPICH提供的编译命令有mpicc和mpif77,它们分别是C和Fortran的编译命令: mpicc -o first first.c mpif77 -o first firstf.f 对于编译得到的目标程序,运行的命令为: mpirun –arch xxx –np yyy first 其中xxx为machines.
数学实验答案-1
1.(1) [1 2 3 4;0 2 -1 1;1 -1 2 5;]+(1/2).*([2 1 4 10;0 -1 2 0;0 2 3 -2]) 2. A=[3 0 1;-1 2 1;3 4 2],B=[1 0 2;-1 1 1;2 1 1] X=(B+2*A)/2 3. A=[-4 -2 0 2 4;-3 -1 1 3 5] abs(A)>3 % 4. A=[-2 3 2 4;1 -2 3 2;3 2 3 4;0 4 -2 5] det(A),eig(A),rank(A),inv(A) 求计算机高手用matlab解决。 >> A=[-2,3,2,4;1,-2,3,2;3,2,3,4;0,4,-2,5] 求|A| >> abs(A) ans = ( 2 3 2 4 1 2 3 2 3 2 3 4 0 4 2 5 求r(A) >> rank(A) ans =
4 求A-1 《 >> A-1 ans = -3 2 1 3 0 -3 2 1 2 1 2 3 -1 3 -3 4 求特征值、特征向量 >> [V,D]=eig(A) %返回矩阵A的特征值矩阵D 与特征向量矩阵V , V = - + + - - + - + - + - + D = { + 0 0 0 0 - 0 0 0 0 + 0 0 0 0 - 将A的第2行与第3列联成一行赋给b >> b=[A(2,:),A(:,3)'] b = 《 1 - 2 3 2 2 3 3 -2