En calcul parallèle , une charge de travail ou un problème facilement parallélisable (également appelé parallélisable à l' extrême , parfaitement parallélisable , idéalement parallélisable ou agréablement parallélisable ) est un problème pour lequel il est nécessaire de le diviser en plusieurs tâches parallèles sans effort ou presque. Cela est dû à une dépendance minimale ou nulle à la communication entre les tâches parallèles, ou à l'échange de résultats entre elles.
Ces problèmes diffèrent de ceux du calcul distribué , qui nécessitent une communication entre les tâches, notamment pour la transmission des résultats intermédiaires. Ils sont plus faciles à résoudre sur des fermes de serveurs dépourvues de l'infrastructure spécifique d'un véritable supercalculateur . Ils sont parfaitement adaptés aux grandes plateformes de calcul collaboratif sur Internet, telles que BOINC , et souffrent moins du ralentissement lié à la parallélisation . À l'inverse, les problèmes intrinsèquement séquentiels ne peuvent être parallélisés.
Un exemple courant de problème facilement parallélisable est le rendu vidéo 3D effectué par un processeur graphique , où chaque image (méthode directe) ou pixel ( méthode de lancer de rayons ) peut être traité indépendamment. Certaines formes de craquage de mots de passe constituent un autre exemple de tâche facilement parallélisable qui se distribue aisément sur des unités centrales de traitement , des cœurs de processeur ou des clusters.
homotopie polynomiale . » Le terme apparaît pour la première fois dans un ouvrage de 1986 sur les multiprocesseurs, écrit par Cleve Moler , le créateur de MATLAB , qui en revendique l'invention.Un autre terme, agréablement parallèle , a gagné en popularité, peut-être pour éviter les connotations négatives d’embarras au profit d’une réflexion positive sur la parallélisation des problèmes : « Bien sûr, il n’y a absolument rien d’embarrassant dans ces programmes. »
Exemples
Un exemple simple consiste à servir des données statiques. Il suffirait de peu d'efforts pour que de nombreuses unités de traitement produisent le même ensemble de bits. En effet, le célèbre problème « Hello World » pourrait facilement être parallélisé, moyennant peu de considérations de programmation et un faible coût de calcul.
Voici quelques exemples de problèmes étrangement similaires :
- Méthode de Monte Carlo
- Requêtes de bases de données relationnelles distribuées utilisant le traitement d'ensembles distribués .
- Intégration numérique
- Traitement en masse de fichiers non liés de nature similaire en général, comme le redimensionnement et la conversion de galeries photos.
- L' ensemble de Mandelbrot , le bruit de Perlin et les images similaires, où chaque point est calculé indépendamment.
- Rendu des images de synthèse . En animation par ordinateur , chaque image ou pixel peut être rendu indépendamment .
- Quelques recherches par force brute en cryptographie . Des exemples notables dans le monde réel incluent distributed.net et les systèmes de preuve de travail utilisés dans les cryptomonnaies .
- Recherches BLAST en bioinformatique avec des bases de données fractionnées.
- Les systèmes de reconnaissance faciale à grande échelle comparent des milliers de visages acquis arbitrairement (par exemple, une vidéo de sécurité ou de surveillance via une télévision en circuit fermé ) avec un nombre tout aussi important de visages stockés précédemment (par exemple, une galerie de criminels ou une liste de surveillance similaire ).
- Simulations informatiques comparant de nombreux scénarios indépendants.
- Algorithmes génétiques .
- Calculs d'ensemble de la prévision numérique du temps .
- Simulation et reconstruction d'événements en physique des particules .
- L' algorithme des carrés marchants .
- Étape de tamisage du tamis quadratique et du tamis du corps des nombres .
- Étape de croissance des arbres de la technique d'apprentissage automatique de forêt aléatoire .
- Transformée de Fourier discrète où chaque harmonique est calculée indépendamment.
- Réseaux neuronaux convolutifs fonctionnant sur GPU .
- Recherche parallèle en programmation par contraintes
Mises en œuvre
- En R (langage de programmation) , le package SNOW (Simple Network of Workstations) implémente un mécanisme simple permettant d'utiliser un ensemble de stations de travail ou un cluster Beowulf pour des calculs massivement parallèles. D'autres packages R similaires existent, tels que « future », « parallel », etc.