问题描述
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 有限,我想尽可能地最大化性能。 我正在使用以下提交脚本进行一些基准测试:
class Aaa{
...
List<Bbb>? bbb;
}
我正在运行的程序是 Gromacs2020 (MPI),这是一个执行分子动态模拟的软件。
在机器手册中我读到了这些键:
#!/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
然而,考虑到最近的技术,我的表现平庸。事实上,在一个 5 年以前的集群中,我使用可比的资源获得了更好的性能。
那么,您是否设想将这些关键字很好地组合起来以最大限度地提高性能并避免浪费 core-h? 我的系统大小约为 100K 个原子(如果有帮助的话)。
非常感谢任何反馈,
期待听到您的意见。
最好的问候
视频
解决方法
在您的情况下,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。