Mpich2 集群:修订间差异
来自Ubuntu中文
跳到导航跳到搜索
无编辑摘要 |
无编辑摘要 |
||
(未显示同一用户的1个中间版本) | |||
第143行: | 第143行: | ||
间(包括只运行于本机的程序) 。 | 间(包括只运行于本机的程序) 。 | ||
4. 节点不足时使用 mpdboot -n ${N} -f ~/mpd.hosts --chkup 启动足够的 cluster 节点。${N} | 4. 节点不足时使用 mpdboot -n ${N} -f ~/mpd.hosts --chkup 启动足够的 cluster 节点。${N} | ||
为节点数 ${N}<=5,注意 N<5 时除本地节点外会优先启动 mpd.hosts 中靠前的节点。运行的程序必须放置到/mpi 路径的子目录下, | |||
注意目录权限需要 mpiu 用户可读写(chown mpiu /mpi/xxx -R)。结果也需要写回此路径。 | |||
少于 4 个进程的程序请按原方法在本机跑,效率较高。 | |||
<2> Cluster 测试算例运行方法: | |||
假设现在在主节点上, 其主机名为:master | |||
运行以下命令 | |||
# 切换到 mpiu 帐户 | |||
user@master:~$ su mpiu | user@master:~$ su mpiu | ||
# 输入登录到 mpiu 的密码 | |||
user@master:~$ | user@master:~$ | ||
# 转到 mpiu 帐户的根目录 | |||
mpiu@master:~$ cd | mpiu@master:~$ cd | ||
# 退出所有可能已经启动的 MPD 帐户 | |||
mpiu@master:~$ mpdallexit | mpiu@master:~$ mpdallexit | ||
# 启动 5 个计算节点 | |||
mpiu@master:~$ mpdboot -n 5 –chkup | mpiu@master:~$ mpdboot -n 5 –chkup | ||
mpiu@master:~$ cd /mpi/hpl-2.0/bin/Linux_PII_FBLAS/ | mpiu@master:~$ cd /mpi/hpl-2.0/bin/Linux_PII_FBLAS/ | ||
第163行: | 第163行: | ||
mpiu@master:~$ mpirun -np 20 ./xhpl 2>&1 > result-cluster-`date +%s`.txt | mpiu@master:~$ mpirun -np 20 ./xhpl 2>&1 > result-cluster-`date +%s`.txt | ||
<3>关于修改 HPL.dat 说明 | <3>关于修改 HPL.dat 说明 | ||
HPL.dat 是 HPL20core.dat 的软链接。 | HPL.dat 是 HPL20core.dat 的软链接。 | ||
运行前修改第 5-6 行即可 | 运行前修改第 5-6 行即可 | ||
第170行: | 第171行: | ||
40960 51200 81920 102400 | 40960 51200 81920 102400 | ||
测试完成的矩阵可以从文件中去掉 | 测试完成的矩阵可以从文件中去掉 | ||
5.维护事项 | 5.维护事项 | ||
5.1 添加计算节点 | |||
按照第 2 节内容配置新节点 | |||
在所有已有节点的/etc/hosts 文件中增加一行新节点的 hostname 解析 | |||
在/mpi/mpd.hosts 中添加一行新节点的 hostname | |||
使用下面命令启动: | |||
$ mpdboot -n ${numberofnode} --chkup | $ mpdboot -n ${numberofnode} --chkup | ||
5.2 删除计算节点 | 5.2 删除计算节点 | ||
第187行: | 第189行: | ||
6.2 127.0.0.1/16 只能解析为 localhost | 6.2 127.0.0.1/16 只能解析为 localhost | ||
6.3 节点中不能有 hostname 相同的机器 | 6.3 节点中不能有 hostname 相同的机器 | ||
6.4 运行 HPL 测试算例时,可能会提示缺少 libgfortran.so.2 库, | 6.4 运行 HPL 测试算例时,可能会提示缺少 libgfortran.so.2 库,此时要在各计算节点上安装gfortran-4.2 编译器。 | ||
./xhpl: error while loading shared libraries: libgfortran.so.2: cannot open shared object file: No such file or directory | ./xhpl: error while loading shared libraries: libgfortran.so.2: cannot open shared object file: No such file or directory | ||
./xhpl: error while loading shared libraries: libgfortran.so.2: cannot open shared object file: No such file or directory | ./xhpl: error while loading shared libraries: libgfortran.so.2: cannot open shared object file: No such file or directory | ||
./xhpl: error while loading shared libraries: libgfortran.so.2: cannot open shared object file: No such file or directory | ./xhpl: error while loading shared libraries: libgfortran.so.2: cannot open shared object file: No such file or directory |
2010年9月29日 (三) 14:45的最新版本
Ubuntu 8.10 组建基于mpich2 的并行计算集群
1.操作系统平台及配套的软件环境
各计算节点的操作系统:Ubuntu-8.10-desktop-amd64 MPICH2 软件版本: mpich2-1.0.8, MPICH2 配置的 Fortran 编译器为: 英特尔 Fortran 编译器 ifort 10
2.计算节点配置
检查主机名是否同名 2.1 $ sudo vim /etc/hostname # 查看 hostname, 要求所有节点具有不同的 hostname。 2.2 修改主机名和 IP 配置文件 $ sudo vim /etc/hosts 文件内容类似如下: ------------------------------------------------------------------------------------------------------ 127.0.0.1 localhost # MPICH2 HOSTS 193.168.100.121 193.168.100.116 193.168.100.109 193.168.100.11 193.168.100.100 ------------------------------------------------------------------------------------------------------- 2.3 所有节点固定 IP 地址 <1> 文件配置用如下命令设置: $ sudo vim /etc/network/interfaces
文件内容类似如下: ------------------------------------------------------------------------------------------------------- auto lo iface lo inet loopback auto eth0 iface eth0 inet static # 修改为实际的 IP 地址 address 193.168.100.121 # 修改为实际的子网掩码 netmask 255.255.255.0 # 修改为实际的网关地址 gateway 193.168.100.1 <2> 设置 DNS $ sudo vim /etc/resolv.conf # Generated by NetworkManager nameserver 202.41.52.3 # 修改为实际的 DNS 服务器 注意事项: <1> 通 过 配 置 文 件 设 置 固 定 IP 的 时 候 , Ubuntu 8.10 的 Network Manager 会 出 现 一 个ifupdown(eth0)的连接,无法删除, 无法修改,每次重启,都会清空 DNS 设置。 网上有解决办法,但是不通用,实在解决不了,可以将 Network Manager 卸载。 <2> 为了省去以上麻烦,建议采用在 Network Manager 中手动配置,不必修改配置文件。
2.4 创建新的用户用于运行 MPI 安全起见,所有机器使用如下命令添加一个用户来参与运算,以下命令切换到 root 帐户下: # mkdir /mpi # useradd -N -d /mpi -s /bin/bash -u 500 mpiu # chown mpiu /mpi -R 2.5 安装必须的软件 build-essential, nfs-common, openssh-server # apt-get install build-essential nfs-common openssh-server 以下仅 master 主节点配置完成后,在普通节点配置: ${master_hostname} = 主节点的主机名 NFS 客户端配置 2.6 # mount ${master_hostname}:/mpi /mpi 2.7 自动挂载 NFS # echo "${master_hostname}:/mpi /mpi nfs defaults" >> /etc/fstab
3. Master 主节点的配置
3.1 基本节点配置 按普通节点配置 3.2 NFS Server 配置 安装 nfs server # apt-get install nfs-kernel-server # echo "/mpi *(rw, sync)" >> /etc/exports 以下切换到 mpiu 用户操作 3.3 openssh keypair 生成公-私密钥对以使节点相互可无密码访问 首先将主节点切换到*mpiu*用户,在 hostname:/mpi/.ssh/ 下面生成公钥:id_dsa.pub 以及私钥: id_dsa mpiu@master:~$ ssh-keygen -q -t dsa -N "" -f ~/.ssh/id_dsa 将公钥文件内容追加到授权文件 authorized_keys 里面, .ssh 下最初没有 authorized_keys, 如果有,则需要复制追加,如下所示: mpiu@master:~$ cat ~/mpi/.ssh/id_dsa.pub >> ~/mpi/.ssh/authorized_keys 在计算节点(假设主机名为:hostname1)上,配置公私密钥 mpiu@hostname1:~$ mkdir /.ssh 然后, 将主节点的./mpi/.ssh/路径下的所有文件, 复制到所有计算节点的./mpi/.ssh/路径下,至此,各节点之间可以实现无密码访问。 例如:mpiu@hostname1:~$ ssh hostname2 可以登录到 hostname2: mpiu@hostname2:~$ 3.4 节点统计并修改所有机器/etc/hosts 文件 统计所有节点的 hostname 和对应 IP 地址,将所有节点(包括 Master)的 hostname 写入到/mpi/mpd.hosts 文件,一行一个。 将 hostname 和 IP 对应写入到所有节点(包括 Master)的/etc/hosts 文件中,见 2.2。 3.5 mpich2 编译安装 下载 mpich2 源码包到/mpi 下,本配置方案中所使用的 mpich2 为 mpich2-1.0.8 mpiu@master:~$ tar xzf mpich2-${ver}.tar.gz mpiu@master:~$ cd mpich2-${ver}/ mpiu@master:~$ configure --prefix=/mpi/mpich2 #此处以实际的安装位置替换/mpi/mpich2 mpiu@master:~$ make mpiu@master:~$ make install 3.6 .mpd.conf mpiu@master:~$ echo "secretword=somestring" > .mpd.conf # 此处:somestring 为设置的 mpiu 帐户密码 mpiu@master:~$ chmod 600 .mpd.conf 3.7 mpiu 用户的环境变量设置 从原来的用户帐户下拷一份.bashrc .profile 到/mpi 下 mpiu@master:~$ cp /home/xxx/.bashrc /mpi mpiu@master:~$ cp /home/xxx/.profile /mpi mpiu@master:~$ chown mpiu .bashrc .profile 添加如下两行到/mpi/.bashrc 中, 注意:此处”/mpi/mpich2/bin“是 MPICH2 的实际安装路径,应该根据你的具体情况修改 export PATH = "/mpi/mpich2/bin:$PATH" export LD_LIBRARY_PATH = "/mpi/mpich2/lib:$LD_LIBRARY_PATH" 3.8 再次确认/mpi 下所有文件属主均为 mpiu mpiu@master:~$ ls -al
4.测试是否组建成功
全部在 mpiu 用户下执行 4.1 测试 mpd mpiu@master:~$ mpdcheck -l 按照提示修改,无输出结果即说明配置正确 4.2 本机测试 mpiu@hostname:~$ mpd & mpiu@hostname:~$ mpdtrace mpiu@hostname:~$ mpdallexit 返回本机 hostname 即为正常。 4.3 cluster 启动测试 $ mpdboot -n ${numberofnode) $ mpdtrace $ mpdallexit 应当返回全部的节点 hostname 4.4 测试两台机器之间的相互通讯【仅且当启动失败时】 使用第一台的主机名 hostname1 和返回的 port 号为参数,测试与 hostname2 的通讯 一台机器执行第一句: mpiu@hostname1: ~$ mpdcheck – s 另一台执行第二句: mpiu@hostname2: ~$ mpdcheck -c [host] [port] 4.5 圆周率π算例测试 (源码路径 example/cpi) $ mpdboot -n ${numberofnode) $ mpiexec -n ${numberofprocess) /mpi/mpich2-${ver}/example/cpi 4.6 HPL 算例测试 HPL 全称 High Performance Linpack 是个用于测试分布式计算环境的浮点计算性能(FLOPS)的工具. <1> 注意事项: 1. 作业运行时间尽量为夜间,在下午下班时启动作业 2. 进行以下所有操作前使用 su mpiu 切换到 mpiu 帐户下。 3. 运行作业前使用 mpdtrace 检查节点数,检查其它节点是否运行于 Linux,并协调使用时 间(包括只运行于本机的程序) 。 4. 节点不足时使用 mpdboot -n ${N} -f ~/mpd.hosts --chkup 启动足够的 cluster 节点。${N} 为节点数 ${N}<=5,注意 N<5 时除本地节点外会优先启动 mpd.hosts 中靠前的节点。运行的程序必须放置到/mpi 路径的子目录下, 注意目录权限需要 mpiu 用户可读写(chown mpiu /mpi/xxx -R)。结果也需要写回此路径。 少于 4 个进程的程序请按原方法在本机跑,效率较高。 <2> Cluster 测试算例运行方法: 假设现在在主节点上, 其主机名为:master 运行以下命令 # 切换到 mpiu 帐户 user@master:~$ su mpiu # 输入登录到 mpiu 的密码 user@master:~$ # 转到 mpiu 帐户的根目录 mpiu@master:~$ cd # 退出所有可能已经启动的 MPD 帐户 mpiu@master:~$ mpdallexit # 启动 5 个计算节点 mpiu@master:~$ mpdboot -n 5 –chkup mpiu@master:~$ cd /mpi/hpl-2.0/bin/Linux_PII_FBLAS/ 修改 HPL.dat mpiu@master:~$ mpirun -np 20 ./xhpl 2>&1 > result-cluster-`date +%s`.txt <3>关于修改 HPL.dat 说明
HPL.dat 是 HPL20core.dat 的软链接。 运行前修改第 5-6 行即可 第 5 行是总的矩阵个数 第 6 行是每个矩阵的规模 测试以下几个即可 40960 51200 81920 102400 测试完成的矩阵可以从文件中去掉
5.维护事项
5.1 添加计算节点 按照第 2 节内容配置新节点 在所有已有节点的/etc/hosts 文件中增加一行新节点的 hostname 解析 在/mpi/mpd.hosts 中添加一行新节点的 hostname 使用下面命令启动: $ mpdboot -n ${numberofnode} --chkup 5.2 删除计算节点 用 mpdtrace -l 得到对应节点${mpdid} 用 mpdexit ${mpdid}删除节点 将/mpi/mpd.hosts 中对应行删除
6. 常见问题及解答
通常为 hosts 文件出错,检查: 6.1 hosts 文件要有本机和其它节点 hostname 的解析 6.2 127.0.0.1/16 只能解析为 localhost 6.3 节点中不能有 hostname 相同的机器 6.4 运行 HPL 测试算例时,可能会提示缺少 libgfortran.so.2 库,此时要在各计算节点上安装gfortran-4.2 编译器。 ./xhpl: error while loading shared libraries: libgfortran.so.2: cannot open shared object file: No such file or directory ./xhpl: error while loading shared libraries: libgfortran.so.2: cannot open shared object file: No such file or directory ./xhpl: error while loading shared libraries: libgfortran.so.2: cannot open shared object file: No such file or directory