高性能计算迁移的一个关键方面是作业计划程序的配置。 作业计划程序负责计划用户作业,即确定应执行作业的位置和时间。 在云的上下文中,作业计划程序与资源业务流程协调程序交互,以按需获取/释放资源,这不同于资源固定且随时完全可用的本地环境。 本指南的这一部分介绍了与作业计划程序关联的需求、工具、服务和最佳做法。
最常见的 HPC 作业计划程序包括 Slurm、OpenPBS、PBSPro 和 LSF。
定义作业计划程序需求
计划程序部署:
- 将现有作业计划程序配置迁移到云环境。
- 利用 CycleCloud 中提供的同一计划程序,或在必要时迁移到其他计划程序。
配置管理:
- 配置作业计划程序以定义分区/队列、Azure SKU、计算节点主机名和其他参数。
- 根据资源可用性和作业需求的变化,随时随地自动更新计划程序配置。
作业提交和管理:
- 允许最终用户根据计划和资源访问策略规则提交作业以供执行。
- 监视和管理作业队列、资源利用率和作业状态。
工具和服务
使用 CycleCloud 的作业调度程序:
- 使用 CycleCloud 在云中部署和管理 HPC 作业计划程序。
- 在 CycleCloud 环境中配置作业计划程序,例如 Slurm、OpenPBS、PBSPro 和 LSF。
- 通过 CycleCloud 门户或 CLI 管理作业提交、队列和资源分配。
HPC 直接迁移体系结构中适用于作业计划程序的最佳做法
高效的计划程序部署:
- 规划和测试现有作业计划程序配置到云环境的迁移,以确保兼容性、性能和用户体验。
- 使用 CycleCloud 对计划程序(如 Slurm、OpenPBS、PBSPro 和 LSF)的内置支持,以实现更流畅的部署过程。
优化的配置管理:
- 要满足不断变化的资源可用性和作业要求,请定期更新计划程序配置(例如计划程序队列/分区)。
- 使用脚本和工具自动执行配置更改,以最大程度地减少手动干预并降低错误风险。
可靠的作业提交和管理:
- 实现用于作业提交和管理的用户友好界面,以促进最终用户与计划程序的交互。
- 要及时识别和解决潜在问题,请持续监视作业队列、资源利用率和作业状态。
可伸缩性和性能:
- 配置动态缩放策略,以根据作业需求自动调整计算节点数,从而优化资源利用率和成本。
- 使用性能指标和监视工具持续评估和改进作业计划程序的性能和总体 HPC 环境。
这些最佳做法有助于确保顺利切换到基于云的作业计划,从而维护 HPC 工作负载的效率、可伸缩性和性能。
设置和部署的步骤示例
本部分概述了如何使用 Azure CycleCloud 部署和配置作业计划程序。 其中包括用于选择和部署计划程序、配置其设置以及将现有本地计划程序迁移到云环境的步骤。
使用 CycleCloud 部署作业计划程序:
部署作业计划程序:
导航到 Azure CycleCloud 门户,并从可用选项中选择所需的作业计划程序(例如,Slurm、PBSPro)。
按照提示部署作业计划程序,并指定所需的参数,例如资源组、位置和虚拟网络。
部署 Slurm 计划程序的命令示例:
cyclecloud create_cluster -n slurm-cluster -c slurm
配置作业计划程序:
- 部署作业计划程序后,请通过 CycleCloud 门户配置计划程序设置。
- 定义分区/队列、Azure SKU、计算节点主机名和其他参数。
将现有作业计划程序设置迁移到 CycleCloud:
Slurm
导出现有配置:
导出现有本地作业计划程序的配置。
导出 Slurm 配置的命令示例:
scontrol show config > slurm_config.txt
评估和调整 Slurm 配置:
打开导出的配置文件并评估每个设置,以确定哪些设置是必要的且与云环境相关。
要考虑的常用设置包括:
- ControlMachine
- SlurmdPort
- 状态保存位置
- SlurmdSpoolDir
- SlurmctldPort
- ProctrackType
- 认证类型
- 调度器类型
- 选择类型
- 选择类型参数
- AccountingStorageType
- JobCompType
准备 CycleCloud Slurm 模板:
- 打开 CycleCloud Slurm 模板配置文件。 可以通过群集配置设置下的 CycleCloud UI 访问此文件。
- 找到指定 Slurm 配置的部分。
将调整后的 Slurm 设置添加到 CycleCloud Slurm 配置:
- 对于本地配置中的每个相关设置,请将其添加到 CycleCloud Slurm 模板中的 Slurm 配置文本框中。 根据需要调整值以反映云环境细节。
作业计划程序提交示例
使用 srun 提交 Slurm 交互式作业:
#!/bin/bash
# Submit a job using srun
srun --partition=debug --ntasks=1 --time=00:10:00 --job-name=test_job --output=output.txt my_application
使用 sbatch 提交 Slurm 批处理脚本:
#!/bin/bash
# Create a Slurm batch script
echo "#!/bin/bash
#SBATCH --partition=debug
#SBATCH --ntasks=1
#SBATCH --time=00:10:00
#SBATCH --job-name=test_job
#SBATCH --output=output.txt
# Run the application
my_application" > job_script.sh
# Submit the batch job
sbatch job_script.sh