Andrew Moa Blog Site

超算平台安装Abaqus

最近因为业务关系和某家超算供应商有合作,使用过程中涉及到Abaqus软件部署问题。虽然平台客服提供了安装方案,但对于我这种爱瞎折腾的人来说不自己亲自动手解决是不会善罢干休的,而且还可以顺便水篇文章。

1. 平台配置

哪家平台就不细说了,反正又没给我付广告费。

这里用的安装包是SIMULIA 2024,系统要求GLIBC>=2.281GLIBCXX>=3.4.21CXXABI>=1.3.9。后两个好解决,可以通过LD_PRELOAD载入高版本的libstdc++.so暂时绕过限制。但是GLIBC涉及到底层动态库,除非升级发行版或者重新编译,否则真没什么好的解决办法。

用以下命令查看当前登陆节点的GLIBC版本。

getconf GNU_LIBC_VERSION

55457d02888d05e9fb7428ba2edf2ee6.png

注意这是登陆节点的GLIBC版本,计算节点和登陆节点的GLIBC甚至发行版未必一致,需要和平台确认清楚。

按这些平台的尿性,部署节点安装的大多数是CentOS 7或者对应版本的RHEL发行版,版本号不会太高,毕竟要优先保证兼容性。

uname -r -v

032011cce7ff5fddfd34c28306d2353b.png

2. GLIBC切换

好在我用的这个平台推出了GLIBC版本热切换功能2,搭配slurm在计算脚本头部添加两行注释即可,也算是十分方便了。

...
#SBATCH --comment={glibcVersion:2.31} # 指定使用glibc 2.31环境
#SBATCH --exclusive # 独占节点
...

至于哪个分区支持哪些GLIBC版本,可以通过whichpartition命令查看。

5e9eea6bc8bc9f5d8e3f323d00bcdbe9.png

阅读时长1分钟
Andrew Moa

Ubuntu编译安装SU2

SU2 是一款由斯坦福大学航空航天学院开发的开源CFD求解器,基于C++和Python开发,定位类似于OpenFOAM,但不支持多面体网格。相比OpenFOAM,SU2在高速可压缩流方面的求解更有优势。

下载SU2源代码:

mkdir $HOME/su2code && cd $HOME/su2code
# 只clone最近commit版本,加快下载速度
git clone https://github.com/su2code/SU2.git --depth=1

定义环境变量,新建配置文件su2.env

touch $HOME/su2code/su2.env
chmod +x $HOME/su2code/su2.env
vim $HOME/su2code/su2.env

su2.env文件中加入以下内容,保存退出:

#!/bin/sh

# 定义SU2环境变量
export SU2_RUN=$HOME/su2code/bin	# 编译完成后su2的安装路径
export SU2_HOME=$HOME/su2code/SU2	# 下载su2的源码的文件夹路径
export PATH=$PATH:$SU2_RUN
export PYTHONPATH=$SU2_RUN:$PYTHONPATH

编译程序的配置文件meson_options.txt位于SU2源代码文件夹下,根据自己的需求调整其中的编译选项:

vim $HOME/su2code/SU2/meson_options.txt

这里打开mpi和blas支持,修改以下两行的value:

option('with-mpi',   type : 'feature', value : 'enabled', description: 'enable MPI support')
option('enable-openblas', type : 'boolean', value : true, description: 'enable BLAS and LAPACK support via OpenBLAS')

如果是Intel的机器,建议打开mkl支持。

默认支持的blas库是openblas,要先下载openblas库:

sudo apt install libopenblas-dev -y

进入下载的源码目录,运行编译程序

# 载入环境变量
source $HOME/su2code/su2.env
# 进入源码文件夹
cd $SU2_HOME
# 配置编译器,生成ninja构建文件
# 配置过程中会自动从git上下载外部依赖
# 非常花时间……
./meson.py build --prefix=$SU2_RUN/..
# 开始编译并安装
./ninja -C build install

验证是否安装成功:

SU2_CFD --help

安装成功会输出软件版本号和帮助信息。

阅读时长1分钟
Andrew Moa

Slurm提交Fluent和CFX的计算脚本

1. Fluent

首先要编写Fluent的jou脚本:

/file/read-case "small_fan.cas.h5" 
/solve/initialize/hyb-initialization 
/solve/iterate 100 
/file/write-case "small_fan_results.cas.h5" ok 
/file/write-data "small_fan_results.dat.h5" ok 
/exit ok 

这个jou文件很简单,就是告诉Fluent读取哪个文件、怎么初始化、迭代多少步、如何保存直至最后退出。如果计算比较复杂的,比如涉及到UDF加载或特殊条件初始化设置的,还需要增加相应的命令行。不熟悉怎么编写TUI命令的话,可以通过Fluent图形界面下面的命令行窗口录制脚本。

编写Slurm脚本:

#!/bin/bash 

#SBATCH --job-name=fluent_test	# 任务名称
#SBATCH --partition=debug 
#SBATCH --output=%j.out 
#SBATCH --error=%j.err 
#SBATCH -N 1	# 计算节点数
#SBATCH --ntasks-per-node=32	# 每节点计算进程数

cd $SLURM_SUBMIT_DIR

source ${HOME}/opt/ansys2025r1.env	# 载入许可证设置环境变量,这里应该使用绝对路径
export FLUENT=/ansys_inc/v251/fluent/bin/fluent	# fluent可执行文件路径
export MPI_TYPE=intel # intel or openmpi 
export JOU_FILE=`find . -name "*.jou"`
export MACHINEFILE=$SLURM_JOBID.node 
scontrol show hostnames $SLURM_JOB_NODELIST > $MACHINEFILE 

#注意fluent根据2维3维单双精度的不同有4钟计算模式:2d、3d、2ddp、3ddp,根据自己的需求选择对应的计算模式
$FLUENT 3ddp -g -t$SLURM_NPROCS -cnf=$MACHINEFILE -mpi=$MPI_TYPE -ssh -i $JOU_FILE

保存以上脚本,将待提交的cas文件和jou文件放到脚本所在文件夹,通过sbatch命令提交脚本即可。计算完成后将输出的结果文件下载到本地机器上处理。

2. CFX

相比fluent,cfx计算脚本简单很多:

阅读时长1分钟
Andrew Moa