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
Annuaire d'articles
Introduction détaillée aux fonctionnalités avancées de nvidia MIG (2)
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 Streams
et MPS
font 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.
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.
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 :
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.
Merci d'avoir lu, voici le blog de Congshanruoshui !