Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. A la fin de l'exercice, remplacez ces valeurs par des valeurs propres à votre environnement cloud.
Benchmark NVIDIA GPUDirect RDMA avec InfiniBand Bande passante d'écriture
Introduction
L'analyse comparative des performances est la caractéristique du calcul hautes performances. Les superordinateurs les plus modernes sont des clusters de nœuds de calcul avec une architecture hétérogène. Dans un tel nœud, nous pouvons voir à la fois des CPU classiques et des co-processeurs informatiques spécialisés (GPU). Ce tutoriel décrit une approche permettant de comparer NVIDIA GPUDirect Remote Direct Memory Access (GPUDirect RDMA) avec un script personnalisé basé sur la bande passante d'écriture InfiniBand (ib_write_bw
).
L'analyse comparative du RDMA GPUDirect avec le script ib_write_bw.sh
fournit un mécanisme simple et efficace pour effectuer l'analyse comparative du RDMA GPUDirect dans un cluster HPC sans se soucier de l'installation, des dépendances ou de la configuration du logiciel. Ce script est inclus avec la pile HPC OCI 2.10.2 et versions ultérieures. Un rapport de test consolidé contenant les détails de toutes les interfaces sera affiché sur la console OCI Bastion et stocké à l'adresse /tmp
pour référence ultérieure.
Remote Direct Memory Access (RDMA) permet aux périphériques Peripheral Component Interconnect Express (PCIe) d'accéder directement à la mémoire GPU. Conçu spécifiquement pour les besoins de l'accélération GPU, NVIDIA GPUDirect RDMA fournit une communication directe entre les GPU NVIDIA dans les systèmes distants. Il s'agit d'une technologie qui permet un chemin direct pour l'échange de données entre le GPU et les périphériques homologues tiers à l'aide des fonctionnalités standard de PCI Express. Il est activé sur les GPU de classe Tesla et Quadro, GPUDirect RDMA repose sur la capacité des GPU NVIDIA à exposer des portions de mémoire de périphérique sur une région PCI Express Base Address Register.
RDMA DE L'UC
Perftest Package est un ensemble de tests écrits sur des uverbes destinés à être utilisés en tant que micro-benchmark de performances. Il contient un ensemble de tests d'évaluation de la bande passante et de la latence, tels que :
-
Envoyer :
ib_send_bw
etib_send_lat
-
RDMA Read :
ib_read_bw
etib_read_lat
-
Ecriture RDMA :
ib_write_bw
etib_write_lat
-
RDMA Atomic :
ib_atomic_bw
etib_atomic_lat
-
Ethernet natif (lors de l'utilisation de MOFED2) :
raw_ethernet_bw
etraw_ethernet_la
Remarque : le package
perftest
doit être compilé avec Compute Unified Device Architecture (CUDA) pour utiliser la fonctionnalité GPUDirect.
Dans ce tutoriel, nous mettons l'accent sur un test de bande passante RDMA GPUDirect avec des transactions d'envoi utilisant la bande passante d'écriture InfiniBand (ib_write_bw
), qui peut être utilisé pour tester la bande passante et la latence à l'aide des transactions d'écriture RDMA. Nous automatiserons le processus d'installation et de test avec un script de wrapper personnalisé pour ib_write_bw
natif. Ce script peut être utilisé pour vérifier ib_write_bw
entre deux noeuds GPU dans le cluster. Si CUDA est installé sur le noeud, l'exécution compile à nouveau un package perftest
avec CUDA.
Objectifs
- Benchmark NVIDIA GPUDirect RDMA avec un script personnalisé basé sur
ib_write_bw
.
Prérequis
-
CUDA Toolkit 11.7 ou version ultérieure.
-
Installez NVIDIA Open-Source GPU Kernel Modules version 515 ou ultérieure.
Installation manuelle de perftest
avec CUDA DMA-BUF
Avant de procéder à l'installation manuelle, assurez-vous que tous les prérequis sont respectés et que nous procédons à l'installation sur une forme de GPU prise en charge.
-
Configuration/Utilisation.
-
Exportez les variables d'environnement
LD_LIBRARY_PATH
etLIBRARY_PATH
suivantes.export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export LIBRARY_PATH=/usr/local/cuda/lib64:$LIBRARY_PATH
-
-
Clonez le référentiel
perftest
et compilez-le avec CUDA.git clone https://github.com/linux-rdma/perftest.git
-
Après le clonage, utilisez la commande suivante.
cd perftest/ ./autogen.sh && ./configure CUDA_H_PATH=<path to cuda.h> && make -j, e.g.: ./autogen.sh && ./configure CUDA_H_PATH=/usr/local/cuda/include/cuda.h && make -j
Par conséquent, l'indicateur -use_cuda=
sera disponible pour ajout à une ligne de commande : ./ib_write_bw -d ib_dev --use_cuda=<gpu index> -a
Remarque : le test manuel de GPUDirect RDMA avec
ib_write_bw
nécessite la désinstallation du package existant et sa recompilation avec CUDA. Nous devons vérifier manuellement la forme des noeuds, le nombre de GPU et l'interface RDMA active sur les noeuds avant de procéder à l'évaluation des performances.
Présentation de la solution
ib_write_bw.sh est un script qui simplifie le processus de test d'évaluation RDMA GPUDirect en automatisant toutes les tâches manuelles associées. Ce script peut être déclenché directement à partir du bastion lui-même avec tous les arguments. Pas besoin de s'exécuter dans un modèle client-serveur traditionnel. Les scripts effectuent les vérifications suivantes lors de l'exécution. Si l'une de ces vérifications échoue, elle se ferme avec une erreur.
- Forme de noeud.
- Installation de CUDA.
- Nombre total de GPU installés et ID de gpu saisi.
- Interfaces RDMA actives sur le serveur et le client.
- Formes prises en charge
- BM.GPU.B4.8
- BM.GPU.A100-v2.8
- MODÈLE:BM.GPU4.8
- Prérequis
- Forme de GPU prise en charge.
- Pilotes et trousses d'outils CUDA installés.
Si toutes les vérifications sont réussies, ib_write_bw.sh
génère et exécute un livre de jeux ansible pour effectuer l'installation et la configuration.
Script
-
Nom :
ib_write_bw.sh
-
Emplacement :
/opt/oci-hpc/scripts/
-
Pile :
HPC
-
Version de pile :
2.10.3 and above
Syntaxe
sh ib_write_bw.sh -h
Usage:
./ib_write_bw.sh -s <server> -n <node> -c <y> -g <gpu id>
Options:
s Server hostname
n Client hostname.
c Enable cuda (Default: Disabled)
g GPU id (Default: 0)
h Print this help.
Logs are stored at /tmp/logs
e.g., sh ./ib_write_bw.sh -s compute-permanent-node-1 -n compute-permanent-node-2 -c y -g 2
Supported shapes: BM.GPU.B4.8,BM.GPU.A100-v2.8,BM.GPU4.8
Exemple de sortie
sh ib_write_bw.sh -s compute-permanent-node-14 -n compute-permanent-node-965 -c y -g 1
Shape: "BM.GPU4.8"
Server: compute-permanent-node-14
Client: compute-permanent-node-965
Cuda: y
GPU id: 1
Checking interfaces...
PLAY [all] *******************************************************************************************************************************
TASK [Gathering Facts] *******************************************************************************************************************
ok: [compute-permanent-node-14]
ok: [compute-permanent-node-965]
TASK [check cuda] ************************************************************************************************************************
ok: [compute-permanent-node-965]
ok: [compute-permanent-node-14]
.
.
Testing active interfaces...
mlx5_0
mlx5_1
mlx5_2
mlx5_3
mlx5_6
mlx5_7
mlx5_8
mlx5_9
mlx5_10
mlx5_11
mlx5_12
mlx5_13
mlx5_14
mlx5_15
mlx5_16
mlx5_17
ib_server.sh 100% 630 2.8MB/s 00:00
ib_client.sh 100% 697 2.9MB/s 00:00
Server Interface: mlx5_0
initializing CUDA
Listing all CUDA devices in system:
CUDA device 0: PCIe address is 0F:00
CUDA device 1: PCIe address is 15:00
CUDA device 2: PCIe address is 51:00
CUDA device 3: PCIe address is 54:00
CUDA device 4: PCIe address is 8D:00
CUDA device 5: PCIe address is 92:00
CUDA device 6: PCIe address is D6:00
CUDA device 7: PCIe address is DA:00
Picking device No. 1
[pid = 129753, dev = 1] device name = [NVIDIA A100-SXM4-40GB]
creating CUDA Ctx
making it the current CUDA Ctx
cuMemAlloc() of a 131072 bytes GPU buffer
allocated GPU buffer address at 00007f29df200000 pointer=0x7f29df200000
---------------------------------------------------------------------------------------
RDMA_Write BW Test
Dual-port : OFF Device : mlx5_0
Number of qps : 1 Transport type : IB
Connection type : RC Using SRQ : OFF
PCIe relax order: ON
ibv_wr* API : ON
TX depth : 128
CQ Moderation : 1
Mtu : 4096[B]
Link type : Ethernet
GID index : 3
Max inline data : 0[B]
rdma_cm QPs : OFF
Data ex. method : Ethernet
---------------------------------------------------------------------------------------
local address: LID 0000 QPN 0x008b PSN 0xe4ad79 RKey 0x181de0 VAddr 0x007f29df210000
GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:19:196
remote address: LID 0000 QPN 0x008b PSN 0x96f625 RKey 0x181de0 VAddr 0x007f9c4b210000
GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:16:13
---------------------------------------------------------------------------------------
#bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps] CPU_Util[%]
65536 407514 0.00 35.61 0.067920 0.78
Récapitulatif du test
GPUDirect Le récapitulatif de test RDMA pour chaque interface des noeuds de calcul sera affiché sur le bastion et sera stocké dans le dossier /tmp/ib_bw
sur le bastion.
Le paramètre important qu'il recherche est BW average[Gb/sec].
************** Test Summary **************
Server interface: mlx5_0
#bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps] CPU_Util[%]
65536 407514 0.00 35.61 0.067920 0.78
---------------------------------------------------------------------------------------
Server interface: mlx5_1
#bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps] CPU_Util[%]
65536 407569 0.00 35.61 0.067929 0.78
---------------------------------------------------------------------------------------
Server interface: mlx5_2
#bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps] CPU_Util[%]
65536 407401 0.00 35.60 0.067901 0.78
---------------------------------------------------------------------------------------
Accusé de réception
- Auteur - Anoop Nair
Ressources de formation supplémentaires
Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.
Benchmark NVIDIA GPUDirect RDMA with InfiniBand Write Bandwidth
F90875-01
December 2023
Copyright © 2023, Oracle and/or its affiliates.