title: Parallélisation automatique
text: # Parallélisation automatique
  
  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érationnel pour un grand nombre de types d'algorithmes séquentiels, bien que quelques techniques soit mises en place depuis les années 2000. 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
  
  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.
  
  