4. Abaqus安装与HPC环境配置

在Linux集群上部署Abaqus,与在单机Windows上双击安装有本质区别。集群环境涉及多节点并行、共享文件系统、作业调度器以及许可证并发管理,任何一个环节配置不当,都会导致求解器无法启动、并行效率低下或作业中途失败。本节围绕四个核心问题展开:安装路径与介质准备、许可证服务器配置、MPI库选择与验证、环境变量与求解器路径设置。

一、安装介质与目录规划

Abaqus的Linux安装通常使用官方提供的介质,包含AMPSetup、SIMULIA_EstablishedProducts等目录。安装前需要确认三件事:集群各节点是否挂载了统一的共享目录(如/opt/simulia或/share/apps/abaqus),安装账号是否具备写权限,以及系统是否已安装必要的依赖库(如libXm、libstdc++、glibc版本匹配)。

推荐将Abaqus安装到共享存储,而不是每个节点本地安装。这样只需维护一份安装,所有计算节点通过NFS或Lustre挂载即可访问。典型目录结构如下:

/share/apps/abaqus/
├── 2023/                 # 版本目录
│   ├── SimulationProducts/
│   ├── CAE/
│   └── Commands/         # abaqus、abq2023 等命令
├── license/              # 许可证相关配置
└── temp/                 # 临时工作目录(建议本地盘)

安装命令通常以./StartTUI.sh或./AMPSetup.sh启动文本界面,按提示指定安装路径、许可证服务器地址和组件。安装完成后,务必检查Commands目录下是否生成了abaqus、abq2023、abq2023_cae等可执行文件。

二、许可证服务器配置

Abaqus使用FlexNet Publisher(FlexLM)管理许可证。许可证服务器可以部署在集群的登录节点或专用License节点上。核心配置文件是abaqus.lic和SIMULIA.lic,其中包含SERVER行和VENDOR行。例如:

SERVER license01 001122334455 27000
VENDOR ABAQUS PORT=27001
USE_SERVER

启动许可证服务使用lmgrd:

/share/apps/abaqus/2023/License/lmgrd -c /share/apps/abaqus/license/SIMULIA.lic -l /var/log/abaqus_license.log

客户端节点通过环境变量ABAQUSLM_LICENSE_FILE或LM_LICENSE_FILE指向许可证服务器,格式为27000@license01。验证许可证是否可用,可执行:

/share/apps/abaqus/2023/Commands/abaqus licensing lmstat -a -c 27000@license01

输出中应能看到Users of ABAQUS:以及可用Token数量。如果显示Cannot connect to license server,优先检查防火墙是否放行27000/27001端口、lmgrd进程是否存活、以及hostname解析是否一致。

三、MPI库选择与验证

Abaqus并行求解依赖MPI库。常见选择有三类:Abaqus自带的ABAQUS MPI(基于MPICH)、平台厂商优化的MPI(如Intel MPI、Platform MPI)、以及OpenMPI。选择原则是:优先使用Abaqus官方认证的MPI版本,避免混用不同MPI实现导致mpirun与求解器不兼容。

在abaqus_v6.env中通过mpi_mp_mode和mpi_mpi参数指定MPI类型。例如使用Intel MPI:

mpi_mp_mode = 'MPI'
mpi_mpi = 'INTELMPI'
mpi_mpi_command = 'mpirun -np %N% -hostfile %HOSTFILE%'

验证MPI是否可用,最直接的方法是运行一个多进程小算例。例如创建一个简单的test.inp,提交:

abaqus job=test input=test.inp cpus=4 mp_mode=MPI interactive

观察test.log中是否出现PARALLEL相关行,以及test.dat中是否显示4个CPU参与。如果作业只在一个核心运行,或报MPI_ABORT,说明MPI配置未生效。此时应检查mpirun是否在PATH中、各节点是否免密SSH互通、以及hostfile格式是否正确。

Abaqus Linux集群HPC环境配置关系图 许可证服务器 lmgrd + SIMULIA.lic 端口 27000 / 27001 ABAQUSLM_LICENSE_FILE 27000@license01 MPI库选择 ABAQUS MPI / Intel MPI Platform MPI / OpenMPI abaqus_v6.env 中配置 mpi_mpi = 'INTELMPI' 环境变量与路径 PATH 加入 Commands/ ABAQUS_COMMAND ABAQUS_TMPDIR LD_LIBRARY_PATH 计算节点集群(共享存储 /opt/simulia) node01 abaqus job=... cpus=8 node02 mpirun -np 8 node03 hostfile 指定 node04 共享 /share/apps 验证链路 lmstat 检查许可证 → mpirun 测试连通 → abaqus job=test cpus=4 观察 .log/.dat 确认 PARALLEL 行出现、CPU 数正确、无 MPI_ABORT

四、环境变量与求解器路径设置

为了让所有用户在任何目录下都能直接调用abaqus命令,需要将Abaqus的Commands目录加入PATH。通常在/etc/profile.d/abaqus.sh或用户~/.bashrc中写入:

export ABAQUS_HOME=/share/apps/abaqus/2023
export PATH=$ABAQUS_HOME/Commands:$PATH
export ABAQUSLM_LICENSE_FILE=27000@license01
export ABAQUS_TMPDIR=/scratch/$USER/abaqus_tmp
export LD_LIBRARY_PATH=$ABAQUS_HOME/SimulationProducts/Abaqus/2023/exec:$LD_LIBRARY_PATH

其中ABAQUS_TMPDIR建议指向本地高速盘(如/scratch或/tmp),而不是共享存储。因为求解过程中会产生大量临时文件,共享存储的I/O延迟会显著拖慢并行效率。如果集群使用Slurm或PBS调度器,还需要在作业脚本中显式加载环境:

#!/bin/bash
#SBATCH --job-name=abaqus_test
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=8
#SBATCH --partition=compute

module load abaqus/2023
abaqus job=test input=test.inp cpus=16 mp_mode=MPI interactive

提交后,通过squeue查看作业状态,通过abaqus job=test status查看求解进度。若作业长时间停留在RUNNING但无输出,应检查test.log中是否有Waiting for license字样,这通常意味着许可证Token不足或服务器连接超时。

实用检查清单:
  • 共享目录是否所有节点可读写?touch /share/apps/abaqus/test_write 验证。
  • 许可证端口是否放行?telnet license01 27000 验证。
  • MPI是否免密?ssh node02 hostname 验证。
  • 环境变量是否生效?which abaqus 和 echo $ABAQUSLM_LICENSE_FILE 验证。
  • 临时目录是否本地?df -h $ABAQUS_TMPDIR 确认挂载类型。

完成上述配置后,建议用一个包含接触和几何非线性的小模型做端到端验证:提交16核并行作业,检查.sta文件中的增量步推进是否正常,.msg中是否有ERROR,以及.log中是否显示PARALLEL和正确的CPU数量。只有这条链路全部打通,后续的批量仿真和参数扫描才有稳定的运行基础。