2010-04-11 10:25:00 tengh 阅读数 1819

MS 5.0 LINUX 版小集群并行安装手记

MS 5.0 LINUX 版小集群并行安装手记
这几天重新配置了一下计算环境,顺便记录下来供同行参考,这次以安装MS5.0为例,实际上4.0,4.2,4.4的版本这几天我都配置过了,方法基本相同。
1.操作系统环境说明
客户端要求是Windows XP Professional - SP3或Vista (Business & Enterprise Editions) SP2,客户端只支持32位操作系统,也就是说装了64位的操作系统也无法用64位计算,只能运行在兼容32位模式下。
服务器端硬件现在一般是IA32或x86-64,后者较多,操作系统一般有windows、UNIX和LINUX。如果是用windows系列,可以用以下几种:
•Windows Server 2003, all editions - SP2 and R2
•Windows Server 2008, all editions - SP2
•Windows XP Professional - SP3
•Windows Vista (Business & Enterprise) - SP2
如果用UNIX系列(包含LINUX)可以用以下几种:
•x86 (32-bit)
Red Hat Enterprise Linux AS, ES, and WS - 4.7 and 4.8
SuSE™ Linux Enterprise Server 10 (SP1 and SP2)
•x86-64 (64-bit)
Red Hat Enterprise Linux AS, ES, and WS - 4.7 and 4.8
Red Hat Enterprise Linux - 5.3 and 5.4
Red Hat Enterprise Linux Desktop - 5.3 and 5.4
SuSE Linux Enterprise Server - 10 (SP1 and SP2) and 11
一般最小化安装就可以,不需要图形界面,但所有节点都要安装一些补丁,下面我以64位centos 4.8版为例,其他版本请参考README_Materials_Studio.htm中关于system_requirements_info部分:
glibc-2.3.4-2.43 (32-bit and 64-bit)
libgcc-3.4.6-11 (32-bit and 64-bit)
libstdc++-33-3.4.6-11 (32-bit and 64-bit)
compat-libstdc++-33-3.2.3-47.3 (32-bit)
hpmpi-2.03.01.00-20090402r.x86_64
这里要注意,除了HPMPI以外,其他都要同时安装32位和64位两种版本,HPMPI也要在所有参与计算的节点上安装。
2.SSH和RSH免认证设置,一般都是使用SSH免认证登录。
首先确认rsh-server包是否安装,方法参考Installing Materials Studio on a Linux cluster中的部分内容或网上搜索,很多教程:
HP-MPI使用rsh的话要保证各节点间可以免认证访问,这可以通过创建或修改/etc/hosts.equiv文件来实现,一般来说,hosts.equiv中要包含这样的内容:

localhost
节点1机器名
节点2机器名
……
节点n机器名
如果要使用SSH的话,首先要确认SSH服务是否安装,一般来说,SSH服务默认是安装的,测试方法如下:
ssh localhost
如果已经安装,你可以看提示符换行,并切换到当前用户的用户目录,如果没有出现这样的提示的话,就不能使用对称多处理器并行,需要检查SSH是否可用。
如果出现要求你输入密码的提示符,你就需要进行SSH免认证设置。当你第一次采用SSH登录时一般会看到以下提示:
The authenticity of host 'dewer2 (133.27.92.5)' can't be established.
RSA key fingerprint is cf:d6:77:c6:db:42:99:6f:11:07:f3:38:46:7b:f9:05.
Are you sure you want to continue connecting (yes/no)?
回答yes继续,片刻后,看到一个新的提示符.
配置SSH免认证登录的方法如下:
为当前安装MS网关的用户创建一个公钥对,方法如下:
$> ssh-keygen -t rsa
不要输入任何密码字符串,只回车两次就可以了。
产生的私钥放于~/.ssh目录下的id_rsa 和id_rsa.pub文件中,将id_rsa.pub文件另存为 authorized_keys2。
改变读写权限,保证目录~./ssh和里面的文件不被其他任何用户访问,否则无法实现免认证登录,操作方法如下:
切换路么到保存密钥之处
cd ~/.ssh
设置权限
chmod 600 *
设置目录访问权限
chmod 700 .
Materials Studio用户的主目录必须设为对其他用户只读权限,如果其他用户有写权限的话,SSH还要要求输入密码,操作过程如下:
切换到用户的主目录
cd ~
改变权限,命令如下:
chmod 755 .
在各节点进行同样的操作,然后将所有id_rsa.pub的内容全并到一个文件里并命名为 authorized_keys2,放到每一个节点的~/.ssh路径下。 这样应该就可以做到免认证SSH了,如果还提示要输入密码的

话再仔细检查一下上述各步是否有误。
注意,MS的安装用户一定是非root用户,否则无法实现免认证登录,也无法实现多节点并行。
3.MS安装
先将MS文件上传到主节点,可以以打包的形式上传,也可以先做成ISO,我一般是习惯先做成ISO上传,以免出现权限不够的问题,遇到权限不够的时候改变文件属性,加上执行权限就可以了。
上传后将ISO文件挂载到某一目录下,如果想挂到根目录下mnt目录下的iso目录中,命令如下:
mount -o loop -t iso9660 ms50_unix.iso /mnt/iso
在主节点上切换到MS安装用户,本人用的是msi,然后到换到/mnt/iso/UNIX下执行./Install --type cluster,或是直接./mnt/iso/UNIX/Install --type cluster
--type cluster这个参数是并行时必须的加的参数,另一个要注意的就是要用非root用户安装。
安装过程中其他基本上用默认的就可以,但有一个临时文件夹建议不要放在共享目录下,每个节点放一个tmp,这样可以减少节点间的通信量,提高性能。比如说我的安装目录是/home/msi/Accelrys/MaterialsStudio50,Accelrys是我要共享给其他节点的目录,那tmp我就放在/home/msi/下,用MS的用户创建,保证可写入。其他每个节点的用户目录下都创建一个tmp目录。安装完成后将Accelrys目录共享给其他节点。
先将Accelrys共享,编辑/etc/exports,加入下面一行内容:
/home/msi/Accelrys    *(rw,no_root_squash)
保存退出后,重启NFS服务
service NFS restart
然后到其他节点上,su root,输入密码,执行以下命令:
mount -t nfs   主节点名:/home/msi/Accelrys /home/msi/Accelrys
再将hosts.equiv文件放在/etc下和/home/msi/Accelrys/etc下.
将licenses里第一行中的机器名改为你的主节点的机器名后,文件名改为msi.lic放到/home/msi/Accelrys/LicensePack/Licenses里。
修改
/home/msi/Accelrys/MaterialsStudio50/share/data下的machines.LINUX,写上各节点的机器名:CPU数。修改/home/msi/Accelrys/MaterialsStudio50/etc/Gateway/root_default/dsd/conf里两个文件里的CPU数为你各节点CPU总数。
重新启动网关,进入/home/msi/Accelrys/MaterialsStudio50/etc/Gateway,执行
./msgateway_control_18888 start
到此,LINUX下的安装结束。
回到windows下,配置服务控制台,加入新的网关,然后测试是否可用,如有问题再回头一下排查。
写的较匆忙,可能有不准确的地方,以后慢慢再修改。

2014-11-17 15:14:01 lanmantech 阅读数 645

        LMT NEW PBS作业排队管理系统分布式并行计算

 

    LMT NEW PBS作业排队管理系统,利用集群系统来构建分布式并行环境,将一个海量的计算请求看作一个作业,提交给集群系统,管理节点将这个作业分解为多个子任务,再根据收集的节点负载信息将这些任务分别映射到各个节点上进行计算。

    一个作业在集群系统中的完整调度过程分为6个部分,分别为:提交作业,调度作业,分发作业,运行作业,返回输出和返回结果到提交节点。

基于集群系统的分布式并行计算结构如下图所示:

wKiom1Rpmx_yfgZWAAEvRcap15I902.jpg 

                    

                            (分布式并行计算结构图)

 

 

    分布式并行计算结构包含三类节点,分别为提交节点、管理节点和处理节点(即计算节点)。

    提交节点负责将作业请求提交给系统的管理节点;管理节点对集群系统的资源进行统一的监视和合理的调度,是集群各节点充分共享计算机的CPU、内存、磁盘、license等资源;处理节点是负责对各任务进行计算和处理,并将计算结果返回给管理节点。在此结构中,将处理节点分为了两个分组,每个分组有两个计算节点,每个计算节点上可以运行多个服务程序,不同分组之间的服务程序可以相同也可以不同,它们分别用来响应不同的客户请求。

    管理节点是整个并行计算结构的核心,它并不参与作业的计算,而只是对整个集群系统进行管理,具体有以下几个功能:任务管理、节点管理、通信管理、数据库管理。

wKioL1Rpm5vyNdLpAADHbo4Q0ns478.jpg 

   

                            (管理节点的功能)

 

 

    任务管理包括两部分内容,任务分解主要是将提交给集群系统的作业进行分析,根据作业的应用需求,将其分解为多个面向相同服务的子任务,结果集成是当作业处理完毕后,各个计算节点的计算结果返回到管理节点,管理节点再将这些结果汇集为一个最终结果返回给客户端;节点管理根据运行在各个节点上的守护进程收集的负载信息,选择合适的节点来处理作业,并平衡负载;一个作业的所有任务都有自己独立的输入和输出信息,但是也可以共享部分数据,这些数据存储在管理节点的数据库中。

    整个分布式并行计算系统中,每个计算节点都有一个任务队列,任务队列中存放着分配给本节点空闲时,从队列中取出任务进行处理。当某个计算节点负载较重,而另一个计算节点却空闲时,需要对节点上的任务进行合理的调度,从而平衡节点负载。对于任务的调度可以采用分级调度机制。

 

LMT NEW PBS作业管理系统充分发挥了集群系统的优点:

对于提交的作业,用户不需要指定哪个计算节点来处理,整个集群系统为用户提供单一系统映像,用户就好像在使用一台计算机一样。

可以动态地实现负载平衡,当某个节点的负载较大时,可以动态的调整任务分配,平衡负载。

集群系统能够随时监测系统各节点的运行情况,有效的利用系统的闲置资源,具有较高的资源利用率。

wKioL1Rpm7fzeVuvAAXjgYKvxJQ543.jpg

wKiom1Rpm0bR3DnIAAJlxTD8lxg679.jpg

wKioL1Rpm72DA7NMAAOg-YIY16w183.jpg

wKiom1Rpm0vBF2XXAAL1t2HWAAU597.jpg

wKioL1Rpm8LB-zW1AALJMBU15zE777.jpg

wKiom1Rpm1Kw5hXAAAQut_k60us680.jpg

wKioL1Rpm8fisiNnAAGLiMND1zk846.jpg

wKioL1Rpm8mzOxYYAAHf27b5HC0105.jpg

wKiom1Rpm1jTfGoPAAKX05q4Mmc784.jpg

wKioL1Rpm9CSG8uzAARpuR7JMwQ088.jpg

wKiom1Rpm17CFebVAALkHAD592M996.jpg

wKioL1Rpm9WjCaA3AAOol9YsoRc380.jpg

wKiom1Rpm2TBJbYWAANQ1VhOevM502.jpg

wKioL1Rpm9mSu_JnAAIBALZ5INM760.jpg

wKiom1Rpm2fCIwNgAALsGTvcnK8154.jpg


2016-02-23 13:21:03 wjciayf 阅读数 2610

实验环境

OScentos 5.10 x86_64(一台admin,两台计算节点)

主机名和和IP对应关系如下

admin: 192.168.78.11

node1:192.168.78.12

node2:192.168.78.13


软件版本:PBS

torque-3.0.6.tar.gz

maui-3.3.1.tar.gz

openmpi-1.8.1.tar.bz2

并行软件:

apoa1.tar.gz

NAMD_2.9_Linux-x86_64-multicore.tar.gz

 

一:环境配置

1.修改hosts文件,添加内容如下

192.168.78.11  admin

192.168.78.12  node1

192.168.78.13  node2


2.设置无密码访问

ssh-keygen一直按enter键即可,进入.ssh目录生成认证密码,并设置权限

[root@admin ~]#cd.ssh/

[root@admin.ssh]#ls

id_rsa id_rsa.pub

[root@admin.ssh]#cp id_rsa.pub authorized_keys

[root@admin.ssh]#chmod 600 authorized_keys

[root@admin.ssh]#ll

total 12

-rw------- 1rootroot  394 Aug 23 03:52 authorized_keys

-rw------- 1rootroot 1675 Aug 23 03:50 id_rsa

-rw-r--r-- 1rootroot  394 Aug 23 03:50 id_rsa.pub


3.然后复制.ssh目录到所有计算节点

 [root@admin~]# for i in 1 2 ; do scp -r /root/.ssh node$i:/root/ ; done

第一次要输入两台计算节点的root密码,以后都是无密码访问了


4.复制hosts文件到所有计算节点

[root@admin ~]#for i in 1 2 ; do scp /etc/hosts node$i:/etc/ ; done


5.配置nfs服务

把管理节点上的/export作为共享目录

[root@admin~]#mkdir -p /export/{apps,home,scripts,source}                  //其中apps为软件共享目录,home为共享家目录

[root@admin ~]#cat /etc/exports

/export  192.168.78.0/255.255.255.0(rw,sync)


6.启动nfs服务并检查启动是否成功

[root@admin~]#chkconfig portmap on ; /etc/init.d/portmap start

Startingportmap:                                         [ OK  ]

[root@admin~]#chkconfig nfs on ; /etc/init.d/nfs start

[root@admin~]#showmount -e localhost

Export listforlocalhost:

/export 192.168.78.0/255.255.255.0

[root@admin ~]#


7.配置autofs

[root@admin ~]#cat /etc/auto.master

/home/etc/auto.home  --timeout=1200

/share/ec/auto.share   --timeout=1200

[root@admin ~]#cat /etc/auto.share

*                                             admin:/export/&

[root@admin ~]#cat /etc/auto.home

*              -nfsvers=3            admin:/export/home/&

[root@admin ~]#


8.启动autofs服务

[root@admin~]#chkconfig autofs on ; /etc/init.d/autofs start


9.复制auto.master auto.share auto.home到所有计算节点

[root@admin ~]#for i in 1 2; do scp /etc/auto.master node$i:/etc/; done

[root@admin ~]#for i in 1 2; do scp /etc/auto.share node$i:/etc/; done

[root@admin ~]#for i in 1 2; do scp /etc/auto.home node$i:/etc/; done


10.启动autofs服务

[root@admin ~]#for i in 1 2; do ssh node$i /etc/init.d/autofs start; done

[root@admin ~]#for i in 1 2; do ssh node$i chkconfig autofs on; done


11.配置NIS服务

[root@admin ~]#yum -y install ypserv

[root@admin~]#nisdomainname wjcyf.com

[root@admin~]#echo "NISDOMAIN=wjcyf.com">>/etc/sysconfig/network

[root@admin ~]#cp /usr/share/doc/ypserv-2.19/securenets /var/yp/

[root@admin ~]#vi /var/yp/securenets

修改后内容如下

[root@admin~]#grep -v "^#" /var/yp/securenets

255.0.0.0                  127.0.0.0

255.255.255.0          192.168.78.0

[root@admin ~]#


12.启动NIS服务

[root@admin~]#/etc/init.d/ypserv start ;chkconfig ypserv on

Starting YP servers ervices:                              [ OK  ]

[root@admin~]#/etc/init.d/yppasswdd start ;chkconfig yppasswdd on

Starting YP passwd service:                               [ OK  ]

[root@admin ~]#


13.修改/etc/default/useradd文件

HOME=/home更改为HOME=/export/home


14./etc/skel目录下创建.ssh目录并在.ssh目录下建立一个名为config的文件,设置如下

[root@admin~]#mkdir /etc/skel/.ssh

[root@admin~]#touch /etc/skel/.ssh/config

[root@admin ~]#cat /etc/skel/.ssh/config

StrictHostKeyChecking     no

UserKnownHostsFile        /dev/null

[root@admin~]#chmod 600 /etc/skel/.ssh/config


15.创建用于同步用户的命令

◆在/usr/local/sbin目录下创建了一个名为sync_users的脚本,内容如下:

#!/bin/bash
YPINIT=/usr/lib64/yp/ypinit
for USER in $(sed -n '/export/p' /etc/passwd | awk -F ":" '{print$1}')
do
                  if [ -z "$USER" ]; then
                           $YPINIT -m
                  else
                           usermod -d /home/$USER $USER
                 fi
done

                 $YPINIT -m

◆赋予可执行权限

chmod 755/usr/local/sbin/sync_users

◆以后执行sync_users命令就可以同步新创建的用户


16.创建一个测试用户wjc,并同步该用户

[root@admin~]#useradd wjc

[root@admin~]#echo wjc | passwd --stdin wjc

[root@admin~]#sync_users


注:以后每添加一个新用户,都需要执行sync_users命令

 

17. 配置NIS客户端,在所有计算节点上安装ypbind,RHEL默认已经安装

[root@admin~]# for i in 1 2; do ssh node$i auth-config --enable-nis --nisdomain=wjcyf.com \

--nisserver=admin --update; done

18.验证NIS服务配置是否正确

[root@node1~]#ypcat passwd

wjc:$1$tsPKQvPP$Kwom9qG/DNR1w/Lq./cQV.:500:500::/home/wjc:/bin/bash

[root@admin ~]#for i in 1 2; do ssh node$i id wjc; done
uid=500(wjc) gid=500(wjc) groups=500(wjc)
uid=500(wjc) gid=500(wjc) groups=500(wjc)

有上面输出可知,NIS服务配置正确

 

二:安装和配置torque(管理节点)

1.首先安装openmpi

[root@adminparallel]#tar xjvf openmpi-1.8.1.tar.bz2 -C /usr/local/src/

[root@adminparallel]#cd /usr/local/src/openmpi-1.8.1/

[root@adminopenmpi-1.8.1]#./configure --prefix=/share/apps/openmpi

[root@adminopenmpi-1.8.1]#make

[root@adminopenmpi-1.8.1]#make install

[root@adminopenmpi-1.8.1]#cp -r examples/ /share/apps/openmpi


2.添加环境变量,在/share/scripts目录先建立了一个Path.sh,以后也方便计算节点添加环境变量

[root@adminscripts]#pwd

/share/scripts

[root@adminscripts]#cat Path.sh

#!/bin/bash

grep openmpi /etc/bashrc || cat >>/etc/bashrc <<EOF

export PATH=/share/apps/openmpi/bin:\$PATH

export LD_LIBRARY_PATH=/share/apps/openmpi/lib:\$LD_LIBRARY_PATH

EOF

[root@adminscripts]#

[root@adminscripts]#sh Path.sh

[root@adminscripts]#source /etc/bashrc


3.测试openmpi是否安装成功

[root@adminscripts]#which mpirun

/share/apps/openmpi/bin/mpirun

[root@adminscriptss]#which mpiexec

/share/apps/openmpi/bin/mpiexec


4.安装torque

[root@adminparallel]#tar xzvf torque-3.0.6.tar.gz -C /share/source/

[root@adminparallel]#cd /share/source/torque-3.0.6/

[root@admintorque-3.0.6]#./configure  --enable-syslog --enable-nvidia-gpus --enable-cpuset --disable-gui --with-rcp=scp --with-sendmail

[root@admintorque-3.0.6]#make

[root@admintorque-3.0.6]#make install

[root@admintorque-3.0.6]#pwd

/share/source/torque-3.0.6

[root@admintorque-3.0.6]#cat install.sh

cd /share/source/torque-3.0.6

make install

[root@admintorque-3.0.6]#


5.初始化torque创建默认队列

[root@admintorque-3.0.6]#./torque.setup root

initializingTORQUE(admin: root@admin)

PBS_Server admin:Create mode and server database exists,

do you wishtocontinue y/(n)?y

root    26351    1  0 06:44?        00:00:00 pbs_server -t create

Max openservers:10239

Max openservers:10239

[root@admintorque-3.0.6]#


6.查看创建的默认队列batch

[root@admintorque-3.0.6]#qmgr -c "p s"

#

# Create queues and set their attributes.

#

#

# Create and define queue batch

#

create queue batch

set queue batch queue_type = Execution

set queue batch resources_default.nodes = 1

set queue batch resources_default.walltime= 01:00:00

set queue batch enabled = True

set queue batch started = True

#

# Set server attributes.

#

set server scheduling = True

set server acl_hosts = admin

set server admins= root@admin

set server operators = root@admin

set server default_queue = batch

set server log_events = 511

set server mail_from = adm

set server scheduler_iteration = 600

set server node_check_rate = 150

set server tcp_timeout = 6

set server mom_job_sync = True

set server keep_completed = 300

[root@admintorque-3.0.6]#


7.更改队列batch部分属性,以满足实际需求

[root@admintorque-3.0.6]#qmgr -c "s q batch resources_default.walltime=24:00:00"

[root@admintorque-3.0.6]#qmgr -c "s s query_other_jobs=true"


8.建立mom配置文件,用于复制到所有计算节点

[root@adminmom_priv]#pwd

/var/spool/torque/mom_priv

[root@adminmom_priv]#cat config

$pbsserver     admin

$logevent      225


9.创建节点信息文件

[root@adminserver_priv]#pwd

/var/spool/torque/server_priv

[root@adminserver_priv]#cat nodes

node1 

node2

[root@adminserver_priv]#


10.查看目前节点信息均为down状态

[root@adminserver_priv]#pbsnodes -a

node1

    state = down

    np = 1

    ntype = cluster

    mom_service_port = 15002

    mom_admin_port = 15003

    gpus = 0

 

node2

    state = down

    np = 1

    ntype = cluster

    mom_service_port = 15002

    mom_admin_port = 15003

    gpus = 0

 [root@adminserver_priv]#


11.复制pbs_server启动脚本,并设置开机自动启动

[root@admintorque-3.0.6]#pwd

/share/apps/torque-3.0.6

[root@admintorque-3.0.6]#cp contrib/init.d/pbs_server /etc/init.d/

[root@admintorque-3.0.6]#chmod 755 /etc/init.d/pbs_server

[root@admintorque-3.0.6]#chkconfig pbs_server on


12.复制pbs_mom脚本,方便复制到计算节点

[root@admintorque-3.0.6]#cp contrib/init.d/pbs_mom /etc/init.d/

 

13.安装maui

[root@adminparallel]#tar xzvf maui-3.3.1.tar.gz -C /usr/local/src/

[root@admin ~]#cd /usr/local/src/maui-3.3.1/

[root@adminmaui-3.3.1]#./configure --prefix=/usr/local/maui --with-pbs=/usr/local

[root@adminmaui-3.3.1]#make

[root@adminmaui-3.3.1]#make install


14.复制maui启动脚本,设置正确路径,并设置为开机启动

[root@adminmaui-3.3.1]#cp etc/maui.d /etc/init.d/mauid

[root@adminmaui-3.3.1]#vi /etc/init.d/mauid

更改MAUI_PREFIX=/opt/mauiMAUI_PREFIX=/usr/local/maui

[root@adminmaui-3.3.1]#chmod 755 /etc/init.d/mauid

[root@adminmaui-3.3.1]#chkconfig mauid on


15.启动maui调度服务

[root@adminmaui-3.3.1]#/etc/init.d/mauid start

StartingMAUIScheduler:                                  [ OK  ]

[root@adminmaui-3.3.1]#


16.添加maui命令环境变量

[root@adminmaui-3.3.1]#vi /etc/bashrc

export PATH=/share/apps/openmpi/bin:/usr/local/maui/bin:$PATH

[root@adminmaui-3.3.1]#source /etc/bashrc


17.安装并行软件到共享目录

[root@adminnamd]#tar xzvf NAMD_2.9_Linux-x86_64-multicore.tar.gz -C /share/apps/

[root@adminnamd]#tar xzvf apoa1.tar.gz -C /share/apps/

[root@adminapps]#pwd

/share/apps

[root@adminapps]#mv NAMD_2.9_Linux-x86_64-multicore/ namd


18.添加namd命令环境变量,同时也添加到Path.sh方便计算节点添加环境变量

[root@adminmaui-3.3.1]#vi /etc/bashrc

export PATH=/share/apps/openmpi/bin:/usr/local/maui/bin:/share/apps/namd:$PATH

[root@adminmaui-3.3.1]#source /etc/bashrc

[root@adminscripts]#which namd2

/share/apps/namd/namd2

[root@adminscripts]#cat Path.sh

#!/bin/bash

grep openmpi /etc/bashrc || cat >>/etc/bashrc <<EOF

export PATH=/share/apps/openmpi/bin:/share/apps/namd:\$PATH

EOF

[root@adminscripts]#

至此管理端配置完成

 

三:计算节点配置torque

1.计算节点安装torque

[root@admin ~]#for i in 1 2; do ssh node$i sh /share/source/torque-3.0.6/install.sh; done


2.复制mom配置文件到计算节点

[root@admin ~]#for i in 1 2; do scp /var/spool/torque/mom_priv/confignode$i:/var/spool/torque/mom_priv/; done


3.复制mom启动脚本到计算节点,启动pbs_mom服务,并设置开机启动

[root@admin ~]#for i in 1 2; do scp /etc/init.d/pbs_mom node$i:/etc/init.d/; done

[root@admin ~]#for i in 1 2; do ssh node$i /etc/init.d/pbs_mom start; done

StartingTORQUEMom: [  OK  ]

StartingTORQUEMom: [  OK  ]

[root@admin ~]#for i in 1 2; do ssh node$i chkconfig pbs_mom on; done


4.设置环境变量

[root@admin ~]#for i in 1 2; do ssh node$i sh /share/scripts/Path.sh; done


5.测试环境变量设置是否正确

[root@admin ~]#for i in 1 2; do ssh node$i which mpirun; done

/share/apps/openmpi/bin/mpirun

/share/apps/openmpi/bin/mpirun

[root@admin ~]#for i in 1 2; do ssh node$i which namd2; done

/share/apps/namd/namd2

/share/apps/namd/namd2

[root@admin ~]#


6.此时再观察计算节点状态,已经变成free了,即可以提交任务到计算节点了

[root@adminapps]#pbsnodes -a

node1

    state = free

    np = 1

    ntype = cluster

    status=rectime=1408751492,varattr=,jobs=,state=free,netload=12996103,gres=,loadave=0.01,ncpus=1,physmem=1024932kb,availmem=2082428kb,totmem=2165536kb,idletime=0,nusers=0,nsessions=0,uname=Linuxnode12.6.18-371.el5 #1 SMP Tue Oct 1 08:35:08 EDT 2013 x86_64,opsys=linux

    mom_service_port = 15002

    mom_admin_port = 15003

    gpus = 0

 

node2

    state = free

    np = 1

    ntype = cluster

    status=rectime=1408751482,varattr=,jobs=,state=free,netload=12983275,gres=,loadave=0.03,ncpus=1,physmem=1024932kb,availmem=2082444kb,totmem=2165536kb,idletime=0,nusers=0,nsessions=0,uname=Linuxnode22.6.18-371.el5 #1 SMP Tue Oct 1 08:35:08 EDT 2013 x86_64,opsys=linux

    mom_service_port = 15002

    mom_admin_port = 15003

    gpus = 0

 

[root@adminapps]#

 

 

四:验证并行集群是否搭建成功

1.在管理节点上以建立的wjc用户登录,首先设置节点间无密码互访,操作和root用户一样,只是不需要复制.ssh目录


2.复制namd用软件apoa1到当前目录下

[wjc@admin ~]$cp -r /share/apps/apoa1/ ./


3.创建PBS脚本

[wjc@admin~]$touch test.pbs

脚本内容如下

[wjc@admin ~]$cat test.pbs

#!/bin/bash

#PBS -N wjcjob1

#PBS -j oe

#PBS -l nodes=2:ppn=1

NP=`cat $PBS_NODEFILE | wc -l`

echo "This job's id is $PBS_JOBID@$PBS_QUEUE"

echo "This job's workdir is $PBS_O_WORKDIR"

echo "This job is running on following nodes:"

cat $PBS_NODEFILE

echo "This job begins at:" `date`

echo

echo

cd $PBS_O_WORKDIR

mpirun -np $NP-machinefile $PBS_NODEFILE namd2 apoa1/apoa1.namd

echo

echo

echo "This job stops at:" `date`

[wjc@admin ~]$


4.提交任务

[wjc@admin ~]$qsub test.pbs

5.查看作业运行状态

[wjc@admin~]$qstat

Jobid                   Name            User            Time UseS Queue

-------------------------------------------------------- -------- - -----

1.admin                 wjcjob1          wjc                   0 R batch         

[wjc@admin~]$qstat -n

 

admin:

                                                                        Req'd Req'd   Elap

JobID              Username   Queue   Jobname         SessID NDS   TSK   Memory Time  S Time

--------------------------------------- ---------------- ------ ----- ------ ------ ----- - -----

1.admin           wjc         batch   wjcjob1           6676     2     2   --  24:00 R  --

  node2/0+node1/0

[wjc@admin ~]$

由上面可知作业已经在node1node2上运行了

至此,linux并行集群搭建完成

2018-05-27 21:14:10 ZuoShifan 阅读数 2533

本文从本人简书博客同步过来

上一篇中我们非常简单地介绍了在 C 语言中嵌入 mpi4py 程序的方法。

前面我们所给出的各个例程一般都是在单台计算机上直接使用 mpiexec 或 mpirun 执行的,但是在实际应用中,对规模比较大的高性能计算任务,一般会提交到集群或超级计算机平台上进行计算。集群系统具有低成本、高性能的特性,提供了强大的批处理和并行计算能力,代表了高性能计算机发展的新方向。在集群或者超级计算机平台上,一般不能随意地直接以 mpiexec 或 mpirun 运行我们的并行计算程序,而必须通过其上提供的作业管理系统来提交计算任务。作为集群系统软件的重要组成部分,集群作业管理系统可以根据用户的需求,统一管理和调度集群的软硬件资源,保证用户作业公平合理地共享集群资源,提高系统利用率和吞吐率。下面我们将简要地介绍几个常用的集群作业管理系统:PBS,LSF 和 SLURM。下面我们首先简要介绍 PBS 作业管理系统。

PBS 简介

PBS (Protable Batch System) 作业管理系统会根据一个集群上的可用计算节点的计算资源管理和调度所有计算作业(无论是批处理作业还是交互式作业)。

PBS 常用命令

作业控制

  • qsub:提交作业
  • qdel:取消作业
  • qsig:给作业发送信号
  • qhold:挂起作业
  • qrls:释放挂起的作业
  • qrerun:重新运行作业
  • qmove:将作业移动到另一个队列
  • qalter: 更改作业资源属性

作业监测

  • qstat:显示作业状态
  • showq: 查看所有作业

节点状态

  • pbsnodes:列出集群中所有节点的状态和属性

PBS 作业属性

可以用两种方式设置 PBS 作业属性:

  • 通过命令行参数传递给 qsub 命令;
  • 在 PBS 脚本中以 #PBS 方式指定。

下表列出常用的 PBS 作业属性

属性 取值 说明
-l 以逗号分隔的资源列表 设定作业所需资源
-N 作业名称 设定作业名称
-o 文件路径 设定作业的标准输出文件路径
-e 文件路径 设定作业的标准错误文件路径
-p -1024 到 +1023 之间的整数 设定作业优先级,越大优先级越高
-q 队列名称 设定作业队列名称

比较常用的作业资源如下:

资源 取值 说明
nodes 节点资源构型 设定作业所需计算节点资源
walltime hh:mm:ss 设定作业所需的最大 wallclock 时间
cput hh:mm:ss 设定作业所需的最大 CPU 时间
mem 正整数,后面可跟 b,kb,mb,gb 设定作业所需的最大内存
ncpus 正整数 设定作业所需的 CPU 数目

可以用以下方法设定节点资源构型:

  1. 设定所需节点数:

    nodes=<num nodes>

  2. 设定所需节点数和每个节点上使用的处理器数目:

    nodes=<num nodes>:ppn=<num procs per node>

  3. 设定所用的节点:

    nodes=<list of node names separated by ‘+’>

PBS 环境变量

下表列出常用的 PBS 环境变量:

环境变量 说明
PBS_ENVIRONMENT 批处理作业为 PBS_BATCH,交互式作业为 PBS_INTERACTIVE
PBS_JOBID PBS 系统给作业分配的标识号
PBS_JOBNAME 用户指定的作业名称
PBS_NODEFILE 包含作业所用计算节点的文件名
PBS_QUEUE 作业所执行的队列名称
PBS_O_HOME 执行 qsub 命令的 HOME 环境变量值
PBS_O_PATH 执行 qsub 命令的 PATH 环境变量值
PBS_O_SHELL 执行 qsub 命令的 SHELL 环境变量值
PBS_O_HOST 执行 qsub 命令节点名称
PBS_O_QUEUE 提交的作业的最初队列名称
PBS_O_WORKDIR 执行 qsub 命令所在的绝对路径

提交批处理作业

用以下命令形式提交批处理作业:

$ qsub [options] <control script>

作业提交后一般会先排队等待,PBS 系统会根据作业的优先级和可用的计算资源来调度和执行作业。

PBS 脚本本质上是一个 Linux shell 脚本,在 PBS 脚本中可以用一种特殊形式的注释(#PBS)作为 PBS 指令以设定作业属性。下面是一个 PBS 脚本示例:

#!/bin/bash

# file: example.pbs

### set job name
#PBS -N example-job
### set output files
#PBS -o example.stdout
#PBS -e example.stderr
### set queue name
#PBS -q example-queue
### set number of nodes
#PBS -l nodes=2:ppn=4

# enter job's working directory
cd $PBS_O_WORKDIR

# get the number of processors
NP=`cat $PBS_NODEFILE | wc -l`

# run an example mpi4py job
mpirun -np $NP -machinefile $PBS_NODEFILE python example_mpi4py.py

用以下命令提交该作业:

$ qsub example.pbs

取消或停止作业

要取消或停止一个作业,需要得到该作业的作业标识号 ,可以通过 qstat 命令获得。

取消排队等待的作业

取消一个正在排队等待的作业,可用以下命令:

$ qdel <job ID >

停止正在运行的作业

要停止一个正在运行的作业,可用向其发送 KILL 信号:

$ qsig -s KILL <job ID>

交互式作业

交互式的计算作业通过类似于下面的命令使用:

$ qsub -I [options]

例如要求 2 台计算节点,运行在 example-queue 队列上的交互式作业,执行如下命令:

$ qsub -I -l nodes=2 -q example-queue

执行完以上命令,等 PBS 系统分配好资源后会进入所分配的第一台计算节点,可在其命令终端上执行交互式的计算任务,如要退出交互作业,可在终端输入 exit 命令,或使用按键 Ctrl+D。

以上简要介绍了 PBS 作业管理系统,在下一篇中我们将介绍 LSF 作业管理系统。

2011-10-18 23:55:46 fox000002 阅读数 3924

现在的计算平台有很多是 Linux Cluster,常用的作业管理系统采用 PBS。如果要采用 FLUENT 进行计算就需要解决在 Text Mode 下调用 FLUENT 进行求解的问题,而且多数时候

需要执行并行版本的 FLUENT。


Linux 调用 FLUENT 的文本界面其实很简单,比如


fluent 3d -g



出现了 FLUENT 的 console,这样就能输入命令并执行了。


不想手工输入命令的话,写一个 journal 或 scheme 脚本文件,让 FLUENT 启动后自动执行。


fluent 3d -g -i script.scm


最好加上 I/O 重定向。


fluent 3d -g -i script.scm > out.log


远程连接时后台执行就比较重要了。


fluent 3d -g -i script.scm > out.log &


以上是之前在 PC 上常用的模式,还会利用 screen 之类的进行监视。


那么并行版本又如何呢?


本地并行的话,基本上就是


fluent 3d -t8 -g -i script.scm > out.log &


利用多个节点的话,需要做些处理


fluent 3d -pethernet -cnf=myhosts -t8 -ssh  -g -i script.scm > out.log &


多了几个选项,其中


-pethernet 表示各节点利用局域网连接进行通信,发现用 default 选项的话会报错的,至少 fluent12 是这个样子。


-cnf=myhosts 表示运行的节点信息


-ssh 表示各节点采用 ssh 进行登录,默认的话采用 rsh,如果没有启用 rsh 服务的话就崩溃了。


到这里基本可以了。


如果要在 PBS 中进行调用,启动命令可以不加 i/O 重定向和后台运行的符号


fluent 3d -pethernet -cnf=myhosts -t8 -ssh  -g -i script.scm

由于对 fluent scheme 的写法颇有些研究,一切看起来就简单多了。

没有更多推荐了,返回首页