performance - 优化 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 原子(如果有帮助的话)。
任何反馈将不胜感激,
期待听到您的意见。
此致
视频网关
解决方案
在您的情况下,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。
推荐阅读
- php - Woocommerce - 将订单 ID 添加到可下载文件名
- python - 如何为 ROI 生成高斯分布强度?
- javascript - 用js和pug设置HTML页面标题
- netezza - Netezza 中从 NUMERIC 到 NVARCHAR
- data-annotations - 我可以使用谷歌云数据标签服务做文本分类吗?
- javascript - 在document.createElement下的javascript中添加图形链接的功能是什么?
- linux - 用于替换两个分隔符位置之间的任何内容的 unix 命令
- unity3d - 无法部署到 HoloLens(错误 80004005)
- python - python中动态循环中的拆分函数
- angular - 在非 Angular 类中使用服务