您的位置:

Slurm:高性能计算管理系统

Slurm是一个用于Linux和Unix操作系统的开源的、可扩展的和高性能的计算集群管理系统,可以用于管理数千个节点。Slurm设计用于管理计算机集群,特别是高性能计算(HPC)系统。

一、Slurm API

Slurm提供了一组API,用于用户和管理员使用编程语言进行访问和管理Slurm,这些API包括C、Python、Perl和Java等语言。Slurm API包括以下组件:

  • 命令行界面:提供Slurm标准命令的Python接口;
  • Slurm open-source source base library:提供访问Slurm API的C函数;
  • SLURM perl library:Slurm Perl API
  • Java binding:提供Java API的通用绑定(JNI);
  • Python binding:Slurm的Python API

所有Slurm API都可以在Slurm官方文档中找到。这些API可用于创建自定义脚本,以管理Slurm工作,以及进行高级任务请求。

二、Slurm搭建GPU集群

在Slurm中使用GPU资源时,需要至少一个GPU,而对于多GPU节点,Slurm提供了多种排队策略:

  • 共享GPU:可将同一任务的多个执行互相共享GPU。可以选择合适的分区大小,该分区大小建议为每个GPU配置的核心数量;
  • 独占GPU:预订所有GPU资源,等待队列中的作业获得所有GPU,生命周期结束后,释放GPU资源;
  • 混合GPU:为同一任务使用多个GPU和CPU资源。Slurm将GPU、CPU和内存分开进行排队,因此可以分别通过QoS参数控制GPU、CPU和内存。这意味着Slurm可以优化内存和GPU之间的通信。

以下是一个Slurm搭建GPU集群的示例,该示例使用2个节点,每个节点有1个GPU。

Step 1:安装GPU驱动程序

$ sudo apt-get install nvidia-driver

Step 2:安装CUDA和cuDNN

$ sudo apt-get install cuda
$ sudo apt-get install libcudnn7
$ sudo apt-get install libcudnn7-dev

Step 3:安装Slurm

$ sudo apt-get install slurm-llnl

Step 4:在Slurm配置中添加GPU资源

在Slurm配置文件中定义GPU资源,如下所示:

NodeName=node1 Name=gpu Type=gpu File=/dev/nvidia0
NodeName=node2 Name=gpu Type=gpu File=/dev/nvidia0

Step 5:测试GPU资源

$ salloc -N 1 -p gpu -t 20:00
$ srun -p gpu -N 1 nvidia-smi

三、Slurm支持Ubuntu吗

Slurm可以在各种Linux和Unix操作系统上运行,包括Ubuntu。可以使用以下命令在Ubuntu上安装Slurm:

$ sudo apt-get install slurm-llnl

默认情况下,Slurm将在Ubuntu上启动,并可以使用Ubuntu上的Slurm命令管理计算集群。

四、Slurm节点宕机处理

Slurm可以检测到节点宕机并处理宕机节点。当一个节点宕机时,Slurm将执行以下操作:

  • Slurm将检测到节点已经下线,并在Slurm数据库中删除该节点;
  • Slurm将自动停止正在运行的任务,并将它们重新分配到其它可用节点上;
  • Slurm将自动关闭所有由该节点处理的依赖任务,确保任务不会一直处于等待状态。

如果您想要手动将节点从Slurm中删除,可以使用以下命令:

$ scontrol update nodename=node0 state=down reason="node down"

以上就是Slurm的简要概述,同时介绍了Slurm的几个方面。随着科学技术的发展,Slurm作为一个高效的计算集群管理系统在科学研究中扮演着巨大的角色。如有兴趣可以进入官网(http://slurm.schedmd.com/)获取更多资料。