在曙光平台上进行run.slurm 多进程(process)多核并行参数设置

下述参数设置,使用64核单节点进行32核并行计算。[更改为双节点各32进程共64核并行]

盲猜,更适合网格较少,同时网格也很小的算例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash 
#SBATCH -J S_R_vincent ##作业名
#SBATCH -p xahcnormal ##队列
#SBATCH --nodes=2 ##本作业节点数:-N
#SBATCH --ntasks-per-node=16 ##每节点进程数
#SBATCH --cpus-per-task=2 ##每进程的核数
#SBATCH --error=%J.run.err
#SBATCH --output=%J.run.out
#------------------------------------------------------------------------------

module purge
module load OpenFOAM/v2212-hpcx-gcc-7.3.1
module list

source /public/software/apps/OpenFOAM/v2212/hpcx-gcc-7.3.1/OpenFOAM-v2212/etc/bashrc
source /public/software/apps/OpenFOAM/v2212/hpcx-gcc-7.3.1/OpenFOAM-v2212/bin/tools/RunFunctions
#------------------------------------------------------------------------------
srun -N1 -n1 ./pre.sh
srun --mpi=pmix_v3 compressibleInterFoam -parallel > log.compressibleInterFoam
touch a.foam

pre.sh 文件

并且,在执行pre.sh文件时,能够保证只执行一次。

(否则,在err文件中,能够看到每个核都会尝试执行对应命令,但是由于runApplication识别到log文件的存在,未能成功执行)

(没有技术强迫症的人可以不用在意,不影响最终结果)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/sh
source /public/software/apps/OpenFOAM/v1912/hpcx-gcc-7.3.1/OpenFOAM-v1912/etc/bashrc
source /public/software/apps/OpenFOAM/v1912/hpcx-gcc-7.3.1/OpenFOAM-v1912/bin/tools/RunFunctions
#------------------------------------------------------------------------------

#runApplication blockMesh

#fluent3DMeshToFoam fluent.msh

restore0Dir

#funkySetFields -time 0

runApplication setFields

runApplication decomposePar

#------------------------------------------------------------------------------

Tips

  1. 当验证算例时,只想导出alpha场的结果,而不需要其他速度、压力场的结果,方便下载和临时存储。

    system/controlDict中增加

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    functions
    {
    writeObjectsExample
    {
    type writeObjects;
    libs (utilityFunctionObjects);//V2212
    libs ("libutilityFunctionObjects.so");//V1912
    objects (alpha);
    writeControl adjustableRunTime;
    writeInterval 1e-8;
    writeOption autoWrite;
    }
    }

  1. 多核并行时,想顺便restore0DirsetFieldsdecomposePar,但是多核会每个核都执行对应操作,虽然可能没什么影响,但是看起来就很烦
1
2
srun -N1 -n1 ./pre.sh
srun --mpi=pmix_v3 compressibleInterFoam -parallel > log.compressibleInterFoam
  1. of2212Clean
    of2212RunFunctions
    restore0Dir
    foamCloneCase ./ ../caseA.2
    tail -n 5 log.run
    tail -f log.run

常用的OpenFOAM微调自定义

.bashrc文件,开机自动加载

1
2
3
alias of2212='. ~/apps/OpenFOAM-v2212/etc/bashrc'
alias of2212Clean='. ~/apps/OpenFOAM-v2212/bin/tools/CleanFunctions'
alias of2212RunFunctions='. ~/apps/OpenFOAM-v2212/bin/tools/RunFunctions'

在修改工况参数,重新运行算例的过程中,常用给的命令为:

cleanCaseWithouPloyMesh是在cleanCase命令的基础上修改的,能够清空算例但不删除PloyMesh网格文件。

.bashrc文件增加对应别名,通过of2212Clean手动启动。

foamCloneCase属于自带功能,但是不能克隆 .sh.slurm 文件,需要在OpenFOAM-v2212/bin/tools/RunFunctions中对应函数位置自行增加需要复制的内容。

restore0Dir将0文件删除,并将0.orig文件复制为0文件,为快捷初始化0文件,修改边界条件时候常用。

top属于linux实时系统监控工具,当程序在后台运行时 * > log.run &,能够看到运行的进程ID,进而可以通过kill * 取消后台运行。

of2212

of2212RunFunctions

of2212Clean

cd caseA.1

foamCloneCase ./ ../caseA.2

cleanCaseWithoutPolyMesh

cd ../caseA.2

restore0Dir

setField