[Nvidia] Introduction détaillée aux fonctionnalités avancées de nvidia MIG (2)

Le blogueur n'a autorisé aucune personne ou organisation à réimprimer les articles originaux du blogueur, merci pour votre soutien à l'original !
lien blogueur

Je travaille pour un fabricant de terminaux de renommée internationale et je suis responsable de la recherche et du développement de puces de modem.
Au début de la 5G, il était responsable du développement de la couche de service de données du terminal et du réseau central.Actuellement, il dirige la recherche sur les normes techniques pour les réseaux de puissance de calcul 6G.


Le contenu du blog s'articule principalement autour de :
       explication du protocole 5G/6G
       explication du réseau de puissance de calcul (cloud computing, edge computing, end computing)
       explication avancée du langage C
       explication du langage Rust



Introduction détaillée aux fonctionnalités avancées de nvidia MIG (2)

insérez la description de l'image ici

1. Le mécanisme de concurrence fourni par CUDA

       MIG est fondamentalement transparent pour les applications CUDA, de sorte que le modèle de programmation de CUDA peut rester inchangé pour réduire l'effort de programmation. CUDA a exposé plusieurs techniques pour exécuter des tâches en parallèle sur le GPU, et la comparaison de ces techniques avec MIG est présentée ci-dessous. Notez que Streamset MPSfont partie du modèle de programmation CUDA et sont donc disponibles sur les instances GPU.

       CUDA Streams est une fonctionnalité du modèle de programmation CUDA dans laquelle différentes tâches peuvent être soumises à des files d'attente distinctes dans une application CUDA et traitées indépendamment par le GPU. Les flux CUDA ne peuvent être utilisés que dans un seul processus et ne fournissent pas beaucoup d'isolation - l'espace d'adressage est partagé, le SM est partagé, la bande passante mémoire GPU, le cache et la capacité mémoire sont partagés. Au final, toute erreur affecte tous les Streams et toute l'exécution .

       MPS (Multi-Process service) est un service multi-processus de CUDA. Il permet aux applications multi-processus coopératives de partager des ressources de calcul sur le GPU . Il est couramment utilisé pour le travail MPI collaboratif, mais est également utilisé pour des applications non liées pour partager des ressources GPU, tout en acceptant les défis posés par cette solution. MPS ne fournit actuellement pas d'isolation d'erreur entre les clients , mais il est possible de limiter la proportion de multiprocesseurs de streaming utilisés par chaque client MPS parmi tous les SM, mais le matériel de planification est toujours partagé. La bande passante mémoire, le cache et la capacité mémoire sont tous partagés entre les clients MPS.

       MIG est une nouvelle forme de simultanéité offerte par les GPU NVIDIA tout en répondant à certaines des limitations des autres technologies CUDA lors de l'exécution de tâches parallèles.

Ruisseaux SPM MOI
type de partition processus unique division logique Division physique
Nombre maximal de partitions illimité 48 7
Isolation des performances SM Non Oui (en pourcentage, pas de partition) Oui
protection de la mémoire Non Oui Oui
Bande passante mémoire QoS Non Non Oui
isolement d'anomalie Non Non Oui
Interopérabilité entre les partitions Toujours CIB CIB limité
Quand reconfigurer prêt à configurer démarrage du processus à l'état inactif

2. Règles de nommage des équipements MIG

       Par défaut, un périphérique MIG se compose d'une "instance GPU" et d'une "instance de calcul" . Le tableau suivant met en évidence une convention de dénomination par son instance GPUCompter le nombre de trancheset sonMémoire totale en Go(plutôt que simplement son numéro de tranche de mémoire) pour marquer un périphérique MIG.

Veuillez ajouter une description de l'image

Lorsqu'un seul CI est créé (consommant toute la puissance de calcul de GI), la taille du CI est impliquée dans le nom de l'appareil, comme indiqué dans la figure ci-dessus

       Le tableau ci-dessous décrit la description du nom de profil A100-SXM4-40GB. Pour A100-SXM4-80GB, le nom du profil changera en fonction du ratio de mémoire - par exemple 1g.10gb, 2g.20gb, 3g.40gb, 4g.40gb, 7g.80gb.

Mémoire 20 Go 10 Go 5 Go
Instance GPU 3g 2g1g
Instance de calcul 3c 2c 1c
Dispositif MIG 3g.20gb 2g.10gb 1g.5gb
GPCGPCGPC GPCGPC GPC

       Chaque GI peut être subdivisé en plusieurs CI en fonction de la charge de travail de l'utilisateur. Le tableau ci-dessous indique principalement le nom de l'appareil MIG dans ce cas . L'exemple illustré est une subdivision d'un appareil 3g.20gb en un ensemble de sous-appareils avec un nombre variable de tranches d'instance de calcul.

insérez la description de l'image ici

Trois, énumération des appareils CUDA

       Les applications CUDA autorisent les programmes sur des périphériques MIG spécifiques en utilisant l'identifiant de périphérique MIG. CUDA 11/R450 et CUDA 12/R525 ne prennent en charge que l'énumération d'une seule instance MIG. En d'autres termes, quel que soit le nombre d'appareils MIG créés (ou mis à la disposition du conteneur), un seul processus CUDA ne peut énumérer qu'un seul appareil MIG .

       Une application CUDA considère un CI et son GI parent comme un périphérique CUDA. CUDA ne peut utiliser qu'un seul CI, si plusieurs CI sont visibles, le premier CI disponible sera choisi. Pour résumer, il y a deux contraintes :

  • CUDA ne peut énumérer qu'une seule instance de calcul ;
  • CUDA n'énumérera pas les GPU non MIG si les instances de calcul sur tout autre GPU sont énumérées ;

Prise en charge étendue CUDA_VISIBLE_DEVICES de MIG. Selon la version du pilote utilisé, les deux formats suivants sont pris en charge :

  • Sous pilotes >= R470(470.42.01+), chaque périphérique MIG se voit attribuer un UUID GPU au format suivant : MIG-<UUID> ;
  • pilotes > R470 (tels que R450 et R460), énumère chaque périphérique MIG en spécifiant un CI et le GI parent correspondant. Le format suit la convention suivante : MIG-<GPU-UUID>/<ID d'instance GPU>/<ID d'instance de calcul> ;
$ nvidia-smi -L        

GPU 0: A100-SXM4-40GB (UUID: GPU-5d5ba0d6-d33d-2b2c-524d-9e3d8d2b8a77)
  MIG 1g.5gb      Device  0: (UUID: MIG-c6d4f1ef-42e4-5de3-91c7-45d71c87eb3f)
  MIG 1g.5gb      Device  1: (UUID: MIG-cba663e8-9bed-5b25-b243-5985ef7c9beb)
  MIG 1g.5gb      Device  2: (UUID: MIG-1e099852-3624-56c0-8064-c5db1211e44f)
  MIG 1g.5gb      Device  3: (UUID: MIG-8243111b-d4c4-587a-a96d-da04583b36e2)
  MIG 1g.5gb      Device  4: (UUID: MIG-169f1837-b996-59aa-9ed5-b0a3f99e88a6)
  MIG 1g.5gb      Device  5: (UUID: MIG-d5d0152c-e3f0-552c-abee-ebc0195e9f1d)
  MIG 1g.5gb      Device  6: (UUID: MIG-7df6b45c-a92d-5e09-8540-a6b389968c31)
GPU 1: A100-SXM4-40GB (UUID: GPU-0aa11ebd-627f-af3f-1a0d-4e1fd92fd7b0)
  MIG 2g.10gb     Device  0: (UUID: MIG-0c757cd7-e942-5726-a0b8-0e8fb7067135)
  MIG 2g.10gb     Device  1: (UUID: MIG-703fb6ed-3fa0-5e48-8e65-1c5bdcfe2202)
  MIG 2g.10gb     Device  2: (UUID: MIG-532453fc-0faa-5c3c-9709-a3fc2e76083d)

4. Fichiers de configuration MIG pouvant être utilisés

Nous ne pouvons pas configurer MIG avec désinvolture, NVIDIA a des fichiers de configuration à utiliser pour MIG

Parce que j'utilise l'A100, le fichier de configuration MIG de l'A100 est utilisé ici, comme suit :
Veuillez ajouter une description de l'image

Les fichiers de configuration pris en charge par A100-SXM4-40GB sont indiqués dans le tableau ci-dessous. Pour A100-SXM4-80GB, le nom du profil varie en fonction du ratio de mémoire - par exemple 1g.10gb, 1g.10gb+me, 1g.20gb, 2g.20gb, 3g.40gb, 4g.40gb et 7g.80gb.

insérez la description de l'image ici



Merci d'avoir lu, voici le blog de Congshanruoshui !


insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/qq_31985307/article/details/129903676
conseillé
Classement