CARRI Systems : Le calcul haute performance démystifié

Qu'est ce qu'un cluster ?

Un cluster informatique, ou grappe de serveurs, est un groupe d’ordinateurs (appelés « nœuds ») interconnectés qui travaillent ensemble pour fonctionner comme un seul système unifié et puissant. Au lieu d’avoir un seul serveur qui gère toutes les tâches, un cluster distribue la charge de travail sur plusieurs machines.

Pourquoi utiliser un cluster
Détails
Améliorer les performances (High Performance Computing - HPC)
En combinant la puissance de calcul de plusieurs nœuds, un cluster peut résoudre des problèmes complexes et effectuer des simulations intensives beaucoup plus rapidement qu'une seule machine. C'est crucial pour la recherche scientifique, l'intelligence artificielle, l'analyse de données massives, etc.
Assurer la haute disponibilité (High Availability - HA)
Si un nœud du cluster tombe en panne, les autres nœuds peuvent prendre le relais de ses tâches sans interruption de service. Cela garantit une continuité des opérations, essentielle pour les applications critiques.
Scalabilité
Il est plus facile d'ajouter ou de retirer des nœuds à un cluster pour adapter sa capacité de calcul aux besoins fluctuants, sans avoir à remplacer l'ensemble du système.
Optimisation des coûts
Parfois, il est plus économique de construire un cluster avec des serveurs moins chers que d'acheter un unique superordinateur très cher.

Quels Systèmes d'Exploitation (OS) utilisons nous pour nos Serveurs et Clusters ?

Dans les clusters HPC, la performance et la stabilité sont primordiales. Linux est le système d’exploitation quasi exclusif en raison de sa flexibilité, de son noyau optimisé, de sa capacité à gérer un grand nombre de cœurs et de mémoire, de son coût (souvent gratuit), et de l’énorme écosystème de logiciels scientifiques et d’outils de gestion de cluster qui y sont développés.

Les distributions les plus couramment utilisées dans les clusters HPC sont :

  • Red Hat Enterprise Linux (RHEL) / AlmaLinux / Rocky Linux : Pour leur stabilité, leur support à long terme et leur adoption massive dans les environnements professionnels et universitaires.
  • SUSE Linux Enterprise Server (SLES) : Également très utilisé pour sa robustesse.
  • Ubuntu Server : Gagne en popularité pour sa facilité d’administration et sa communauté dynamique.
Pourquoi utiliser un cluster
Détails
Linux (Distribution serveur)
  • Red Hat Enterprise Linux (RHEL) / CentOS Stream / Fedora : RHEL est une distribution commerciale très stable, avec un support à long terme, largement utilisée en entreprise. CentOS Stream est sa version communautaire en développement continu, et Fedora est la version amont.
  • Ubuntu Server : Très populaire pour sa facilité d'utilisation, sa grande communauté, et sa flexibilité. Souvent utilisé pour le cloud computing et les serveurs web.
  • Debian : Réputé pour sa stabilité et sa nature entièrement open source. Il sert de base à de nombreuses autres distributions, y compris Ubuntu.
  • SUSE Linux Enterprise Server (SLES) / openSUSE Leap : Une autre option Linux d'entreprise robuste, avec un bon support.
  • AlmaLinux / Rocky Linux : Des alternatives communautaires binaires-compatibles avec RHEL, conçues pour prendre le relais après l'évolution de CentOS vers CentOS Stream.
Microsoft Windows Server
Utilisé dans les environnements où les applications sont basées sur des technologies Microsoft (.NET, SQL Server, Exchange, Active Directory). Cet OS offre une interface graphique familière pour ceux habitués à Windows, bien que la plupart des tâches puissent être gérées via PowerShell.
VMware ESXi
Ce n'est pas un système d'exploitation de serveur généraliste à proprement parler, mais un hyperviseur bare-metal. Il s'installe directement sur le matériel du serveur et permet de créer et d'exécuter plusieurs machines virtuelles (VM) avec différents OS invités. Très utilisé dans les infrastructures de virtualisation et de cloud privé.

Vulgarisation

Les cartes SXM (et autres GPU pour clusters)

Lorsque l’on parle de « cartes SXM », on fait généralement référence aux GPU (Graphics Processing Units) de haute performance de NVIDIA, conçus spécifiquement pour le calcul intensif et l’intelligence artificielle dans les datacenters et les clusters HPC.

Contrairement aux cartes GPU grand public (comme les GeForce RTX) qui utilisent un connecteur PCIe standard, les cartes SXM (comme les NVIDIA A100, H100, ou V100 dans leurs versions SXM) sont montées sur des modules et connectées directement à la carte mère du serveur via l’interconnexion propriétaire NVLink.

Pourquoi utilise t-on les cartes graphiques (GPU) SXM et NVLink ?

Bande passante et latence : PCIe, même dans ses dernières versions (Gen 4, Gen 5), peut devenir un goulot d’étranglement pour la communication entre plusieurs GPU, ou entre les GPU et le CPU, dans des calculs très intensifs. NVLink offre une bande passante bien plus élevée et une latence beaucoup plus faible, permettant aux GPU de communiquer entre eux (et avec le CPU) beaucoup plus rapidement.

Topologie : Les cartes SXM sont souvent montées sur des cartes mères spéciales (par exemple, les cartes mères NVIDIA HGX) qui peuvent accueillir 4, 8, voire 16 GPU connectés via NVLink dans une topologie maillée (mesh) ou hybride cube-mesh, optimisant ainsi la communication directe entre tous les GPU sans passer par le CPU. Cela est crucial pour l’entraînement de grands modèles d’IA ou les simulations scientifiques massives.

Refroidissement : Le format SXM permet souvent des solutions de refroidissement plus robustes (liquide ou à air optimisé) et une densité de GPU plus élevée dans un même serveur.

Quels sont les autres types de GPU utilisées dans les clusters ?

Cartes GPU PCIe : Des GPU professionnels comme les NVIDIA A40, A6000, ou même certaines cartes RTX plus haut de gamme, ou les AMD Instinct MI series, peuvent être intégrées via des slots PCIe dans des serveurs standard. C’est une option plus flexible et moins coûteuse pour des clusters de taille moyenne ou des charges de travail moins exigeantes en interconnexion GPU-GPU ultra-rapide.

Quels sont les autres composants essentiels d'un cluster ?

Nœuds de calcul (Compute Nodes) : Ce sont les serveurs individuels qui composent le cluster. Ils contiennent les CPU (souvent des processeurs Intel Xeon ou AMD EPYC multi-cœurs), la RAM, et les GPU (comme les cartes SXM ou PCIe mentionnées). Chaque nœud exécute une partie de la tâche globale.

Nœuds de tête/maître (Head/Master Nodes) : Un ou plusieurs serveurs dédiés à la gestion du cluster. Ils sont responsables de la planification des tâches, de la surveillance des nœuds, de l’authentification des utilisateurs et de la distribution des travaux aux nœuds de calcul.

Système de stockage : Pour gérer les énormes quantités de données générées et utilisées par les applications HPC et IA.
Cela peut inclure :

  • Stockage parallèle haute performance : Des systèmes de fichiers distribués comme Lustre, GPFS (IBM Spectrum Scale) ou BeeGFS, optimisés pour la lecture/écriture simultanée par de nombreux nœuds.
  • Stockage objet/bloc : Pour des besoins de stockage à long terme ou pour des bases de données.
  • Stockage NVMe : Pour des performances d’E/S ultra-rapides directement sur les nœuds de calcul.

Qu'est ce que InfiniBand ?

InfiniBand est une norme de communication réseau haute performance conçue spécifiquement pour les environnements de calcul intensif (HPC – High Performance Computing), les centres de données et l’intelligence artificielle. Sa principale caractéristique est d’offrir une très faible latence (le temps de réponse est minimal) et un très haut débit (une grande quantité de données peut être transférée rapidement).

Faible Latence et Haut Débit : C’est la raison d’être d’InfiniBand. Alors que l’Ethernet standard est conçu pour des réseaux plus généralistes avec une latence plus élevée, InfiniBand est optimisé pour des communications ultra-rapides, essentielles pour les applications où les nœuds d’un cluster doivent échanger des données constamment et très rapidement. Les débits actuels peuvent atteindre 400 Gigabits par seconde (Gbps), voire plus avec les dernières générations.

RDMA (Remote Direct Memory Access – Accès Direct à la Mémoire à Distance) : C’est une fonctionnalité fondamentale d’InfiniBand. Le RDMA permet à un ordinateur d’accéder directement à la mémoire d’un autre ordinateur sur le réseau, sans impliquer le CPU ou le système d’exploitation de la machine cible. Cela réduit considérablement la charge sur les processeurs et la latence, car les données sont copiées directement de la mémoire d’un nœud à la mémoire d’un autre, sans passer par des étapes intermédiaires coûteuses en temps CPU.

Topologie de Fabric Commutée (Switched Fabric) : InfiniBand utilise une architecture où les nœuds sont connectés via des commutateurs (switches) dédiés, créant un réseau en « étoile » ou en « arbre gras » (fat tree). Cette topologie permet des chemins de communication multiples et non bloquants entre tous les nœuds, optimisant la bande passante et la redondance.

Conçu pour les Clusters : InfiniBand est le protocole d’interconnexion dominant dans le monde du HPC et des supercalculateurs. Il est idéal pour les clusters où des milliers de cœurs de processeurs (CPU et GPU) doivent travailler de concert sur une même tâche, nécessitant des échanges de données massifs et synchronisés.

Qualité de Service (QoS) : InfiniBand intègre des mécanismes de QoS pour prioriser différents types de trafic et garantir que les applications critiques reçoivent la bande passante et la faible latence nécessaires, même sous forte charge.

Un réseau InfiniBand nécessite des équipements spécifiques

  • Adaptateurs de Canal Hôte (HCA – Host Channel Adapter) : Ce sont les cartes réseau InfiniBand installées dans chaque serveur/nœud du cluster.
  • Commutateurs InfiniBand (InfiniBand Switches) : Des équipements réseau spécialisés qui connectent les HCA entre eux.
  • Câbles : Des câbles en cuivre ou en fibre optique, avec des connecteurs spécifiques (QSFP, par exemple), optimisés pour le haut débit et la faible latence.

Quels sont les logiciels utilisés communément dans le HPC (High-Performance Computing) chez CARRI Systems ?

Quels sont les logiciels utilisés pour les systèmes de gestion de charge de travail (Workload Managers / Schedulers) ?

Ces logiciels sont essentiels pour gérer l’exécution des « jobs » (tâches de calcul) sur le cluster. Ils allouent les ressources (CPU, GPU, RAM, temps de calcul) aux utilisateurs et aux jobs, gèrent les files d’attente et optimisent l’utilisation du cluster.

  • Slurm Workload Manager : Le plus populaire et le plus utilisé dans le monde du HPC. Open source, très flexible.
  • PBS Pro (Portable Batch System) : Commercial, très robuste, souvent utilisé dans les grands centres de calcul.
  • LSF (Load Sharing Facility) : Commercial (IBM Spectrum LSF), puissant et riche en fonctionnalités.
  • HTCondor : Pour le calcul distribué opportuniste (grid computing).

Quels sont les logiciels pour les bibliothèques de programmation parallèle ?

Ces bibliothèques permettent aux développeurs de créer des applications qui s’exécutent sur plusieurs cœurs/processeurs/nœuds simultanément.

  • MPI (Message Passing Interface) : La norme de facto pour la communication entre processus s’exécutant sur des nœuds différents (ou sur des cœurs différents sur le même nœud). Permet aux processus d’échanger des messages pour synchroniser et partager des données.
    • Implémentations courantes : Open MPI, MPICH, Intel MPI.
  • OpenMP (Open Multi-Processing) : Une API pour la programmation parallèle sur mémoire partagée (multithreading) au sein d’un même nœud. Permet d’exploiter les multiples cœurs d’un CPU ou les capacités d’un GPU.
  • CUDA (Compute Unified Device Architecture) / OpenCL :
    • CUDA : L’API et la plateforme de programmation de NVIDIA pour l’exécution de calculs sur leurs GPU (essentiel pour l’IA et de nombreux codes scientifiques).
    • OpenCL : Un framework ouvert pour la programmation parallèle sur différentes architectures de processeurs (CPU, GPU, FPGA), bien que moins dominant que CUDA pour les GPU NVIDIA.
  • OneAPI (Intel) : Une initiative d’Intel pour unifier la programmation sur diverses architectures (CPU, GPU, FPGA) avec un modèle de programmation basé sur SYCL.

Les logiciels compilateurs dans le domaine du HPC

Optimisés pour générer du code performant pour les architectures de serveurs et HPC.

  • GNU Compiler Collection (GCC) : Le compilateur open source standard (C, C++, Fortran).
  • Intel OneAPI DPC++/C++/Fortran Compilers : Compilateurs optimisés par Intel pour leurs propres processeurs et architectures.
  • PGI Compilers (maintenant NVIDIA HPC SDK) : Reconnus pour leurs performances sur les architectures NVIDIA.

Les bibliothèques numériques et scientifiques

Des collections de fonctions pré-optimisées pour des calculs mathématiques et scientifiques courants.

  • BLAS (Basic Linear Algebra Subprograms) & LAPACK (Linear Algebra Package) : Pour l’algèbre linéaire. Des implémentations optimisées (OpenBLAS, Intel MKL, BLIS) sont cruciales.
  • FFTW (Fastest Fourier Transform in the West) : Pour les transformées de Fourier rapides.
  • PETSc (Portable, Extensible Toolkit for Scientific Computation) : Pour la résolution d’équations différentielles partielles et d’algèbre linéaire.
  • ScaLAPACK : Version parallèle de LAPACK.

Quels sont les outils de surveillance et de profilage ?

Pour analyser les performances des applications et l’utilisation des ressources du cluster.

  • Ganglia, Prometheus, Grafana : Pour la surveillance des métriques système.
  • Darshan, CrayPat, NVIDIA Nsight Systems : Pour le profilage des applications parallèles et l’identification des goulots d’étranglement.

l’écosystème logiciel d’un cluster HPC est complexe et hautement spécialisé, visant à maximiser l’efficacité du calcul parallèle sur des infrastructures massives. Il serait difficile de vous citer tout les logiciels que nous utilisons. Pour des informations plus détaillées sur l’accompagnement de votre projet, vous pouvez contacter nos ingénieurs.

Qu'est-ce qu'un multi-GPU ?

Un système multi-GPU est une configuration informatique qui utilise plusieurs cartes graphiques pour traiter des données en parallèle. Cette approche permet de combiner la puissance de calcul de plusieurs processeurs graphiques (GPU) pour accomplir des tâches qui nécessitent une puissance de traitement graphique massive, comme le rendu 3D, les simulations scientifiques, et l’apprentissage automatique. [Image de cartes graphiques connectées entre elles]

Fonctionnement le concept de multi-gpu ?

Les systèmes multi-GPU fonctionnent grâce à des technologies de liaison qui permettent aux cartes graphiques de communiquer et de partager la charge de travail. Les principales technologies sont :

  • NVIDIA SLI (Scalable Link Interface) : Un protocole propriétaire qui permet de relier plusieurs cartes graphiques NVIDIA.

  • AMD CrossFire : La technologie équivalente d’AMD, conçue pour les cartes graphiques Radeon.

Ces technologies créent un pont entre les cartes pour qu’elles puissent fonctionner comme une seule unité de traitement graphique plus puissante. Cependant, pour que cela fonctionne correctement, les applications et les jeux doivent être spécifiquement optimisés pour tirer parti de cette configuration.

Quels sont les avantages et inconvénients d'une stations mutil-gpu ?

Les avantages d’un système multi-GPU sont l’augmentation spectaculaire de la puissance de calcul pour les applications compatibles, ce qui est idéal pour les créateurs de contenu, les chercheurs et les joueurs qui visent des performances maximales.

Les inconvénients incluent :

  • Coût élevé : Le prix de plusieurs cartes graphiques haut de gamme est considérablement plus élevé.

  • Problèmes de compatibilité : De nombreux jeux et applications ne sont pas conçus pour les configurations multi-GPU, ce qui peut entraîner des baisses de performances ou des problèmes graphiques.

  • Consommation d’énergie et chaleur : Plus de cartes signifie une plus grande consommation d’énergie et une production de chaleur accrue, nécessitant un système de refroidissement plus performant.

Intelligence Artificielle (IA) et Deep Learning

Les architectures comme NVIDIA Hopper™ avec ses Tensor Cores de 4ème génération ou les matrices AI de l’AMD Instinct™ sont fondamentales. Elles sont optimisées pour le calcul matriciel et la mémoire HBM à haute bande passante. Cela accélère massivement l’entraînement des modèles d’IA complexes, du traitement du langage naturel à la vision par ordinateur, rendant le développement d’IA à grande échelle viable.

HPC et Simulation Scientifique

Les GPU modernes avec leurs milliers de cœurs CUDA ou Stream Processors et leur mémoire HBM sont essentiels. Leur architecture de calcul parallèle permet de traiter simultanément des calculs flottants massifs pour la modélisation climatique, la dynamique moléculaire ou l’ingénierie. Cette puissance, combinée à des interconnexions comme NVLink™, réduit drastiquement les temps de simulation, propulsant la recherche scientifique.

Analyse de Données et Big Data

Les architectures GPU avec des unités de calcul parallèle massives et une mémoire à haute bande passante sont idéales. Elles accélèrent les opérations intensives en données comme le filtrage, l’agrégation, et les algorithmes d’apprentissage automatique non IA. Cela permet aux analystes de traiter des téraoctets d’informations en minutes plutôt qu’en heures, révélant des tendances cruciales pour la finance, la logistique et la recherche.

Réalité Virtuelle (VR) et Réalité Augmentée (AR)

La faible latence et la grande bande passante mémoire des GPU modernes sont vitales pour la RV/RA. Ils doivent générer deux images haute résolution à des fréquences très élevées (90+ Hz) pour une immersion fluide, évitant le motion sickness. Les cœurs Tensor/IA peuvent améliorer l’upscaling et la fovéation, tandis que les architectures parallèles gèrent les interactions complexes et le suivi de mouvement, offrant des expériences ultra-réalistes.

Création de Contenu Numérique et Rendu 3D

Les cœurs RT dédiés des NVIDIA RTX™ ou les capacités RDNA™ 3 sont cruciales pour le rendu 3D photoréaliste et le ray tracing. La grande quantité de VRAM (ex: 48Go) et la bande passante élevée permettent de gérer des scènes complexes. Les GPU accélèrent la création de contenu, la prévisualisation en temps réel et le montage vidéo 8K, optimisant considérablement les workflows des artistes et designers.

Jeu Vidéo

Les architectures modernes comme NVIDIA Ada Lovelace™ ou AMD RDNA™ 3, avec leurs cœurs RT dédiés et leurs Tensor Cores, sont cruciales. Elles accélèrent le ray tracing, simulant la lumière réaliste, et l’upscaling via DLSS/FSR pour des mondes virtuels ultra-réalistes. Leur capacité de calcul parallèle assure des fréquences d’images élevées, indispensables pour une expérience de jeu fluide et immersive.

Usages

IA générative Modélisation et rendus 3D Entraînement et inférence en IA Contenus vidéo et streaming Visualisation de données et simulation |

Ils nous font confiance

Nos clients de longue date Des partenariats durables Une confiance renouvelée |

Inscrivez-nous à notre newsletter

Restez informé Restez compétitif |