主流CAE仿真软件如何在Linux&HPC并行计算集群上使用pbs或slurm脚本提交作业(上)?

内容介绍:

本文主要介绍,主流CAE仿真软件,如大型有限元分析软件ANSYS FLUENT、ANSYS MECHANICAL、ANSYS CFX、ANSYS LS-DYNA,ABAQUS、HFSS、NASTRAN、CST、STAR-CCM+、NUMECA、FEKO、COMSOL在HPC或Linux并行计算集群上如何使用pbs或slurm作业调度系统脚本提交作业以及如何使用软件在命令行提交作业,旨在帮助初入科研行业的小伙伴们,轻松使用以上软件在集群上快速运行自己的算例,不再为软件工具的使用或如何批量提交作业而煞费心思,从而回归到科研本身,欢迎有需要的伙伴学习!

1. FLUENT标准测试

1.1 Fluent journal控制文件

cat truck_111m.jou
/file/rc truck_111m.cas
/solve/initialize/initialize-flow
/parallel/timer/reset
/solve/iterate 40
/parallel/timer/usage
/exit
OK

1.2 slurm测试脚本范例

#!/bin/bash
#SBATCH -J truck_14m
#SBATCH -N 16
#SBATCH -n 512
#SBATCH -p sugon
#SBATCH --ntasks-per-node=32
#SBATCH -o %x_%j.log
srun hostname | sort > hosts //获取mpi运行节点
job_name=${SLURM_JOB_NAME}
INPUT_FILE=truck_14m.jou  //fluent journal控制文件
/public/software/ANSYS/ansys2019/ansys_inc/v190/fluent/bin/fluent 3d -g -pinfiniband -t"$SLURM_NTASKS" -cnf=hosts -cflush -i "$INPUT_FILE" -mpi=intel -ssh >& "${SLURM_JOB_NAME}".txt     //命令行运行程序 3d表示三维单精度,对应的还有3ddp、2d、2ddp dp代表双精度 -g不开启图形界面 -p指定网络infiniband、ethernet -t总的核数 -cnf 运行的节点文件列表 -i journal输入文件 -mpi指定mpi类型2021以前intelmpi和ibmmpi、21以后intelmpi和openmpi -ssh节点互连认证方式 -cflush清空内存缓存

1.3 pbs测试脚本范例

#!/bin/bash
#PBS -N test  ##作业名自定义
#PBS -q normal  ##替换成实际的队列
#PBS -l nodes=node1:32 ##替换成实际的资源
#PBS -o std.out
#PBS -e std.err
NP=`cat $PBS_NODEFILE | wc -l`  ##计算总核数
cat $PBS_NODEFILE  | sort  > hosts ##获取节点列表
/public/software/ANSYS/ansys2019/ansys_inc/v190/fluent/bin/fluent 3d -g -pinfiniband -t"$SLURM_NTASKS" -cnf=hosts -cflush -i "$INPUT_FILE" -mpi=intel -ssh >& truck_111m.txt     //命令行运行程序 3d表示三维单精度,对应的还有3ddp、2d、2ddp dp代表双精度 -g不开启图形界面 -p指定网络infiniband、ethernet -t总的核数 -cnf 运行的节点文件列表 -i journal输入文件 -mpi指定mpi类型2021以前intelmpi和ibmmpi、21以后intelmpi和openmpi -ssh节点互连认证方式-cflush清空内存缓存

1.4 命令行方式测试提交作业

1)SMP运行方式:

/public/software/ANSYS/ansys2019/ansys_inc/v190/fluent/bin/fluent 3d -g -pinfiniband -t"$SLURM_NTASKS" -i "$INPUT_FILE" >& truck_111m.txt     //命令行运行程序 3d表示三维单精度,对应的还有3ddp、2d、2ddp dp代表双精度 -g不开启图形界面 -t总的核数 -i journal输入文件

2)MPP运行方式:

/public/software/ANSYS/ansys2019/ansys_inc/v190/fluent/bin/fluent 3d -g -pinfiniband -t"$SLURM_NTASKS" -cnf=hosts -cflush -i "$INPUT_FILE" -mpi=intel -ssh >& truck_111m.txt     //命令行运行程序 3d表示三维单精度,对应的还有3ddp、2d、2ddp dp代表双精度 -g不开启图形界面 -p指定网络infiniband、ethernet -t总的核数 -cnf 运行的节点文件 -i journal输入文件 -mpi类型2021以前intelmpi和ibmmpi、21以后intelmpi和openmpi -ssh节点互连认证方式

 2. MECHANICAL标准测试

2.1 slurm测试脚本范例

#!/bin/bash
#SBATCH -J V17cg
#SBATCH -N 16
#SBATCH -n 576
#SBATCH -p intel36_2
#SBATCH --ntasks-per-node=36
job_name=${SLURM_JOB_NAME}
INPUT_FILE=V17sp-5.dat
machines=""
for i in $(scontrol show hostnames=$SLURM_JOB_NODELIST); do
        machines=$machines:$i:$SLURM_NTASKS_PER_NODE
done
machnies=${machines#:}
/public/software/test/ansys192/ansys_inc/v192/ansys/bin/ansys192 -b -i "${INPUT_FILE}" -dis -mpi intelmpi -machines "$machines" >& ${job_name}.log  ##-b不开启图形界面 -i输入控制文件 -dis分布式并行 -mpi指定Mpi类型 -machines 指定节点名称和核数(node1:30:node2:30)

2.2 pbs测试脚本范例

#!/bin/bash
#PBS -N test  ##作业名自定义
#PBS -q normal  ##替换成实际的队列
#PBS -l nodes=node1:32 ##替换成实际的资源
#PBS -o std.out
#PBS -e std.err
NP=`cat $PBS_NODEFILE | wc -l`  ##计算总核数
Machines=$(cat $PBS_NODEFILE|sort|uniq -c|awk '{print $2":"$1}'|sed ':a;N;s/\n/:/g;t a') ##获取节点列表
/public/software/test/ansys192/ansys_inc/v192/ansys/bin/ansys192 -b -i "${INPUT_FILE}" -dis -mpi intelmpi -machines "$machines" >& V17cg.log  ##-b不开启图形界面 -i输入控制文件 -dis分布式并行 -mpi指定Mpi类型 -machines 指定节点名称和核数(node1:30:node2:30)

2.3 命令行方式测试提交作业

1)SMP提交方式:

/public/software/test/ansys192/ansys_inc/v192/ansys/bin/ansys192 -b -i "${INPUT_FILE}" -np 40 >& V17cg.log  ##-b不开启图形界面 -i输入控制文件 -np指定节点运行的核数可根据实际情况调整

2)MPP提交方式:

/public/software/test/ansys192/ansys_inc/v192/ansys/bin/ansys192 -b -i "${INPUT_FILE}" -dis -mpi intelmpi -machines "$machines" >& V17cg.log  ##-b不开启图形界面 -i输入控制文件 -dis分布式并行 -mpi指定mpi类型 -machines 指定节点名称和核数(node1:30:node2:30)

3. CFX标准测试

3.1 slurm测试脚本范例

#!/bin/bash
#SBATCH -J perf_Airfoil_50M_R16M
#SBATCH -N 8
#SBATCH -n 288
#SBATCH -p intel36
#SBATCH --ntasks-per-node=36
#SBATCH -w comput[175-182]
job_name=${SLURM_JOB_NAME}
INPUT_FILE=perf_Airfoil_50M_R16M.def
hosts=`srun hostname | sort | uniq -c| awk '{print $2"*"$1}'|sed ':a;N;s/\n/,/;ta'` ##获取运行节点列表
/public/software/test/ansys192/ansys_inc/v192/CFX/bin/cfx5solve -batch -affinity explicit -parallel -single -def "${INPUT_FILE}" -par-dist ${hosts} >& ${job_name}.log  ##-batch 批处理运行方式 -affinity开启进程绑定
-parallel 并行方式运行 -single单精度 -def 算例输入文件 -par-dist 运行的节点和核数

3.2 pbs测试脚本范例

#!/bin/bash
#PBS -N test  ##作业名自定义
#PBS -q normal  ##替换成实际的队列
#PBS -l nodes=node1:32 ##替换成实际的资源
#PBS -o std.out
#PBS -e std.err
NP=`cat $PBS_NODEFILE | wc -l`  ##计算总核数
machines=$(cat $PBS_NODEFILE|sort|uniq -c|awk '{print $2"*"$1}'|sed ':a;N;s/\n/:/g;t a') ##获取节点列表
/public/software/test/ansys192/ansys_inc/v192/CFX/bin/cfx5solve -batch -affinity explicit -parallel -single -def "${INPUT_FILE}" -par-dist ${hosts} >& ${job_name}.log  ##-batch 批处理运行方式 -affinity开启进程绑定
-parallel 并行方式运行 -single单精度 -def 算例输入文件 -par-dist 运行的节点和核数

3.3 命令行方式测试提交作业 

1)SMP提交方式:

/public/software/ansys/ansys_inc/v195/CFX/bin/cfx5solve -batch -par-local -part 128 -single -parallel -def perf_Airfoil_50M_R16M.def##-batch 批处理运行方式 -single单精度 -def 算例输入文件 -par-local 本地节点运行 -part 运行的核数

2)MPP提交方式:

/public/software/test/ansys192/ansys_inc/v192/CFX/bin/cfx5solve -batch -affinity explicit -parallel -single -def "${INPUT_FILE}" -par-dist ${hosts}>& perf_Airfoil.log  ##-batch 批处理运行方式 -affinity开启进程绑定
-parallel 并行方式运行 -single单精度 -def 算例输入文件 -par-dist 运行的节点和核数

4. LS-DYNA标准测试

4.1 slurm测试脚本范例

#!/bin/bash
#SBATCH -J 3cars
#SBATCH -N 8
#SBATCH -n 448
#SBATCH -p hygon64
#SBATCH --ntasks-per-node=56
#SBATCH -w hgcomput[13-20]
job_name=${SLURM_JOB_NAME}
INPUT_FILE=3cars_shell2_150ms.k
machines=""
for i in $(scontrol show hostnames=$SLURM_JOB_NODELIST); do
        machines=$machines:$i:$SLURM_NTASKS_PER_NODE
done
machines=${machines#:*}  ##获取节点列表
export LSTC_MEMORY=AUTO ##内存自适应
/public/software/test/ansys192/ansys_inc/v192/ansys/bin/lsdyna192 -dis -mpi ibmmpi -machines "$machines" memory=200m memory2=100m i=${INPUT_FILE} >& ${job_name}.log ###-dis 分布式并行计算 -mpi指定mpi类型 -machines 指定运行的节点列表 memory memory2 运行中mpi主进程和slave进程所分配的内存 -dp为双精度,默认为单精度

4.2 pbs测试脚本范例

#!/bin/bash
#PBS -N test  ##作业名自定义
#PBS -q normal  ##替换成实际的队列
#PBS -l nodes=node1:32 ##替换成实际的资源
#PBS -o std.out
#PBS -e std.err
NP=`cat $PBS_NODEFILE | wc -l`  ##计算总核数
machines=$(cat $PBS_NODEFILE|sort|uniq -c|awk '{print $2"*"$1}'|sed ':a;N;s/\n/:/g;t a') ##获取节点列表
export LSTC_MEMORY=AUTO ##内存自适应
/public/software/test/ansys192/ansys_inc/v192/ansys/bin/lsdyna192 -dis -mpi ibmmpi -machines "$machines" memory=200m memory2=100m i=${INPUT_FILE} >& ${job_name}.log ###-dis 分布式并行计算 -mpi指定mpi类型 -machines 指定运行的节点列表 memory memory2 运行中mpi主进程和slave进程所分配的内存-dp为双精度,默认为单精度

4.3 命令行方式测试提交作业

1)SMP提交方式:

export LSTC_MEMORY=AUTO ##内存自适应
/public/software/test/ansys192/ansys_inc/v192/ansys/bin/lsdyna192 ncpu=40 memory=200m memory2=100m i=${INPUT_FILE} >& ${job_name}.log ###ncpu单节点运行的核数 memory memory2 运行中mpi主进程和slave进程所分配的内存

2)MPP提交方式:

export LSTC_MEMORY=AUTO ##内存自适应
/public/software/test/ansys192/ansys_inc/v192/ansys/bin/lsdyna192 -dis -mpi ibmmpi -machines "$machines" memory=200m memory2=100m i=${INPUT_FILE} >& ${job_name}.log ###-dis 分布式并行计算 -mpi指定mpi类型 -machines 指定运行的节点列表 memory memory2 运行中mpi主进程和slave进程所分配的内存

  • 14
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 在 PBS 提交作业时,你可以使用 `-l environment=value` 参数来指定环境。例如: ``` qsub -l environment=myenv jobscript ``` 其中 `myenv` 是你希望使用的环境的名称,`jobscript` 是你要提交作业脚本的文件名。 注意,你需要预先在计算机系统上定义这个环境,并且你需要有足够的权限来使用它。 ### 回答2: 当使用PBS(Portable Batch System)来提交作业时,我们可以通过指定环境来确保作业在特定环境中执行。 首先,我们需要在PBS作业脚本中指定所需的环境。这可以通过在PBS脚本的开头使用特定的指令来实现。例如,我们可以使用“#PBS”指令来设置环境变量,指定作业所需的软件包和库,以及其他必要的参数。 如果我们想在特定的节点上运行作业,我们可以使用“#PBS -l nodes=<node>:ppn=<num>”指令来指定节点和每个节点的任务数。其中,<node>表示节点的名称或节点数,<num>表示每个节点的任务数。这样,作业将被限制在指定的节点和任务数上运行。 另外,我们还可以使用“#PBS -q <queue>”指令来指定作业提交到哪个队列中。队列是根据计算资源可用性而创建的。通过将作业提交到适合的队列,我们可以更好地管理作业的调度和资源分配。 当我们完成PBS作业脚本的编写后,我们可以使用“qsub”命令将作业提交PBS系统中。同时,我们还可以使用“qstat”命令来查看作业的状态和资源使用情况。 总之,通过在PBS作业脚本中指定环境相关的参数和指令,我们可以确保作业在特定的环境中执行,并根据需求进行资源分配和管理。 ### 回答3: 在提交PBS作业时,我们可以通过指定环境来确保作业能够在特定的环境中正确运行。以下是一些指定PBS作业环境的方法: 1. 在PBS脚本中指定环境变量:可以使用PBS脚本中的export命令,通过设置环境变量来指定特定的环境。例如,可以设置PATH变量以确保使用特定版本的软件。 2. 使用module命令加载环境模块:许多HPC集群提供了module命令,可以用来加载和管理不同的软件环境模块。通过使用module命令,可以加载所需的软件环境模块,并在PBS脚本中调用所需的软件。 3. 使用PBS软件模块:一些PBS作业管理系统提供了自带的软件模块管理功能。可以使用这些功能来指定特定的软件环境。例如,可以使用PBS的module命令加载和管理所需的软件环境模块。 4. 在PBS脚本使用特定的执行命令:如果需要在作业提交时指定特定的命令或程序执行环境,可以在PBS脚本中直接使用这些命令。例如,可以在PBS脚本中执行conda activate命令来激活特定的conda环境。 总而言之,指定PBS作业环境可以通过设置环境变量、加载环境模块、使用PBS软件模块或在PBS脚本中直接执行特定的命令来实现。这样可以确保作业在特定的环境中执行,从而提高作业的准确性和可靠性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术瘾君子1573

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值