720 likes | 874 Vues
并行机群系统安装、使用和管理. 技术支持部 张新凤 (62536383-8384) zhangxf@dawning.com.cn. 讲座主要内容提示. 并行系统安装和常用命令 并行机群系统调试 编译环境 常用编译器 编译优化 如何编译 并行环境 曙光集群管理系统 -Gridview. 并行系统安装. 系统安装启动:. 并行系统安装. 手工分区. 并行系统安装. 手工分区. 并行系统安装. 建 boot 分区. 并行系统安装. 建 swap 分区. 并行系统安装. 建根分区. 并行系统安装. 分区列表. 并行系统安装. IP 地址设置.
E N D
并行机群系统安装、使用和管理 技术支持部 张新凤(62536383-8384) zhangxf@dawning.com.cn
讲座主要内容提示 • 并行系统安装和常用命令 • 并行机群系统调试 • 编译环境 • 常用编译器 • 编译优化 • 如何编译 • 并行环境 • 曙光集群管理系统-Gridview
并行系统安装 • 系统安装启动:
并行系统安装 • 手工分区
并行系统安装 • 手工分区
并行系统安装 • 建boot分区
并行系统安装 • 建swap分区
并行系统安装 • 建根分区
并行系统安装 • 分区列表
并行系统安装 • IP地址设置
并行系统安装 • IP地址设置
并行系统安装 • 无防火墙
并行系统安装 • 包的安装
并行系统安装 • 包的安装,选择所有
并行系统安装 • 安装完后启动
并行系统安装 • 许可协议
并行系统安装 • 网络登录设置:正版网络升级使用
并行系统安装 • 注册服务说明
并行系统安装 • 添加用户
系统常用命令 • chkconfig :开启服务chkconfig –level 35 xfs on;chkconfig --list • Rcp:rsh 远程拷贝rcp nodex:/etc/hosts (本地)/etc/ rcp nodex:/etc/hosts nodey:/etc/ • Scp:ssh 远程拷贝scp nodex:/etc/hosts (本地)/etc/ • Useradd:添加用户 userdel 删除用户 useradd –u(用户ID) 1000 –g(组ID) 1000 –d(用户目录) /home/xx xx • Groupadd:添加组 groupdel 删除组 Groupadd –g(组ID) 1000 yy • Chmod:设置目录文件权限chmod a(ll)-rwx,u(ser)+rw,g(roup)+r file r(4) w(2) x(1) chmod –R(更改所有目录权限) 777 /public/test • Chown:更改目录文件所属组 chown –R(用户目录内所有文件) 用户:组 用户
系统常用命令 • dd :拷贝 dd if=/dev/sda(源盘) of=/dev/sdb(目标盘) bs=4096 • Fsck文件修复 进入单用户,执行 fsck –y /dev/sdax(坏的分区) • Rpm :安装*.rpm文件 rpm –ivh *.rpm • Tar:安装*.tar/*.tar.gz文件 tar xvf(zxvf) *.tar(*.tar.gz) • Top :查看系统CPU、内存使用率 • Fdisk:分区工具 fdisk /dev/sdb • Mkfs :做文件系统 mkfs –j(-t ext3) /dev/sdb1 • Mount:加载介质 U盘 使用 fdisk –l 看U盘盘符假设为/dev/sdb1 mount –t vfat /dev/sdb1 /mnt/floppy 若U盘盘符显示很多分区,则执行mount /dev/sdb /mnt/floppy
系统硬件安装 • RAID卡驱动安装: 在相应RAID卡驱动网站下载xx.img驱动文件 使用rawwritewin.exe软件将xx.img解压到软盘 系统使用光盘启动,出现boot时输入linux dd #boot linux dd 回车,按默认安装即可
系统硬件安装 • 网卡驱动安装 • 下载相应压缩包xx.tar.gz • 压缩包解压:tar zxvf xx.tar.gz • 进入压缩包src目录:cd xx/src • 执行make;make install • Make install完成后执行insmod xx.ko • 编辑/etc/modprobe.conf 添加 alias eth0 xx alias eth1 xx
讲座主要内容提示 • 并行系统安装和常用命令 • 并行机群系统调试 • 编译环境 • 常用编译器 • 编译优化 • 如何编译 • 并行环境 • 曙光集群管理系统-Gridview
RSH的配置 • 配置启动文件 开启rlogin rsh rexec 服务 chkconfig –-level 35 rlogin on chkconfig –-level 35 rsh on chkconfig –-level 35 rexec on
RSH的配置 • #vi /etc/hosts 把第一行的主机名删掉并加入曙光服务器的所有节点IP地址和主机名 • 如:原文件为: 127.0.0.1 node1 localhost.localdomain localhost …………………………………………………………………… • 修改后应为: 127.0.0.1 localhost 192.168.0.1 node1 192.168.0.2 node2 ………………………………………………… 192.168.0.x nodex ………………………………………………… • #vi /root/.rhosts 把机群中所有节点的主机名加入 如:node1 node2 …………… nodeX • X:为节点的数量
RSH的配置 Cat /root/.rhosts >/etc/hosts.equiv 机群中每台机器需要三个相同的文件 /etc/hosts /etc/hosts.equiv /root/.rhosts 加入 rsh rlogin rexec 到/etc/securetty文件里面 /etc/init.d/xinted restart 执行rsh nodex(x为节点号)进行测试
SSH的配置 • 在系统中执行ssh nodeX,在当前用户目录生成.ssh/目录 • 执行ssh-keygen,一路默认回车,生成id_rsa.pub文件 • cat id_rsa.pub >>authorized_keys • 将机群中每个机器生成的id_rsa.pub中内容全部追加到authorized_keys文件中,然后保证每台都有同一个authorized_keys文件,即可互相ssh不用认证(密码)
NFS服务 • NFS(network file system) • NFS 配置: 服务端server配置 1.开启nfs 服务:chkconfig –level 35 nfs on /etc/init.d/nfs start 2.编辑/etc/exports 假设将/public共享给其它节点 /public *<不限制用户>(rw,no_root_squash〈信任客户端〉,async〈先写入内存〉) 3.执行exportfs -a 执行exportfs ,可以看到 /public <world> 客户端配置: 1.建/public目录 mkdir /public 2.添加mount server:/public /public 到/etc/rc.local 3.执行/etc/rc.local 4.df 命令看mount 情况
FTP • FTP服务开启: #chkconfig --level 35 vsftpd on #/etc/init.d/vsftpd restart • 增加download用户 #useradd download #passwd download (输入用户密码) • 设置用户权限为777(权限全部放开) #chmod 777 /home/download • 客户端登陆: ftp server 用户名 download ,输入相应密码即可
讲座主要内容提示 • 并行系统安装和常用命令 • 并行机群系统调试 • 编译环境 • 常用编译器 • 编译优化 • 如何编译 • 并行环境 • 曙光集群管理系统-Gridview
GNU Compiler • GNU Compiler • 自由软件,一般操作系统都自带 • 支持C/C++、Fortran77、Java、COBAL等等许多语言 • 支持大部分硬件平台 • 高性能计算中常用的: • C/C++:GCC (GNU C/C++ Compiler) • Fortran 77:G77 • 不支持Fortran 90/ 95 • 不支持OpenMP • 是最常用的编译器,性能一般(相对于一些针对特定平台优化的编译器) • 由于缺少对Fortran 90/ 95,限制了其在高性能计算中的使用
PGI Compiler • PGI Compiler • 由Portland公司开发的编译器 • 支持AMD Opteron/Althon处理器、Intel Xeon处理器等,在Opteron上同时支持32-bit和64-bit() • 支持Linux、Windows • 支持C/C++(pgcc)、Fortran77(pgf77)、Fortran90/95(pgf90)、HPF(High Performance Fortran) • 支持多线程和OpenMP • 最新版本:10.1 • 需要购买,但可以从网上得到15天试用版本 http://www.pgroup.com
Intel Compiler • Intel Compiler • 由Intel公司针对Intel处理器开发(Xeon、Pentium) • 支持Linux、Windows • 支持C/C++(icc:Intel C/C++ Compiler)、Fortran77/90/95(ifc: Intel Fortran Compiler) • 支持多线程和OpenMP • 需要购买,但可以从网上得到30天试用版本 http://www.intel.com/software
编译优化 • 编译优化对于计算密集型程序的性能提高非常帮助 • 优化消耗CPU资源最多的那部分,即计算密集部分 • 一般采用-O2、-O3 • 可以采用SIMD指令集,eg: Intel和AMD处理器的MMX、SSE1、SSE2 • 具体编译优化的选项和编译器以及CPU相关,参见编译器手册 • 对于有些应用程序,过分的优化会导致计算结果错误
编译优化 在双路Intel Xeon平台上,采用SSE2优化和不采用SSE2优化,所获得的HPL性能。 在这种情况下,采用SSE2技术得到的性能高出近90%
编译简介 • 在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件 • 大部分编译器通过后缀来区别输入文件的类别,下面来介绍常用的一些后缀 • .c:C语言源代码文件 • .f:Fortran 77语言源代码文件 • .o:编译后的目标文件 • .a:由目标文件构成的档案库文件 • .C、.cc、.cxx:C++源代码文件 • .f90:Fortran 90语言源代码文件 • .h:程序所包含的头文件
基本的用法 cc/f77/f90 [options] [filenames] 编译器名 编译参数 编译文件 其中options就是编译器所需要的参数,filenames给出相关的文件名称
常用编译参数 • -c:只编译,不连接成为可执行文件,编译器只是由输入的.c/.f等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。 • -o output_filename:确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,就给出预设的可执行文件a.out • -g:产生符号调试工具所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。 • -O:对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。 • -O2、-O3、-O4:比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。(具体和编译器相关)
常用编译参数 • -Idirname:将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。C程序中的头文件包含两种情况: A)#include <stdio.h> B)#include “myinc.h” 其中,A类使用尖括号(< >),B类使用双引号(“”)。对于A类,预处理程序cpp在系统预设包含文件目录(如/usr/include)中搜寻相应的文件,而对于B类,cpp在当前目录中搜寻头文件,这个选项的作用是告诉cpp,如果在当前目录中没有找到需要的文件,就到指定的dirname目录中去寻找。在程序设计中,如果我们需要的这种包含文件分别分布在不同的目录中,就需要逐个使用-I选项给出搜索路径。
常用编译参数 • -Ldirname:将dirname所指出的目录加入到程序函数档案库文件的目录列表中,是在连接过程中使用的参数。在预设状态下,连接程序ld在系统的预设路径中(如/usr/lib)寻找所需要的档案库文件,这个选项告诉连接程序,首先到-L指定的目录中去寻找,然后到系统预设路径中寻找,如果函数库存放在多个目录下,就需要依次使用这个选项,给出相应的存放目录。 • -lname:在连接时,装载名字为“libname.a”的函数库,该函数库位于系统预设的目录或者由-L选项确定的目录下。例如,-lm表示连接名为“libm.a”的数学函数库。 上面我们简要介绍了编译器最常用的功能和主要参数选项,更为详尽的资料可以参看Linux系统的联机帮助。
GCC应用举例 1.gcc hello.c 生成a.out 2. gcc –o hello helo.c 生成hello 3. gcc –O –o hello hello.c 生成hello 4. gcc –O2 –o hello hello.c 生成hello 5. gcc –c hello.c 生成hello.o gcc –o hello hello.o 生成hello 6. gcc –c hello1.c 生成hello1.o gcc –c hello2.c 生成hello2.o gcc –o hello hello1.o hello2.o 生成hello 7. gcc –o test test1.o –lm –I/home/czn/include
讲座主要内容提示 • 并行系统安装和常用命令 • 并行机群系统调试 • 编译环境 • 常用编译器 • 编译优化 • 如何编译 • 并行环境 • 曙光集群管理系统-Gridview
MPI的安装 • 安装: #tar -xzvf mpich-1.2.6.tar.gz #cd mpich-1.2.6 #./configure --with-device=ch_p4 --prefix=/usr/local/mpich-1.2.6 #make #make install • 环境变量设置 #vi /etc/profile 加入下面的行 export MPI_ROOT=/usr/local/mpich-1.2.6 export PATH=$MPI_ROOT/bin:$PATH export MANPATH=$MPI_ROOT/man:$MANPATH #source /etc/profile
MPI的使用 • mpirun的基本格式为: mpirun [mpirun-options…] <progname> [options…] 其中 [mpirun-options…], 主要选项如下: -np <np> 要加载的进程个数,系统读machines.LINUX的内容 -p4pg <p4file> 按照p4file文件中的要求加载用户进程 -machinefile 按照machinesfile文件中的节点名个数加载进程 • p4file文件 该文件的格式为: 第一行:<结点名> <0> <用户要加载的进程--允许使用绝对路径> 第二行:<结点名> <1> <用户要加载的进程--允许使用绝对路径>...... 第 n行:<结点名> <1> <用户要加载的进程--允许使用绝对路径> 其中n为用户要加载进程的个数。结点名可以相同,也可以不同。且用户使用此选项后, -np选项无效。 • machines.LINUX文件和machinefile文件内容: nodeX:Y . nodeZ:W X-Z:机群节点名(系统名字)比如节点1-20 Y、W节点名对应的CPU个数
MPI使用简例 • 最简单的运行一个MPI应用程序的例子是: #mpirun -np 4 a.out, #mpirun –machinefile machinefile a.out #mpirun –p4pg ./p4file a.out 它将在并行机上加载4个用户执行程序 一般情况下最好用-p4pg选项,p4file文件包含有关进程在哪些节点上运行的信息。如你已登录到节点node1, 并用4个节点执行你的并行程序 a.out, 执行文件的全路径 /public/user1/example/a.out, • 则p4file内容如下: node1 0 /public/user1/example/a.out node2 1 /public/user1/example/a.out node3 1 /public/user1/example/a.out node4 1 /public/user1/example/a.out • 执行命令为: # mpirun -p4pg ./p4file a.out
MPI应用层优化 • OMPI • /public/openmpi-1.3-pgi/bin/mpirun -np 64 • -mca btl openib,self,sm • -mca btl_openib_max_btls 20 • -mca btl_openib_rd_num 128 -mca btl_openib_rd_low 75 • -mca btl_openib_rd_win 50 • -mca btl_openib_max_eager_rdma 32 • -mca mpool_base_use_mem_hooks 1 • -mca mpi_leave_pinned 1 • -machinefile ./ma ./vasp.pgi.7
MPI for PGI • 下载mpich.tar.gz • 解压 tar zxvf mpich.tar.gz • 进入mpich目录执行: #export CFLAGS="-fast" #export CXXFLAGS="-fast" #export FFLAGS="-fast" #export F90FLAGS="-fast“ #export LDFLAGS="-fast" #export OPTFLAGS="-fast" #export CC="pgcc" #export CXX="pgCC" #export F90="pgf90" #export FC="pgf77" #export CPP="pgCC -E“ #./configure --prefix=/usr/local/mpich-pgi #make #make install
MPI for PGI • 设置环境变量 #vi /etc/profile 加入下面的行 export MPI_ROOT=/usr/local/mpich-pgi export PATH=$MPI_ROOT/bin:$PATH export MANPATH=$MPI_ROOT/man:$MANPATH #source /etc/profile