查看“Mpich2 集群”的源代码
来自Ubuntu中文
←
Mpich2 集群
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
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
返回
Mpich2 集群
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
登录
导航
首页
最近更改
随机页面
页面分类
帮助
搜索
编辑
编辑指南
沙盒
新闻动态
字词处理
工具
链入页面
相关更改
特殊页面
页面信息