5.3. Les méthodes de partage GPU
« Red Hat et NVIDIA ont développé des mécanismes de concurrence et de partage GPU pour simplifier l’informatique accélérée par GPU sur un cluster dédié OpenShift au niveau de l’entreprise.
Les applications ont généralement des exigences de calcul différentes qui peuvent laisser les GPU sous-utilisés. Fournir le bon nombre de ressources de calcul pour chaque charge de travail est essentiel pour réduire les coûts de déploiement et maximiser l’utilisation du GPU.
Il existe des mécanismes de concurrence pour améliorer l’utilisation des GPU, allant des API de programmation aux logiciels système et au partitionnement matériel, y compris la virtualisation. La liste suivante montre les mécanismes de concurrence du GPU:
- Calcul des flux d’architecture de dispositifs unifiés (CUDA)
- Tranchant du temps
- CUDA Multi-Process Service (MPS)
- GPU multi-instance (MIG)
- La virtualisation avec vGPU
Ressources supplémentaires
5.3.1. Flux CUDA Copier lienLien copié sur presse-papiers!
Compute Unified Device Architecture (CUDA) est une plate-forme informatique parallèle et un modèle de programmation développé par NVIDIA pour l’informatique générale sur les GPU.
Le flux est une séquence d’opérations qui s’exécute en ordre de problème sur le GPU. Les commandes CUDA sont généralement exécutées de manière séquentielle dans un flux par défaut et une tâche ne démarre pas tant qu’une tâche précédente n’est pas terminée.
Le traitement asynchrone des opérations sur différents flux permet l’exécution parallèle des tâches. La tâche émise dans un flux s’exécute avant, pendant ou après qu’une autre tâche soit émise dans un autre flux. Cela permet au GPU d’exécuter plusieurs tâches simultanément dans aucun ordre prescrit, ce qui permet d’améliorer les performances.
Ressources supplémentaires
5.3.2. Tranchant du temps Copier lienLien copié sur presse-papiers!
GPU time-slicing interleva les charges de travail programmées sur les GPU surchargés lorsque vous exécutez plusieurs applications CUDA.
Il est possible de définir un ensemble de répliques pour un GPU, chacun pouvant être distribué indépendamment à un pod pour exécuter des charges de travail. Contrairement au GPU multiinstance (MIG), il n’y a pas d’isolement de mémoire ou de défaut entre les répliques, mais pour certaines charges de travail, c’est mieux que de ne pas partager du tout. En interne, le chronométrage GPU est utilisé pour multiplexer les charges de travail à partir de répliques du même GPU sous-jacent.
Il est possible d’appliquer une configuration par défaut à l’échelle du cluster. Il est également possible d’appliquer des configurations spécifiques aux nœuds. À titre d’exemple, vous pouvez appliquer une configuration de découpage de temps uniquement aux nœuds dotés de GPU Tesla T4 et ne pas modifier les nœuds avec d’autres modèles GPU.
Il est possible de combiner ces deux approches en appliquant une configuration par défaut à l’échelle du cluster, puis d’étiqueter les nœuds pour donner à ces nœuds une configuration spécifique à chaque nœud.
5.3.3. CUDA Multi-Process Service Copier lienLien copié sur presse-papiers!
CUDA Multi-Process Service (MPS) permet à un seul GPU d’utiliser plusieurs processus CUDA. Les processus s’exécutent en parallèle sur le GPU, éliminant ainsi la saturation des ressources de calcul GPU. Le MPS permet également l’exécution simultanée, ou le chevauchement, des opérations du noyau et de la copie de mémoire à partir de différents processus pour améliorer l’utilisation.
Ressources supplémentaires
5.3.4. GPU multi-instance Copier lienLien copié sur presse-papiers!
En utilisant le GPU Multi-instance (MIG), vous pouvez diviser les unités de calcul GPU et la mémoire en plusieurs instances MIG. Chacune de ces instances représente un périphérique GPU autonome du point de vue du système et peut être connectée à n’importe quelle application, conteneur ou machine virtuelle fonctionnant sur le nœud. Le logiciel qui utilise le GPU traite chacune de ces instances MIG comme un GPU individuel.
Le MIG est utile lorsque vous avez une application qui ne nécessite pas la pleine puissance d’un GPU entier. La fonctionnalité MIG de la nouvelle architecture NVIDIA Ampere vous permet de diviser vos ressources matérielles en plusieurs instances GPU, dont chacune est disponible pour le système d’exploitation en tant que GPU indépendant compatible CUDA.
La version 1.7.0 et supérieure de NVIDIA GPU Operator fournit une prise en charge MIG pour les cartes A100 et A30 Ampere. Ces instances GPU sont conçues pour prendre en charge jusqu’à sept applications CUDA indépendantes afin qu’elles fonctionnent complètement isolées avec des ressources matérielles dédiées.
Ressources supplémentaires
5.3.5. La virtualisation avec vGPU Copier lienLien copié sur presse-papiers!
Les machines virtuelles (VM) peuvent accéder directement à un seul GPU physique à l’aide de NVIDIA vGPU. Il est possible de créer des GPU virtuels qui peuvent être partagés par des machines virtuelles à travers l’entreprise et accessibles par d’autres appareils.
Cette capacité combine la puissance des performances GPU avec les avantages de gestion et de sécurité fournis par vGPU. Les avantages supplémentaires fournis par vGPU comprennent la gestion proactive et la surveillance de votre environnement de VM, l’équilibrage de la charge de travail pour les charges de travail mixtes VDI et calcul, et le partage des ressources sur plusieurs machines virtuelles.
Ressources supplémentaires