ce n´était pas tant des questions précise, qu´une envie de voir ce que les participant au forum font dans ce domaine, déclenchée par cette vision de rêve qu´est la carte Tesla.
Pour ma part, je me suis essayé principalement à 3 choses :
- un peu d´OpenMP pour mon programme de TIPE. Avec l´avantage pour cette bibliothèque que contrairement à la plupart des autre méthode, le code de base (non parallèle) n´a pratiquement pas à être touché. C´est-à-dire qu´on mets des pragma en C qui disent au compilo : "tu peut paralléliser telle boucle de telle manière". Bien sûr, dans ce modèle c´est assez limité, mais c´est vraiment très simple à mettre en œuvre.
Combiné avec le compilo Intel (récemment passé en version 10, et toujours gratuit sous linux pour une utilisation non commerciale) qui est capable de vectoriser tout seul certaines boucles et de paralléliser tout seul le code dans certaines circonstance, j´ai pu avoir un gain presque de 2 sur deux cœurs par rapport à une version sans ces optimisation (mais avec le même compilateur) pour mon TIPE (le programme s´y prêtait bien si vous vous en souvenez, car il s´agissait de simuler des particules interagissant entre elle par le biais de forces électrostatique).
Bon, il y a aussi le cas trivial ou on peut découper en morceau facilement la tâche d´un programme. Dans ce cas, là, il m´arrive d´utiliser des fork sous linux avec des passages de données via des pipe. Pourquoi pas des thread ? parce que j´utilise du Caml dans ces moment là, et qu´il n´y a pas de bon support pour les thread en caml.
Et enfin, cette année, j´ai travaillé en cours sur NGrid, un framework de calcul distribué qui est pour l´instant assez instable (le cours consistait à développer le framework, pas à développer avec), mais dont l´archi vise à enlever le plus possible de travail au programmeur final, tout en abstrayant la partie physique en dessous de la grille de calcul.
Tout ça me rappelle qu´il y a quelques temps (en sup), pour résoudre le programme des N-reines (placer N reines sur un échiquier N*N sans qu´elles soient en prise) pour des N grand (ici grand veut dire au dessus de 20), j´avais écrit un programme qui découpait le plateau à explorer en plusieurs secteur, écrivait un fichier de configuration pour un autre programme que j´avais écrit et j´ai distribué à tout mes camarades de classe une tranche du calcul. Ça a été ma seul expérience de calcul distribué sur plusieurs machine. Mais ce n´était pas très automatisé.
Tout ça pour dire qu´alors qu´on a de plus en plus de cœurs de calcul dans nos PC, on n´a toujours pas ni la théorie, ni les outils simple qu´il faudrait pour les utiliser facilement (ie, sans travail de la part du programmeur, un peu comme les outils de Intel).
Mais c´est vrai que, en regardant la thèse de godrik (bon, la il y a peut d´information encore) je me dit que c´est un peu le genre de chose qui peuvent être très utile : le programmeur utilise des outils dont il a l´habitude et par magie, ils sont parallélisés.
bref, et enfin, je signale à ceux qui ne connaisse pas, l´existence de JoCaml, une version d´OCaml qui permet de faire du join-calcule en OCaml (donc du calcul concurrent (sur une machine) ou distribué (sur plusieurs). Mais je n´ai pas encore testé.