GPU Cluster

应用介绍

GPU集群,可以在集群中使用GPU卡进行计算。

使用指南

创建并运行镜像后,点击控制台 terminal_icon 按钮,进入终端界面,即可开始使用。

集群采用Slurm对任务进行调度和管理,Slurm命令可参考作业系统

调用GPU资源

GPU集群中通常包含一个登录头节点(head)和数个GPU计算节点(gpuN)。

username@workstation ~]$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.1 workstation workstation.example.com
192.168.0.2 head head.example.com
192.168.0.3 gpu1 gpu1.example.com
192.168.0.4 gpu2 gpu2.example.com
192.168.0.5 gpu3 gpu3.example.com
192.168.0.6 gpu4 gpu4.example.com
192.168.0.7 gpu5 gpu5.example.com

登录头节点未配置GPU资源,仅供用户登录提交作业使用,故运行nvidia-smi时无回显,即无法调用GPU资源。如下所示:

[username@workstation ~]$ nvidia-smi
-bash: nvidia-smi: command not found

用户需要在管理头节点上申请资源后方可使用GPU计算节点,申请方式有两种,即通过sbatch提交作业的方式或使用salloc交互运行作业,以下介绍如何在GPU节点上运行nvidia-smi的两种方式。

sbatch调用GPU资源

直接在脚本中加入nvidia-smi命令即可。

脚本示例如下:

 1### 表示这是一个bash脚本
 2#!/bin/bash
 3
 4### 设置该作业的作业名
 5#SBATCH --job-name=JOBNAME
 6
 7### 指定该作业需要2个节点数
 8#SBATCH --nodes=2
 9
10### 每个节点所运行的进程数为40
11#SBATCH --ntasks-per-node=40
12
13### 作业最大的运行时间,超过时间后作业资源会被SLURM回收
14#SBATCH --time=2:00:00
15
16### 指定从哪个项目扣费。如果没有这条参数,则从个人账户扣费
17#SBATCH --comment project_name
18
19### 程序的执行命令
20nvidia-smi

salloc调用GPU资源

用于调试或者运行交互式的作业。集群的计算节点默认不允许用户直接登录,对需要交互式处理的程序,在登录到集群后,使用salloc命令分配节点,然后再ssh到分配的节点上进行处理。

注意

使用后,请确保运行完作业后退出资源,否则计费系统将继续计费。

首先通过管理头节点申请资源,以下示例为申请一个GPU计算节点,2个CPU核、1块GPU卡,指定最大占用时间为1小时。

[username@workstation ~]$ salloc -N 1 -n 2 --gres=gpu:1 -t 1:00:00
salloc: Pending job allocation 3452  ###生成任务ID为3452
salloc: job 3452 queued and waiting for resources
salloc: job 3452 has been allocated resources
salloc: Granted job allocation 3452
salloc: Waiting for resource configuration
salloc: Nodes gpu1 are ready for job  ###分配gpu1节点供任务使用

SSH登录到分配到的GPU计算节点上。

[username@workstation ~]$ ssh gpu1  ###登录gpu1节点
Warning: Permanently added 'gpu1,192.168.0.3' (ECDSA) to the list of known hosts.
Last login: Fri Dec 31 03:19:41 2021 from 192.168.0.1

运行nvidia-smi命令

[username@gpu1 ~]$ nvidia-smi   ###运行GPU指令
Fri Dec 31 03:57:17 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.87.01    Driver Version: 418.87.01    CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
===============================+======================+======================|
|   0  Tesla V100-PCIE...  Off  | 00000000:41:00.0 Off |                    0 |
| N/A   25C    P0    22W / 250W |      0MiB / 32480MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

计算完成后,使用两次exit命令退出。

注意

要输入exit两次,第一次exit是从计算节点退出到登录节点,第二次exit是释放所申请的资源。

[usernameo@gpu1 ~]$ exit  ###运行完成后退出gpu1节点
logout
Connection to gpu1 closed.
[usernameo@gpu1 ~]$ exit  ###释放所申请的资源
exit
salloc: Relinquishing job allocation 3452.

常见问题