Wiss. Rechnen » GPUs
 

Achtung: Diese Seite beschäftigt sich mit dem OMNI-Cluster! Unsere anderen Systeme verfügen nicht über GPUs.


Graphical Processing Units (GPUs) sind spezialisierte Prozessoren, die mit ihren massiv parallele Architekturen bestimmte Operationen schneller ausführen können als CPUs. Man spricht deshalb auch von Beschleunigern (von denen GPUs nur eine Untergruppe sind). Der OMNI-Cluster verfügt über 10 Knoten mit insgesamt 24 GPUs vom Typ NVIDIA Tesla V100.

Damit ein Programm die GPUs nutzen kann, müssen geeignete Programmteile mit Hilfe entsprechender Bibliotheken (z.B. CUDA, OpenACC, OpenCL, OpenMP) erweitert werden.

Auf dieser Seite beschreiben wir, wie Sie für Ihre Jobs GPU-Knoten anfordern können. Außerdem ist beschrieben, welche Softwarebibliotheken zur Verfügung stehen, um Software für GPUs zu programmieren und wie Sie diese Bibliotheken einbinden.

Anfordern von GPU-Knoten auf OMNI

Um einen Knoten mit GPUs anzufordern, muss im Job-Skript die Queue (Partition) gpu angegeben werden. Zusätzlich muss auch die genaue Anzahl von benötigten GPUs über die Option --gres=gpu:<Anzahl> spezifiziert werden.

Die 24 GPUs auf dem OMNI-Cluster sind wie folgt auf die 10 GPU Knoten verteilt:

node #GPUs
gpu-node[001-003] 4
gpu-node[005-008] 1
gpu-node[009-010] 2

Beispiel Job-Skript-Header:

#!/bin/bash
#SBATCH --time=0:30:00
#SBATCH --nodes=1
#SBATCH --tasks-per-node=2
#SBATCH --partition=gpu
#SBATCH --gres=gpu:2
...

Damit fordern Sie einen GPU Knoten mit mindestens 2 GPUs aus der GPU-Queue an. Variieren Sie --gres=gpu:[1|2|4], je nachdem, wie viele GPUs sie für Ihren Anwendugsfall nutzen möchten.

GPU-Programmierung auf OMNI

Nach dem Login werden per default der OpenHPC Software Stack, mit vielseitigen Tools und Bibliotheken für das wissenschaftliche Rechnen, und auf Wunsch installierte Anwendungssoftware im OMNI Software Stack geladen. Daneben existiert ein weiterer Software Stack der vom Bright Cluster Manager zur Verfügung gestellt wird. Dieser enthält neben den GPU Kompilern auch Pakete mit GPU-Unterstützung unter anderem für den Anwendungsbereich des Maschinellen Lernens. Nach dem Laden des GPU-Module Stacks sind die anderen Software Stacks nicht mehr sichtbar, damit es nicht zu Kompatibilitätsproblemen kommt.

Laden des GPU-Module Stacks:
module load GpuModules

Damit werden folgende Komponenten per Default in Ihre Umgebung geladen:

$ module list

Currently Loaded Modules:
  1) shared                                  6) openblas/dynamic/0.3.7      11) nccl2-cuda10.1-gcc/2.7.8
  2) slurm/omni/20.02.6                      7) protobuf3-gcc/3.8.0         12) gcc5/5.5.0
  3) python36                                8) cudnn7.6-cuda10.1/7.6.5.32  13) tensorflow2-py36-cuda10.1-gcc/2.0.0
  4) ml-pythondeps-py36-cuda10.1-gcc/3.3.0   9) hdf5_18/1.8.21
  5) keras-py36-cuda10.1-gcc/2.3.1          10) cuda10.1/toolkit/10.1.243

Eine Übersicht aller Module, die Ihnen unter GpuModules aus dem Bright Cluster Manager Maschine Learning Stack zur Verfügung stehen können Sie sich mit module avail anzeigen lassen.

Nach dem Entladen des Modules steht Ihnen der OpenHPC und OMNI Software Stack ohne GPU-Unterstützung wieder zur Verfügung. Das Kommando dazu ist:
module unload GpuModules

Bitte denken Sie daran, entsprechende Befehle zum Laden und Ändern der Module im Jobsskript mit anzugeben und GPUs im Jobskript anzufordern (siehe oben).

Aktualisiert um 15:19 am 8. Februar 2021 von Jan Steiner