首页 > 解决方案 > 优化 SLURM 集群的性能

问题描述

在我对如此结构化的 CPU 集群进行了多次尝试之后,我正在给您写信:

144 个标准计算节点 2× AMD EPYC 7742、2× 64 核、2.25 GHz 256 (16× 16) GB DDR4、3200 MHz InfiniBand HDR100 (Connect-X6) 操作系统本地磁盘(1× 240 GB SSD) 1 TB NVMe

现在,由于我的 core-h 在这里有限,我想尽可能地提高性能。我正在使用以下提交脚本进行一些基准测试:

#!/bin/bash -x
#SBATCH --account=XXXX
#SBATCH --ntasks=256
#SBATCH --output=mp-out.%j
#SBATCH --error=mpi-err.%j
#SBATCH --time=24:00:00
#SBATCH --partition=batch

srun ./myprogram

我正在运行的程序 si Gromacs2020 (MPI),一个执行分子动态模拟的软件。

在机器手册中,我读到了这些键:

--ntasks
--ntasks-per-node
--cpu-per-node

然而,考虑到最近的技术,我的表现平平。确实,在一个 5 年老的集群中,我在具有可比资源的情况下获得了更好的性能。

那么,您是否设想将这些关键字很好地组合以最大限度地提高性能并避免 core-h 浪费?我的系统大小约为 100K 原子(如果有帮助的话)。

任何反馈将不胜感激,

期待听到您的意见。

此致

视频网关

标签: performancehpcslurmscientific-computing

解决方案


在您的情况下,256 个任务没有限制在同一个机架上运行,位置与否。Slurm 没有任何线索可以正确安排集群上的作业。它可能是在 256 个不同节点上安排 1 个任务,这根本没有效率。

为确保一切安排正确,也许您应该强制定位节点上的任务。

#!/bin/bash -x
#SBATCH --account=XXXX
#SBATCH --nodes=2
#SBATCH --ntasks=256
#SBATCH --ntasks-per-core=1
#SBATCH --tasks-per-node=128
#SBATCH --output=mp-out.%j
#SBATCH --error=mpi-err.%j
#SBATCH --time=24:00:00
#SBATCH --partition=batch

srun ./myprogram

通常,每 256 个任务将安排在每个 AMD 插槽的 1 个内核上。并位于 2 个节点上。这将避免低效的过度订阅和 CPU 周期共享。为了确保并且不会被基准测试打扰,请询问--exclusive。


推荐阅读