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命令,需要将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数量。只有这条链路全部打通,后续的批量仿真和参数扫描才有稳定的运行基础。