双服务器 VASP 计算集群搭建及使用经验分享

3 0
随心 发表于 5 天前 | 查看全部 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×



1. 集群基本情况

本集群由两台 Dell PowerEdge R720 服务器组成,用于运行 VASP 6.4.2 第一性原理计算任务。两台服务器通过局域网互联,并通过 NFS 共享 /home 目录,实现统一的程序路径、计算目录和输入输出文件管理。
1.1 节点信息

        
节点名
            
IP 地址
            
角色
        
      
node1
        
192.168.3.122
        
主节点、NFS 服务端、推荐任务启动节点
     
     
node2
        
192.168.3.123
        
计算节点、NFS 客户端
     1.2 硬件概况

每台服务器为 Dell PowerEdge R720,双路 CPU 架构。系统中每台服务器包含 2 NUMA 节点,适合进行 MPI 并行计算。
当前建议按物理核心优先使用,不建议一开始使用超线程跑满所有逻辑核心。
常用并行规模:
        
配置
            
含义
            
说明
        
      
-ppn 4 -np 8
        
每台 4 MPI 进程,总共 8 个进程
        
已验证稳定,可作为基础测试配置
     
     
-ppn 8 -np 16
        
每台 8 MPI 进程,总共 16 个进程
        
推荐日常测试配置
     
     
-ppn 16 -np 32
        
每台 16 MPI 进程,总共 32 个进程
        
两台服务器物理核心满载测试配置
     

2. 软件环境

2.1 操作系统

两台服务器均为 Ubuntu 系统。
2.2 共享存储

/home 目录通过 NFS 共享:
·      node1 为 NFS 服务端;
·      node2 挂载 node1 的 /home;
·      VASP 程序、测试目录、运行脚本均统一放在 /home/lxy 下。
这样可以保证两台服务器访问相同的 VASP 可执行文件和计算输入输出文件。
2.3 Intel oneAPI / MPI 环境

当前主要使用:
/opt/intel/oneapi/mpi/2021.15
Intel MPI 版本:
Intel(R) MPI Library, Version 2021.15
VASP 所需相关库主要包括:
/opt/intel/oneapi/mpi/2021.15/lib
/opt/intel/oneapi/mpi/2021.15/opt/mpi/libfabric/lib
/opt/intel/oneapi/compiler/2025.1/lib
/opt/intel/oneapi/mkl/2025.1/lib
OFI/libfabric provider 路径为:
/opt/intel/oneapi/mpi/2021.15/opt/mpi/libfabric/lib/prov
当前跨节点 MPI 使用:
I_MPI_FABRICS=shmfi
I_MPI_OFI_PROVIDER=tcp
FI_PROVIDER=tcp
说明:
·      shm 用于同一节点内部 MPI 通信;
·      ofi 用于跨节点通信;
·      tcp 表示通过普通以太网进行跨节点通信。

3. VASP 程序位置

VASP 6.4.2 已编译完成,统一位于共享目录:
/home/lxy/vasp.6.4.2/vasp.6.4.2/bin/vasp_std
两台服务器均通过 /home 共享目录访问同一个 vasp_std

4. hosts 文件

在计算目录中准备 hosts.txt
node1
node2
也可以使用 IP 写法:
192.168.3.122
192.168.3.123
推荐优先使用节点名,前提是 /etc/hosts 中已经正确配置:
192.168.3.122 node1
192.168.3.123 node2

5. MPI 参数说明

5.1 -np

-np 表示总 MPI 进程数。
例如:
-np 16
表示整个作业共启动 16 MPI rank
5.2 -ppn

-ppn 表示每个节点启动多少个 MPI 进程。
例如:
-ppn 8 -np 16
在两台服务器上表示:
        
节点
            
MPI 进程数
        
      
node1
        
8
     
     
node2
        
8
     
     
总计
        
16
     5.3 NUMA 关系

-ppn 只控制每台机器启动多少个 MPI 进程,不直接控制这些进程放在哪个 NUMA节点上。
实际 MPI rank CPU/NUMA 的分布由 Intel MPI pinning 策略决定。可以通过:
-genv I_MPI_DEBUG 10
查看 CPU pinning 信息。
推荐使用:
-genv I_MPI_PIN 1
-genv I_MPI_PIN_DOMAINcore
使每个 MPI rank 尽量绑定到物理核心上,减少进程漂移,提高性能稳定性。

6. 推荐运行脚本

为了避免每次手动输入大量环境变量,建议创建统一的 VASP 环境包装脚本。
6.1 创建 /home/lxy/run_vasp_env.sh

cat > /home/lxy/run_vasp_env.sh <<'EOF'
#!/bin/bash

ulimit -s unlimited

export I_MPI_ROOT=/opt/intel/oneapi/mpi/2021.15
exportPATH=$I_MPI_ROOT/bin:/opt/intel/oneapi/2025.1/binPATH
exportLD_LIBRARY_PATH=$I_MPI_ROOT/libI_MPI_ROOT/opt/mpi/libfabric/lib:/opt/intel/oneapi/compiler/2025.1/lib:/opt/intel/oneapi/mkl/2025.1/libLD_LIBRARY_PATH
exportFI_PROVIDER_PATH=$I_MPI_ROOT/opt/mpi/libfabric/lib/prov

export OMP_NUM_THREADS=1
export MKL_NUM_THREADS=1
export OMP_STACKSIZE=512M
export MKL_DYNAMIC=FALSE
export OMP_DYNAMIC=FALSE

exec /home/lxy/vasp.6.4.2/vasp.6.4.2/bin/vasp_std
EOF

chmod +x/home/lxy/run_vasp_env.sh
该脚本的作用是:
1.     设置无限栈空间;
2.     设置 Intel MPI 路径;
3.     设置 MKL、compiler、libfabric 动态库路径;
4.     固定每个 MPI rank 使用 1 个 OpenMP/MKL 线程;
5.     启动 VASP。

7. VASP 正式运行命令

建议统一从 node1 启动任务。
进入计算目录:
cd /home/lxy/6-6-GaN/test
7.1 8 核测试配置

mpirun -f hosts.txt -ppn 4 -np 8 \
  -genv I_MPI_FABRICS shmfi \
  -genv I_MPI_OFI_PROVIDER tcp \
  -genv FI_PROVIDER tcp \
  -genv I_MPI_PIN 1 \
  -genv I_MPI_PIN_DOMAIN core \
  -genv OMP_NUM_THREADS 1 \
  -genv MKL_NUM_THREADS 1 \
/home/lxy/run_vasp_env.sh > vasp_np8.log 2>&1
7.2 16 核推荐配置

mpirun -f hosts.txt -ppn 8 -np 16 \
  -genv I_MPI_FABRICS shmfi \
  -genv I_MPI_OFI_PROVIDER tcp \
  -genv FI_PROVIDER tcp \
  -genv I_MPI_PIN 1 \
  -genv I_MPI_PIN_DOMAIN core \
  -genv OMP_NUM_THREADS 1 \
  -genv MKL_NUM_THREADS 1 \
/home/lxy/run_vasp_env.sh > vasp_np16.log 2>&1
7.3 32 核满物理核心测试配置

mpirun -f hosts.txt -ppn 16 -np 32 \
  -genv I_MPI_FABRICS shmfi \
  -genv I_MPI_OFI_PROVIDER tcp \
  -genv FI_PROVIDER tcp \
  -genv I_MPI_PIN 1 \
  -genv I_MPI_PIN_DOMAIN core \
  -genv OMP_NUM_THREADS 1 \
  -genv MKL_NUM_THREADS 1 \
/home/lxy/run_vasp_env.sh > vasp_np32.log 2>&1

8. 后台运行任务

如果希望任务在断开终端后继续运行,可以使用 nohup
nohup mpirun -f hosts.txt -ppn 8 -np 16 \
  -genv I_MPI_FABRICS shmfi \
  -genv I_MPI_OFI_PROVIDER tcp \
  -genv FI_PROVIDER tcp \
  -genv I_MPI_PIN 1 \
  -genv I_MPI_PIN_DOMAIN core \
  -genv OMP_NUM_THREADS 1 \
  -genv MKL_NUM_THREADS 1 \
/home/lxy/run_vasp_env.sh > vasp_np16.log 2>&1 &
查看进程:
ps -ef | grep vasp
查看日志:
tail -fvasp_np16.log
查看 VASP 电子步:
tail -f OSZICAR

9. VASP 并行参数建议

INCAR 中建议优先设置:
NCORE= 4
KPAR = 1
9.1 NCORE

NCORE 用于控制每个轨道并行使用的核心数。
常用测试值:
NCORE = 2
NCORE = 4
NCORE = 8
对于当前双路服务器,建议优先测试:
NCORE = 4
如果使用 -np 32,可以进一步测试:
NCORE = 8
9.2 KPAR

KPAR 用于 k 点并行。
如果是 Gamma 点或 k 点很少,建议保持:
KPAR = 1
如果 KPOINTS k 点较多,可以测试:
KPAR = 2
KPAR = 4
注意:
总 MPI rank 数应能被 KPAR整除。
例如:
        
总 MPI rank
            
可测试 KPAR
        
      
8
        
1, 2, 4
     
     
16
        
1, 2, 4, 8
     
     
32
        
1, 2, 4, 8, 16
     

10. 性能测试方法

不同并行规模不一定核数越多越快,需要通过实际计算时间比较。
运行一段时间后查看:
grep "LOOP:" OUTCAR | tail
grep "LOOP+" OUTCAR | tail
建议分别保存不同配置的输出文件:
cp OUTCAR OUTCAR_np8
cp OSZICAR OSZICAR_np8
cp vasp_np8.logvasp_np8_finished.log
然后对 np16np32 也做同样保存。
推荐测试顺序:
1. -ppn4  -np 8
2. -ppn 8  -np16
3. -ppn 16 -np 32
最终选择 LOOP 时间最短、运行最稳定的配置作为日常默认配置。

11. 运行过程中查看 CPU 状态

11.1 查看所有 CPU 核心负载

node1
mpstat -P ALL 1
node2
ssh node2 "mpstat-P ALL 1"
如果没有 mpstat,安装:
sudo apt install sysstat
11.2 使用 htop

node1
htop
node2
ssh node2
htop
建议在 htop 中添加 PROCESSOR 列,用于查看进程运行在哪个 CPU 核心上。
11.3 查看 VASP 进程所在 CPU

ps -eLo pid,tid,psr,pcpu,pmem,comm | grep vasp
持续刷新:
watch -n 1 "ps -eLo pid,tid,psr,pcpu,pmem,comm | grep vasp"
11.4 查看进程绑核范围

for p in $(pgrep vasp_std); do
  echo "ID $p"
  taskset -cp $p
done
node2
ssh node2 'for pin $(pgrep vasp_std); do echo "ID $p"; taskset -cp $p; done'

12. 查看 NUMA 信息

查看 NUMA 节点和 CPU 分布:
numactl -H
或者:
lscpu -e=CPU,CORE,SOCKET,NODE,ONLINE
查看运行过程中 NUMA 内存使用:
numastat
查看单个 VASP 进程的 NUMA 分布:
for p in $(pgrep vasp_std); do
  echo "===== PID $p ====="
  numastat -p $p
done

13. 常见问题与处理

13.1libfabric.so.1: cannot open shared object file

原因:远端 MPI 进程没有获得正确的 LD_LIBRARY_PATH
解决方法:在 mpirun 命令中添加:
-genv I_MPI_ROOT /opt/intel/oneapi/mpi/2021.15
-genv LD_LIBRARY_PATH/opt/intel/oneapi/mpi/2021.15/lib:/opt/intel/oneapi/mpi/2021.15/opt/mpi/libfabric/lib:/opt/intel/oneapi/compiler/2025.1/lib:/opt/intel/oneapi/mkl/2025.1/lib
-genv FI_PROVIDER_PATH/opt/intel/oneapi/mpi/2021.15/opt/mpi/libfabric/lib/prov
或者统一使用 /home/lxy/run_vasp_env.sh 包装脚本。
13.2 fi_info 找不到真实路径

原因:I_MPI_ROOT 指向了错误路径。
正确路径应为:
export I_MPI_ROOT=/opt/intel/oneapi/mpi/2021.15
然后测试:
fi_info -p tcp
fi_info -p shm
13.3 forrtl: error (78): process killed (SIGTERM)

如果使用了 timeout 命令,例如:
timeout 120s mpirun ...
那么到时间后系统会主动终止 VASP,出现 SIGTERM 是正常的。
正式计算不要加 timeout
13.4 mpiicc icc: not found

原因:当前环境没有传统 Intel C 编译器 icc
可以使用:
export I_MPI_CC=icx
或:
export I_MPI_CC=gcc
再编译 MPI 测试程序。

14. 推荐日常使用流程

14.1 准备输入文件

每个计算目录至少包含:
INCAR
POSCAR
POTCAR
KPOINTS
进入计算目录:
cd /home/lxy/6-6-GaN/test
14.2 检查 hosts

cat hosts.txt
建议内容为:
node1
node2
14.3 运行 VASP

推荐先使用 16 rank
mpirun -f hosts.txt -ppn 8 -np 16 \
  -genv I_MPI_FABRICS shmfi \
  -genv I_MPI_OFI_PROVIDER tcp \
  -genv FI_PROVIDER tcp \
  -genv I_MPI_PIN 1 \
  -genv I_MPI_PIN_DOMAIN core \
  -genv OMP_NUM_THREADS 1 \
  -genv MKL_NUM_THREADS 1 \
/home/lxy/run_vasp_env.sh > vasp_np16.log 2>&1
14.4 查看进度

tail -f OSZICAR
或:
tail -f vasp_np16.log
14.5 查看计算是否结束

grep "reachedrequired accuracy"OUTCAR
查看最终能量:
grep "free  energy  TOTEN" OUTCAR | tail

15. 当前集群状态总结

当前双服务器集群已经完成以下配置和验证:
1.node1 与 node2SSH 免密登录正常;
2. node1 与 node2 主机名解析正常;
3. /home NFS 共享正常;
4. VASP 6.4.2 可执行文件位于共享目录;
5. Intel MPI 2021.15 本地多进程测试正常;
6. node2 本地 VASP 多进程运行正常;
7. 跨节点 Intel MPI + OFI/tcp 通信正常;
8. VASP 跨节点 -ppn 4 -np 8 已成功运行;
9. -ppn 8 -np 16 的 MPI rank 分布正常;
10. 当前阶段可以正式使用 node1 + node2 进行 VASP 并行计算。
推荐后续重点工作:
1. 固化运行脚本;
2. 测试 -np 8、-np 16、-np 32 的实际速度;
3. 对比 OUTCAR 中 LOOP 时间;
4. 调整 INCAR 中 NCORE 和 KPAR;
5. 根据实际体系确定日常最佳运行配置。
当前推荐默认配置:
运行规模:-ppn8 -np 16
INCAR 参数:NCORE = 4, KPAR = 1
启动节点:node1
通信方式:IntelMPI + shmfi + tcp

回复

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

学研领航向全体高校师生打造的一站式综合交流与资源服务平台,集知识学习、经验分享、资源下载、互动问答、职场成长、兼职实践于一体,覆盖校园生活、专业学习、求职就业、兴趣发展等全场景需求。

快捷导航

小黑屋
  • 添加微信客服
Copyright © 2026 学研领航 版权所有 陕ICP备2025077879号-1
关灯 在本版发帖
扫一扫添加微信客服
返回顶部
快速回复 返回顶部 返回列表