La Parallélisation automatique est une étape de la compilation d'un programme qui consiste à transformer un code source écrit pour une machine séquentielle en un exécutable parallélisé pour ordinateur à Symmetric multiprocessing. L'objectif de la parallélisation automatique est de simplifier et de réduire la durée de développement des programmes parallèles, qui sont notablement plus compliqués à écrire que les programmes séquentiels mais permettent des gains de vitesse sur les machines parallèles.

Les compilateurs pour assurer cette parallélisation ne sont en 2010 pas opérationnels pour un grand nombre de types d'algorithmes séquentiels, bien que quelques techniques soient mises en place depuis les années 2000[1]. Les grandes différences entre architectures, notamment au niveau de la gestion de la mémoire, compliquent la faisabilité de tels compilateurs.

Technique mise en place

modifier

La plus grande partie du temps d'exécution d'un programme se situe au niveau des boucles qui le composent. C'est donc sur cette partie que les compilateurs assurant la parallélisation automatique vont intervenir. Ils tentent de séparer les instructions d'une boucle de sorte que ses itérations puissent être exécutées sur des processeurs distincts simultanément.

Les langages de programmation à vocation parallèle disposent en outre d'instructions au mieux implicites, ou à défauts explicites qui facilitent le travail du processeur. Les langages comme SISAL, Haskell version parallèle, et Mitrion-C pour FPGA implémentent de telles instructions.

Voir aussi

modifier

Articles connexes

modifier

Références

modifier
  1. Shen, John Paul and Mikko H. Lipasti (2005). Modern Processor Design: Fundamentals of Superscalar Processors. McGraw-Hill Professional. p. 561. (ISBN 0070570647). "However, the holy grail of such research - automated parallelization of serial programs - has yet to materialize. While automated parallelization of certain classes of algorithms has been demonstrated, such success has largely been limited to scientific and numeric applications with predictable flow control (e.g., nested loop structures with statically determined iteration counts) and statically analyzable memory access patterns. (e.g., walks over large multidimensional arrays of float-point data)."

📚 Artikel Terkait di Wikipedia

Multidimensional Expressions

Le MDX (de l'anglais Multidimensional Expressions, « expressions multidimensionnelles ») est un langage de requête pour les bases de données OLAP, analogue

Spline

{\displaystyle {\begin{array}{rrr}i&X_{i}&Y_{i}\\1&0{,}0&0{,}0000\\2&0{,}5&0{,}4794\\3&1{,}0&0{,}8415\\4&1{,}5&0{,}9975\\5&2{,}0&0{,}9093\\\end{array}}} h = [ 0

Marche aléatoire

\left({\begin{array}{c}m\\{\frac {m+b-a}{2}}\end{array}}\right)=} ( m m − b + a 2 ) {\displaystyle \left({\begin{array}{c}m\\{\frac {m-b+a}{2}}\end{array}}\right)}

Intrication quantique

Dąbrowski, M., Parniak, M., & Wasilewski, W. (2017, June). Realization of multidimensional einstein-podolsky-rosen paradox between single photon and atomic spin-wave

Transformée de Hadamard

{\displaystyle H_{1}={\frac {1}{\sqrt {2}}}{\begin{pmatrix}{\begin{array}{rr}1&1\\1&-1\end{array}}\end{pmatrix}}} H 2 = 1 2 ( 1 1 1 1 1 − 1 1 − 1 1 1 − 1 − 1

Transfert radiatif

)=\left\{{\begin{array}{lcll}L_{\nu }^{+}(x)&si&-1<\mu <0&\;,\quad 0~sinon\\[0.6em]L_{\nu }^{-}(x)&si&~~0<\mu <1&\;,\quad 0~sinon\end{array}}\right.} L'équation

Module injectif

Academic Press, 1965, 273 p. (ISBN 0-12-499250-1) (en) Ulrich Oberst, « Multidimensional Constant Linear Systems », Acta Applicandae Mathematicae, vol. 20,‎

Matrice de Costas

intitulé « Costas array » (voir la liste des auteurs). Rafael A. Arce-Nazario et José Ortiz-Ubarri, « Multidimensional Costas Arrays and Their Enumeration