Calcul parallèle

Définition du calcul parallèle

Le calcul parallèle est un type d’architecture de calcul dans lequel plusieurs processeurs exécutent simultanément plusieurs calculs plus petits, ventilés à partir d’un problème global plus vaste et complexe.

Le diagramme de LLNL montre l'architecture générale de calcul parallèle utilisée pour décomposer des problèmes plus grands et complexes en calculs plus petits.
FAQ

Qu’est-ce que le calcul parallèle?

Le calcul parallèle fait référence au processus de décomposition de problèmes plus importants en parties plus petites, indépendantes, souvent similaires, qui peuvent être exécutées simultanément par plusieurs processeurs communiquant via une mémoire partagée, dont les résultats sont combinés une fois terminés dans le cadre d’un algorithme global. L’objectif principal du calcul parallèle est d’augmenter la puissance de calcul disponible pour accélérer le traitement des applications et la résolution de problèmes.

L’infrastructure informatique parallèle est généralement logée dans un seul centre de données où plusieurs processeurs sont installés dans un rack de serveur ; les demandes de calcul sont distribuées en petits morceaux par le serveur d’applications qui sont ensuite exécutées simultanément sur chaque serveur.

Il existe généralement quatre types de calcul parallèle, disponibles auprès de fournisseurs de calcul parallèle propriétaires et open source – parallélisme au niveau du bit, parallélisme au niveau de l’instruction, parallélisme de la tâche ou parallélisme au niveau du superword :

  • parallélisme au niveau du bit: augmente la taille du mot du processeur, ce qui réduit la quantité d’instructions que le processeur doit exécuter pour effectuer une opération sur des variables supérieures à la longueur du mot.
  • Parallélisme au niveau des instructions : l’approche matérielle fonctionne sur un parallélisme dynamique, dans lequel le processeur décide à l’exécution des instructions à exécuter en parallèle ; l’approche logicielle fonctionne sur un parallélisme statique, dans lequel le compilateur décide des instructions à exécuter en parallèle
  • Parallélisme des tâches: une forme de parallélisation du code informatique sur plusieurs processeurs qui exécute plusieurs tâches différentes en même temps sur les mêmes données
  • parallélisme au niveau des super mots : une technique de vectorisation qui peut exploiter le parallélisme du code en ligne

Les applications parallèles sont généralement classées comme un parallélisme à grain fin, dans lequel les sous-tâches communiquent plusieurs fois par seconde; un parallélisme à grain grossier, dans lequel les sous-tâches ne communiquent pas plusieurs fois par seconde; ou un parallélisme embarrassant, dans lequel les sous-tâches communiquent rarement ou ne communiquez jamais. Le mappage en calcul parallèle est utilisé pour résoudre des problèmes parallèles embarrassants en appliquant une opération simple à tous les éléments d’une séquence sans nécessiter de communication entre les sous-tâches.

La vulgarisation et l’évolution du calcul parallèle au 21ème siècle sont venues en réponse à la mise à l’échelle des fréquences des processeurs frappant le mur de puissance. Les augmentations de fréquence augmentent la quantité d’énergie utilisée dans un processeur, et la mise à l’échelle de la fréquence du processeur n’est plus possible après un certain point; par conséquent, les programmeurs et les fabricants ont commencé à concevoir des logiciels système parallèles et à produire des processeurs économes en énergie avec plusieurs cœurs afin de résoudre le problème de la consommation d’énergie et de la surchauffe des unités de traitement centrales.

L’importance du calcul parallèle continue de croître avec l’utilisation croissante des processeurs multicœurs et des GPU. Les GPU fonctionnent avec les processeurs pour augmenter le débit de données et le nombre de calculs simultanés au sein d’une application. En utilisant la puissance du parallélisme, un GPU peut effectuer plus de travail qu’un CPU dans un laps de temps donné.

Principes fondamentaux de l’architecture informatique parallèle

L’architecture informatique parallèle existe dans une grande variété d’ordinateurs parallèles, classés selon le niveau auquel le matériel prend en charge le parallélisme. L’architecture informatique parallèle et les techniques de programmation fonctionnent ensemble pour utiliser efficacement ces machines. Les classes d’architectures informatiques parallèles comprennent :

  • Calcul multicœur: Un processeur multicœur est un circuit intégré de processeur d’ordinateur avec deux cœurs de traitement distincts ou plus, chacun exécutant des instructions de programme en parallèle. Les cœurs sont intégrés sur plusieurs matrices dans un seul boîtier de puce ou sur une seule matrice de circuit intégré, et peuvent implémenter des architectures telles que le multithreading, le superscalaire, le vecteur ou le VLIW. Les architectures multicœurs sont classées comme homogènes, qui n’incluent que des cœurs identiques, ou hétérogènes, qui incluent des cœurs qui ne sont pas identiques.
  • Multitraitement symétrique: architecture matérielle et logicielle multiprocesseurs dans laquelle deux processeurs homogènes indépendants ou plus sont contrôlés par une seule instance de système d’exploitation qui traite tous les processeurs de manière égale et est connectée à une seule mémoire principale partagée avec un accès complet à toutes les ressources et périphériques communs. Chaque processeur dispose d’une mémoire cache privée, peut être connecté à l’aide de réseaux maillés sur puce et peut travailler sur n’importe quelle tâche, peu importe où les données de cette tâche se trouvent en mémoire.
  • Informatique distribuée: Les composants du système distribué sont situés sur différents ordinateurs en réseau qui coordonnent leurs actions en communiquant via du HTTP pur, des connecteurs de type RPC et des files d’attente de messages. Les caractéristiques importantes des systèmes distribués comprennent une défaillance indépendante des composants et la concurrence des composants. La programmation distribuée est généralement catégorisée en architectures client–serveur, à trois niveaux, à n niveaux ou peer-to-peer. Il y a beaucoup de chevauchement dans le calcul distribué et parallèle et les termes sont parfois utilisés de manière interchangeable.
  • Calcul massivement parallèle: fait référence à l’utilisation de nombreux ordinateurs ou processeurs informatiques pour exécuter simultanément un ensemble de calculs en parallèle. Une approche implique le regroupement de plusieurs processeurs dans un cluster informatique centralisé et étroitement structuré. Une autre approche est le grid computing, dans lequel de nombreux ordinateurs largement distribués travaillent ensemble et communiquent via Internet pour résoudre un problème particulier.

D’autres architectures informatiques parallèles comprennent les ordinateurs parallèles spécialisés, le calcul en grappes, le calcul en grille, les processeurs vectoriels, les circuits intégrés spécifiques à l’application, le calcul à usage général sur unités de traitement graphique (GPGPU) et le calcul reconfigurable avec des réseaux de portes programmables sur le terrain. La mémoire principale de toute structure informatique parallèle est soit une mémoire distribuée, soit une mémoire partagée.

Solutions et techniques logicielles de calcul parallèle

Des langages de programmation simultanés, des API, des bibliothèques et des modèles de programmation parallèle ont été développés pour faciliter le calcul parallèle sur du matériel parallèle. Certaines solutions et techniques logicielles de calcul parallèle incluent :

  • Point de contrôle d’application: une technique qui fournit une tolérance aux pannes pour les systèmes informatiques en enregistrant tous les états variables actuels de l’application, ce qui permet à l’application de restaurer et de redémarrer à partir de ce point en cas de défaillance. Le point de contrôle est une technique cruciale pour les systèmes informatiques hautement parallèles dans lesquels le calcul haute performance est exécuté sur un grand nombre de processeurs.
  • Parallélisation automatique: fait référence à la conversion de code séquentiel en code multithread afin d’utiliser plusieurs processeurs simultanément dans une machine multiprocesseur à mémoire partagée (SMP). Les techniques de parallélisation automatique comprennent l’Analyse, l’Analyse, la Planification et la Génération de code. Des exemples typiques de compilateurs et d’outils de parallélisation courants sont le compilateur Paradigm, le compilateur Polaris, le compilateur Rice Fortran D, le compilateur SUIF et le compilateur Vienna Fortran.
  • Langages de programmation parallèles : Les langages de programmation parallèles sont généralement classés comme mémoire distribuée ou mémoire partagée. Alors que les langages de programmation de mémoire distribuée utilisent le passage de messages pour communiquer, les langages de programmation de mémoire partagée communiquent en manipulant des variables de mémoire partagée.

Différence Entre le calcul parallèle et le Cloud Computing

Le Cloud computing est un terme général qui désigne la fourniture de services évolutifs, tels que des bases de données, le stockage de données, la mise en réseau, des serveurs et des logiciels, sur Internet, selon les besoins, à l’utilisation.

Les services de Cloud computing peuvent être publics ou privés, sont entièrement gérés par le fournisseur et facilitent l’accès à distance aux données, au travail et aux applications depuis n’importe quel appareil en tout lieu capable d’établir une connexion Internet. Les trois catégories de services les plus courantes sont l’Infrastructure en tant que Service (IaaS), la Plate-forme en tant que Service (PaaS) et le Logiciel en tant que Service (SaaS).

Le Cloud computing est un paradigme relativement nouveau dans le développement de logiciels qui facilite un accès plus large à l’informatique parallèle via de vastes grappes d’ordinateurs virtuels, permettant à l’utilisateur moyen et aux petites organisations de tirer parti des options de puissance de traitement et de stockage parallèles généralement réservées aux grandes entreprises.

Différence Entre le traitement parallèle et le calcul parallèle

Le traitement parallèle est une méthode de calcul dans laquelle des parties distinctes d’une tâche complexe globale sont divisées et exécutées simultanément sur plusieurs PROCESSEURS, réduisant ainsi le temps de traitement.

La division et l’attribution de chaque tâche à un processeur différent sont généralement exécutées par des informaticiens à l’aide d’outils logiciels de traitement parallèle, qui travailleront également à réassembler et à lire les données une fois que chaque processeur aura résolu son équation particulière. Ce processus s’effectue soit via un réseau informatique, soit via un ordinateur à deux processeurs ou plus.

Le traitement parallèle et le calcul parallèle se font en tandem, par conséquent les termes sont souvent utilisés de manière interchangeable; cependant, lorsque le traitement parallèle concerne le nombre de cœurs et de PROCESSEURS fonctionnant en parallèle dans l’ordinateur, le calcul parallèle concerne la manière dont le logiciel se comporte pour optimiser cette condition.

Différence Entre le calcul séquentiel et le calcul parallèle

Le calcul séquentiel, également appelé calcul série, fait référence à l’utilisation d’un seul processeur pour exécuter un programme qui est décomposé en une séquence d’instructions discrètes, chacune exécutée l’une après l’autre sans chevauchement à un moment donné. Le logiciel a traditionnellement été programmé séquentiellement, ce qui offre une approche plus simple, mais est considérablement limité par la vitesse du processeur et sa capacité à exécuter chaque série d’instructions. Lorsque les machines à un processeur utilisent des structures de données séquentielles, les structures de données pour les environnements de calcul parallèles sont simultanées.

La mesure des performances en programmation séquentielle est beaucoup moins complexe et importante que les points de référence en calcul parallèle, car elle ne consiste généralement qu’à identifier les goulots d’étranglement dans le système. Des repères en calcul parallèle peuvent être obtenus avec des cadres de test de benchmarking et de régression des performances, qui utilisent une variété de méthodologies de mesure, telles que le traitement statistique et les répétitions multiples. La capacité d’éviter ce goulot d’étranglement en déplaçant les données dans la hiérarchie de la mémoire est particulièrement évidente dans le calcul parallèle pour la science des données, le calcul parallèle d’apprentissage automatique et les cas d’utilisation de l’intelligence artificielle.

Le calcul séquentiel est effectivement le contraire du calcul parallèle. Alors que le calcul parallèle peut être plus complexe et coûter plus cher à l’avance, l’avantage de pouvoir résoudre un problème plus rapidement l’emporte souvent sur le coût d’acquisition de matériel informatique parallèle.

OmniSci Propose-t-il une Solution de Calcul parallèle ?

La plate-forme OmniSci exploite la puissance de calcul parallèle massive des GPU pour l’analyse des Big Data, donnant aux analystes et aux data scientists le pouvoir d’interroger, de visualiser et d’alimenter de manière interactive les flux de travail de science des données sur des milliards d’enregistrements en millisecondes. La plate-forme OmniSci est conçue pour surmonter les limites d’évolutivité et de performance des outils d’analyse hérités confrontés aux attributs d’échelle, de vitesse et de localisation des grands ensembles de données actuels.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *