优化 SLURM 集群的性能
Optimize performance on a SLURM cluster
我在 CPU 如此结构化的集群上进行了多次尝试后写信给您:
144 个标准计算节点
2× AMD EPYC 7742,2× 64 核,2.25 GHz
256 (16× 16) GB DDR4,3200 兆赫
InfiniBand HDR100 (Connect-X6)
操作系统本地盘(1×240GB 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 个原子(如果有帮助的话)。
非常感谢任何反馈,
期待听到您的意见。
此致
VG
在您的情况下,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。
我在 CPU 如此结构化的集群上进行了多次尝试后写信给您:
144 个标准计算节点 2× AMD EPYC 7742,2× 64 核,2.25 GHz 256 (16× 16) GB DDR4,3200 兆赫 InfiniBand HDR100 (Connect-X6) 操作系统本地盘(1×240GB 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 个原子(如果有帮助的话)。
非常感谢任何反馈,
期待听到您的意见。
此致
VG
在您的情况下,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。