Download presentation
Presentation is loading. Please wait.
Published by差勘 郎 Modified 7年之前
1
辅导老师:隋秀峰 邮箱:sxf@mail.ustc.edu.cn 2008年10月22日
Lab3:MPI Programming 辅导老师:隋秀峰 2008年10月22日
2
内容 PC机群的搭建 机群系统概述 硬件的选择与安装 软件的选择与安装 机群系统性能评测
3
机群系统概述 什么是机群? 机群是一组独立的计算机(节点)的集合体,节点间通过高性能的互连网络连接;各节点除了可以作为一个单一的计算资源供交互式用户使用外,还可以协同工作并表现为一个单一的、集中的计算资源供并行计算任务使用。 一种造价低廉、易于构筑、并且具有较好可扩放性的并行机体系结构。
4
机群迅速发展的原因 作为机群节点的工作站系统的处理性能越来越强大,更快的处理器和更高效的多CPU机器将大量进入市场;
随着局域网上新的网络技术和新的通信协议的引入,机群节点间的通信能获得更高的带宽和较小的延迟; 机群系统比传统的并行计算机更易于融合到已有的网络系统中去; 机群上的开发工具更成熟,而传统的并行计算机上缺乏一个统一的标准; 机群价格便宜并且易于构建; 机群的可扩放性良好,节点的性能也很容易通过增加内存或改善处理器性能获得提高。
5
机群的重要特征 机群的各节点都是一个完整的系统,节点可以是工作站,也可以是PC机或SMP机器;
互连网络通常使用商品化网络,如以太网、FDDI、光通道等,部分商用机群也采用专用网络互连; 网络接口与节点的I/O总线松耦合相连; 各节点有一个本地磁盘; 各节点有自己的完整的操作系统。
6
机群的分类 根据不同的标准,可有多种分类方式 针对机群系统的使用目的可将其分为三类: 高性能计算机群 负载均衡机群 高可用性机群
7
Berkeley NOW Beowulf LAMP 典型机群系统 COTS(Commodity off the shelf)
SMP-cluster
8
硬件的选择与安装 节点构建 系统构建 机群系统示例 处理器、内存、总线、 磁盘与I/O 网络适配卡、交换机 天体物理中心64个节点PC机群
1个服务节点(兼作计算节点)和63个计算节点
9
集群系统示例 服务节点配置: 计算节点配置: CPU:Pentium Ⅳ 2.0G(512KB全速二级缓存)
内存:1G(2512M)Rambus 硬盘:80GB IDE 主板:ASUS P4T Socket 423 网卡:3com 905 –TX(两个) 显卡、显示器、键盘、鼠标、光驱、软驱:略 计算节点配置: CPU:Pentium Ⅳ 1.5G(512KB全速二级缓存) 内存:512MB(2256M) Rambus 硬盘:40GB IDE 网卡:3com 905 –TX
10
集群系统示例(续) 交换设备由2个3com 3c16980和1个3com 3c16985的交换机通过一个matrix module堆叠而成,并安装了一个千兆光纤模块,以备服务节点连接内部机群的网卡升级为千兆网卡
11
软件的选择与安装 OS的选择 SSI的构建 编程环境的选择
12
OS的选择 Windows UNIX Linux 机群系统示例 Redhat 7.2版本(内核2.4.10)
13
SSI的构建 单一系统映像SSI(Single System Image)
单一系统:尽管系统中有多个处理器,用户仍然把整个机群视为一个单一的系统来使用 单一控制:逻辑上,最终用户或系统用户使用的服务都来自只有唯一接口的同一个地方 对称性:用户可以从任一个节点上获得机群服务,也就是说,对于所有节点和所有用户,除了那些对一般访问权限作保护的服务和功能外,所有机群服务和功能都是对称的 位置透明:用户不用了解真正执行服务的物理设备的位置
14
SSI提供的三种服务 单一登录(Single Sign On) 单一文件管理(Single File Hierarchy)
单一作业管理系统(Single Job Management System)
15
两种方法 单一登录(Single Sign On) 网络信息系统NIS(Network Information System)
Shell脚本(Shell Script)
16
网络信息系统NIS 服务器端: ①设置NIS域名: 在文件/etc/sysconfig/network中添加如下一行:
NISDOMAIN=PCCluster ②初始化数据库: 运行/usr/lib/yp目录下的ypinit命令初始化系统信息数据库: [node0]# /usr/lib/ypinit –m ③启动守护进程: 在/etc/rc.d/rc3.d目录下增加两个链接,以便系统在启动时自动载入守护进程: [node0]# cd /etc/rc.d/rc3.d [node0]# ln –s ../init.d/ypserv S61ypserv [node0]# ln –s ../init.d/yppasswdd S61yppasswd
17
网络信息系统NIS(续) 客户端: 在客户节点上(node1到node63)运行setup命令,然后在出现的对话框中选择“Authentication Configuration”,选择NIS,填入域名PCCluster以及服务器名node0;并在文件/etc/passwd中加入以下一行: +::0 :0 :::
18
Shell脚本 NIS:设置方便,但是采用客户/服务器模式,在应用启动的时有可能产生瓶颈。
例如,对用户信息的管理,可以创建一个名为cluster_user的脚本,负责在其所在结点上创建新的用户,而后再将相关的配置文件(/etc/passwd、/etc/groups)复制到机群系统中所有其它节点,这里要注意的一点是用户的主目录应该建立在全局共享的分区中(NFS共享)。对其它的一些信息,比如/etc/hosts和/etc/host.equiv等文件可同样处理。
19
单一文件管理 NFS是一种Unix/Linux之间通过网络共享文件的标准方式。使用NFS,就能够透明的安装和访问网络上远程主机的文件系统,将其安装(mount)在本地的文件系统中,类似于Windows下的映射驱动器。 示例机群:节点node0是服务器,把目录/home和/Cluster进行共享;节点node1到node63是客户端,把服务器的/home和/Cluster安装到自己的文件系统当中。
20
单一文件管理(续) 服务器端: (1)启动服务进程:NFS服务器需要使用守护进程nfsd和mountd,通过在目录/etc/rc.d/rc3.d之下增加链接可以使系统在启动时自动载入这两个进程: [node0]# cd /etc/rc.d/rc3.d [node0]# ln –s ../init.d/nfs S60nfs
21
单一文件管理(续) (2) 设置共享目录:首先,在根目录下建立目录/home和/Cluster。
[node0]# mkdir home [node0]# mkdir Cluster 然后,在文件/etc/exports当中增加以下几行。 /home node1 (rw) /Cluster node1 (rw) …… /home node63 (rw) /Cluster node63 (rw) 这几行的意思是将服务器上的/home和/Cluster目录进行共享,设置节点node1到node63可以访问,rw表示允许读和写(缺省为只读)。这里要注意的一点是所有用到的主机名必须在文件/etc/hosts中给出ip地址,例如: node1
22
单一文件管理(续) 客户端: 在文件/etc/fstab当中加入两行:
node0:/home /home nfs node0:/Cluster /Cluster nfs 当然,相应的要在文件/etc/hosts中给出主机node0的ip地址: node0 这样就完成了NFS在机群系统中的设置,以后所有用户的主目录都可以设置在/home中,所有可以共享安装的软件可以放在/Cluster中。
23
单一作业管理系统 用户可以透明地从任一节点提交一项作业,作业可以调度为以批处理、交互或并行的模式运行 用户服务器、任务调度器、资源管理器
典型的作业管理系统 PBS(Portable Batch System) LSF(Load Sharing Facility) Condor JOSS
24
编程环境的选择 流行的编程软件 MPICH的安装及配置 MPI、OpenMP、HPF
示例机群中构建了单一映象系统。64个节点(node0到node63)中node0共享/Cluster目录给所有其它节点。这样只需将MPICH安装在这个共享目录中即可,即整个系统中只需安装一次。
25
MPICH的安装 ①MPICH是一个开放源码的软件,所以可以从网上免费获取它的源代码。用户可以直接从MPICH的主页下载最新的软件包mpich.tar.gz,然后将它置于/Cluster目录下。 ②使用如下命令解压缩源代码: [node0]# tar –zxf mpich.tar.gz 解压缩后会生成一个名字为mpich-1.2.4的目录(目前版本为2.0+)。
26
MPICH的安装(续) ③进入该目录,并执行位于该目录下configure脚本,为下一步编译源代码进行准备。该配置脚本可以接受很多的参数(Options),通过运行命令如下: [node0]# ./configure –help 可以获取更详细的参数信息。这里只列举几个最常用的参数: -prefix:指定mpich的安装目录。 --with-device:指明所使用的通信系统类型。一般情况下我们使用ch_p4,它表示通常的TCP/IP通信系统。 --with-arch:指明所使用的操作系统的类型。 运行如下命令完成前期配置: [node0]# ./configure --prefix=/Cluster/MPICH \ --with-device=ch_p4 \ --with-arch=LINUX
27
MPICH的安装(续) ④最后,先通过运行su命令转变到root用户身份,再运行如下命令完成MPICH的编译和安装:
[node0]# make [node0]# make install 至此就完成了机群系统中MPICH的安装。
28
MPICH的配置 ①第一步要进行rsh的配置,使系统中不同节点之间的rsh操作不需要密码的输入。这首先需要在每个节点的/etc/hosts文件中写入node0到node63的(主机名,IP地址)对;然后在/etc/host.equiv中写入所有的机群节点主机名,下面是node0上的这两个文件内容: [node0]# cat /etc/hosts node0 node1 node2 …… node63 [node0]# cat /etc/host.equiv node0 node1 node2 node63
29
MPICH的配置(续) ②第二步要更改MPICH的节点列表文件,该文件位于/Cluster/MPICH/share目录下。这里我们使用的arch参数是LINUX,相应的列表文件为machines.LINIUX。在这个文件中要写明机群系统中所有的节点的主机名。该文件以一定的方式指明了实际执行MPI程序时进程是如何分配到各个节点上的。 以下是示例机群中的machines文件: [node0]# cat /Cluster/MPICH/share/machines.LINUX node0 node1 node2 …… node63
30
MPICH的运行 MPICH中最常用的两个命令就是mpicc和mpirun。
mpicc是一个MPI编译器,它负责将源程序编译为可执行文件,它最常用的参数是-o用来指明输出文件。 [node0]# cd /Cluster/MPICH/examples [node0]# ../bin/mpicc cpi.c –o cpinew mpirun则是用来执行一个编译好的MPI程序。下面是它最常用的一些参数: -np <np>:用来指明所要生成的进程数。 -machinefile <machinefile name>:缺省时使用的machines文件是前面介绍过的位于share目录下的machines.LINUX;但通过这个参数可以指定一个临时的machines文件,从而使用不同的进程指派方式。 一个标准的mpirun命令如下: [node0]# ../bin/mpirun –np 10 cpinew – machinefile ./new_machine_file
31
MPICH的运行(续) [node0]# ./mpirun –np 10 cpi Process 1 on node1
pi is approximately , Error is wall clock time =
32
机群系统性能评测 基准测试程序(Benchmark) 性能分析工具
LINPACK、LAPACK、BLAS、BLACS、Livermore Loops、Dhrystone、Whetstone、NAS、SPEC、Sim LinPACK:Top500的标准测试程序 性能分析工具 监视程序的执行、产生性能数据、甚至能够作初步的分析,以帮助你更为容易的确定性能瓶颈的所在,从而找到改善的方案 DEEP 、MPE和Jumpshot 、Pablo、Paradyn
33
实验平台 曙光4000A超级计算机 IP:210.45.114.190 用户名:guest 密码:guest
路径:multicore/SA* 登陆工具:ssh、putty 编程环境:MPICH2
34
谢谢!
Similar presentations