Quoi de plus tentant pour un programmeur que d'exploiter les possibilités de sa nouvelle machine multi-coeur flambant neuve ? Pour cela OpenMP propose une solution relativement aisée et portable.
La programmation parallèle est depuis longtemps largement répandue. La plupart des interfaces l'exploitent pour éviter que l'utilisateur n'ait l'impression qu'une application reste bloquée lorsqu'elle effectue un travail important. Nous parlons là des "vieilles" applications multithreadées, mais fonctionnant sur un seul processeur, c'est-à-dire sans gain de performances globales, ou même plutôt avec une perte de performances globales, puisque le système perd du temps et des ressources pour la gestion et l'ordonnancement des threads. Aujourd'hui le multi-coeur se généralise et donne une nouvelle dimension à la programmation parallèle. Il n'est alors plus question de se préoccuper essentiellement du confort de l'utilisateur au détriment des performances, mais bien d'exploiter les possibilités du matériel pour un gain de performances brutes. Il est évident qu'une application qui ne tourne que sur un seul coeur d'un CPU multi-coeur sera même moins performante que la même application tournant sur un CPU à l'ancienne, sans doute plus rapidement cadencé. En revanche si le flux d'exécution de l'application se répartit sur tous les coeurs, alors le gain de performance sera directement multiplié par le nombre de cœurs utilisés. La question est de savoir comment répartir ce flux d'exécution. OpenMP est une excellente réponse.
Frédéric Mazué