内容介绍:
本文主要介绍,主流CAE仿真软件,如大型有限元分析软件ANSYS FLUENT、ANSYS MECHANICAL、ANSYS CFX、ANSYS LS-DYNA,ABAQUS、HFSS、NASTRAN、CST、STAR-CCM+、NUMECA、FEKO、COMSOL在HPC或Linux并行计算集群上如何使用pbs或slurm作业调度系统脚本提交作业以及如何使用软件在命令行提交作业,旨在帮助初入科研行业的小伙伴们,轻松使用以上软件在集群上快速运行自己的算例,不再为软件工具的使用或如何批量提交作业而煞费心思,从而回归到科研本身,欢迎有需要的伙伴学习!
软件下载请到HPC&Linux并行计算CAE常用软件网盘下载链接-CSDN博客下载
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进程所分配的内存
xiaxia