如何与多个用户环境中运行的PBS

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何与多个用户环境中运行的PBS相关的知识,希望对你有一定的参考价值。

参考技术A 如何在集群环境中使用fluent计算——fluent并行计算初步(超小白入门,老鸟略过:)
作者:jinsw
现在国内的开放式机群环境越来越多,许多都部署了fluent(大好事),不过还是有许多人不太清楚如何利用这些有用的资源。这里结合我所在单位的情况做一个简单的介绍,其他的机群环境大同小异。
1、 什么是机群?有什么特点?
机群又叫集群,当然就是许多的计算机(废话),因为机器太多了,又需要协同工作,所以需要按照一定的方式来管理,管理的结构形式叫做拓扑(这个不用管)。机群使用的电脑是刀片(又薄又长的机箱)形式(为了便于插入机柜),一个刀片一般称为一个节点。
一般而言,机群会分为三种节点:管理节点(若干台),编译节点(若干台),计算节点(其余全部)。这三种节点的配置略有不同(废话),管理节点主要用来存储使用机群的用户的信息,如名字,密码,可以使用机器数的权限,用户状态等等;编译节点一般用来预查程序故障,用户的程序先在这里试运行,查看是否与系统兼容等;计算节点用来直接计算其他节点提供来的程序。
就配置而言,管理节点和编译节点一般相同,会部署软件环境;计算节点只会部署简单的必要运行文件。计算机点之间会采用高速交换机,速度可达几十GB/s,如IB等;计算节点与编译、登陆节点之间采用普通的万兆交换机。
2、 如何使用机群?
机群中一般采用linux操作系统来操作(多用户情况下效率高),用户会通过远程登录软件(如xshell)来登录到登陆节点进行个人的操作(一般会通过VPN网络加密数据传输)。
Linux集群将程序任务分解发送到计算节点上时,是通过LSF作业调度系统(也有其他的,如PBS等)来实现的,这个系统的作用是使整个机群负载均衡,便于管理,所以我们使用fluent也要通过这个系统。在成熟的集群中,用户登录之后,默认便可以使用作业调度系统了。使用时,除了常见的linux命令以外,调度系统也有一些简单的命令,这个一般会有手册介绍,常用的就3、5个,很好记。
3、 如何在集群中使用fluent?
因为fluent是成熟的封装好的商业软件,所以用户直接使用命令调用即可。
但是因为大部分的linux下的远程登录是不支持图形界面的,所以我们看不到在windows下的熟悉界面,无法进行操作。其实,fluent最早也是linux下的软件,它提供了一种jou脚本来操作各种命令(即帮助中的TUI命令),我们在windows的图形界面中,也可以在控制台窗口中查看如何使用。这样,我们在启动fluent软件时,指定它的jou执行脚本即可使软件按照我们的意图来进行操作了。如果在帮助中找太慢,可以在windows的fluent图形界面下,右下角控制台中用回车键显示文字命令,q键返回。
4、 实例
这里给出一个在LSF调度系统中使用fluent的实例:
首先,使用bsub命令提交LSF脚本(名字为fluent.lsf),在命令窗口中键入:bsub fluent.lsf即可。
脚本内容如下:
#!/bin/sh (这句话是说此脚本使用/bin/sh来解释执行,小白可以略过)
APP_NAME=fluent (这句话是说此脚本调用名字为fluent的集群排序提交队列,小白继续略过)
NP=2 (这句话是说此脚本的任务将调用2个CPU core来执行)
NP_PER_NODE=1 (这句话是说此脚本的任务将在分配用来执行任务的每个节点上调用1个CPU core来执行)
RUN="fluent 2ddp -g -i fluent.jou -r15.0.0 -pib –mpi=pcmpi" (这句话是说此脚本的执行命令以及参数,2ddp 是指二维双精度类型计算,这个大家应该熟悉了;fluent.jou就是我们使用的fluent命令执行脚本的名字)

fluent.jou脚本内容实例:
/file/read-case ./boil-unstdy.cas (读取cas文件,boil-unstdy.cas)
/file/read-data ./boil-unstdy.dat (读取dat文件,boil-unstdy.dat)
define/user-defined/compiled-function/compile (定义编译函数库并制定编译文件)
libudf
yes
boiling-rpi-model.c

define/user-defined/compiled-function/load (加载编译函数库)
libudf
/file/auto-save/data-frequency 100 (自动保存)
/solve/initialize/initialize-flow(初始化)
/solve/dual-time-iterate (求解循环设置)
500
20
/file/read-data ./boil-unsteady-out.dat (保存结果)
exit (退出fluent)
yes

集群使用qsub与slurm投递任务方法

完整原文:https://hongwan.xyz/archives/

qsub

注释以“#”开头

PBS运行参数,以“#PBS”开头

例子:

#PBS -N bowtie2
#PBS -l nodes=1: ppn=20
#PBS -j oe 
cd $PBS_0_WORKDIR index=/home/Public/Database/human/hg38_old/hg38/Gencode/bowtie2_index/hg38outdir=/home/wangyan/projects/1zx_CHIPseq hps_metastasis_SW480620/1. bowtie
fqdir=/home/wangyan/projects/1zx_CHIPseq_hps_metastasis_SW480620/0. data
for i in SW480_H3_rel do
    bowtie2-p 15-x $index-S $outdir/$i/$i. sam-1<(zcat $fqdir/$i.1. fq. gz)-2<(zc
done

参数

-N :任务名

-l:
nodes :节点数目

ppn:每个结点上使用20个CPU

-j :? 指定合并错误输出和实际输出。如果指定’oe’,则合并到标准输出文件中;如果指定’eo’,则合并到标准错误输出文件中.

投递方法: qsub 脚本名.sh

任务查看:qstat

任务取消:qdel +Job id

slurm

例子

#!/bin/sh
#SBATCH --job-name=S15_T_1.fastqc
#SBATCH -n 1
#SBATCH -c 10
#SBATCH --mem=2gb
#SBATCH -o /disk/zxl/projects/GNEC_LZX/Shell/S15_T/1.FastQC.log
/disk/soft/FastQC/fastqc -t 5 /disk/zxl/projects/GNEC_LZX/0.data/S15_T_1.fq.gz /disk/zxl/projects/GNEC_LZX/0.data/S15_T_2.fq.gz -o /disk/zxl/projects/GNEC_LZX/1.FastQC/S15_T
/disk/soft/FastQC/fastqc -t 5 /disk/zxl/projects/GNEC_LZX/0.data/S15_N_1.fq.gz /disk/zxl/projects/GNEC_LZX/0.data/S15_N_2.fq.gz -o /disk/zxl/projects/GNEC_LZX/1.FastQC/S15_T
echo "1.FastQC has been done!" >> /disk/zxl/projects/GNEC_LZX/Run_log/S15_T.log

参数

--job-name :任务名,最好使用自己姓名,方便大家知道是谁在跑任务

-n: node,节点数目

-c: 核心数

--mem:需要的内存,可以先命令行跑一个测试看看需要多少

投递任务:sbatch 脚本名.sh

查看所有的任务

squeue -o "%i %.30j %.8u %.2t %.8M %.6D %.5C %.5m %.15R %Z" | less -S

查看自己的任务(加上-u是看指定用户任务)

squeue -o "%i %.30j %.8u %.2t %.8M %.6D %.5C %.5m %.15R %Z" -u zxl | less -S

杀掉特定的任务

scancel JobID

tips:

可以把命令在~/.bahrc中用alias命名成简单的命令

alias sqa="squeue -o "%i %.30j %.8u %.2t %.8M %.6D %.5C %.5m %.15R %Z" | less -S"
alias sq=squeue -o "%i %.30j %.8u %.2t %.8M %.6D %.5C %.5m %.15R %Z" -u zxl | less -S"

以上是关于如何与多个用户环境中运行的PBS的主要内容,如果未能解决你的问题,请参考以下文章

qsub vasp.pbs怎么提前任务

PBS常用指令合集

如何在同一台服务器的多个环境中运行相同的cronjob?

JMeter - 如何在多个测试环境中运行多个线程组

如何根据环境变量将 SSIS 包运行到多个服务器?

使用 Docker 同时运行多个 Web 开发环境