GPU Cluster¶
应用介绍¶
GPU集群,可以在集群中使用GPU卡进行计算。
使用指南¶
创建并运行镜像后,点击控制台 按钮,进入终端界面,即可开始使用。
集群采用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.