Hello !
Je suis en train de développer un code de programmation dynamique relativement simple, mais potentiellement très gourmand en temps de calcul. Une des pistes pour ne pas avoir à attendre la Saint Glin-Glin à chaque simulation est de paralléliser les calculs. Je ne me suis pas encore trop penché sur la question, mais l'algo a des propriétés qui rendent de manière évidente (j'exagère, il faut que je creuse) la solution envisageable. Bon, je n'ai jamais fait ça mais j'ai des connaissances de base, acquises pendant mes études mais jamais mises en pratique, en programmation multithreads et en parallélisme. Si je partais sur un code devant tourner sur un unique PC multi-processeurs je m'en sortirais en lisant lire beaucoup de docs et aussi en faisant appel à vous / à d'autres.
Mais le client dispose d'un "cluster". Non, pour l'instant je n'en sais pas plus, j'imagine que ce sont des Sun mais voilà tout. Pour moi ce ne doit être rien d'autre qu'un paquet de machines en réseau, avec un environnement uniforme et dédiées aux calculs parallèles et des demandes administratives de réservation de temps d'utilisation à faire. Je peux me tromper. Avant que je ne me renseigne + avant : sur un unique PC, c'est "simple", on lance des threads, on les coordonne et on les fait communiquer en mémoire. Sur plusieurs machines, un certain nombre de questions d'intendance se posent : comment coordonner, d'un point de vue technique, les calculs à travers le réseau ? En partageant des répertoires sur lesquels les machines poseraient/liraient des fichiers de données et de commande ? Par des "sockets" (là, je n'y connais rien) ? Y'a-t-il des frameworks implémentant les réponses à ce genre de questions et permettant de se concentrer surtout sur les questions algorithmiques ?
Bon, voilà, mes premières recherches Google&Wikipedia n'ont pas été très fructueuses. La question n'est pas ultra-urgente et je ferai des recherches plus complètes dans quelques semaines (et le client en question aura sûrement des infos), mais si des gens ici sont intéressés dès maintenant pour partager leur savoir, chouette ! Cela m'intéresse aussi à titre personnel, pour ma culture générale.
Dernières précisions :
* je suis en C++ sous Windows/VC++ 6.0 pour l'instant, mais porter le code sous un autre langage/un autre environnement ne me poserait pas de problème si cela me fait gagner du temps. De toutes façons, ça finira sous Unix...
* pas de réponse "ne pourrais-tu pas utiliser d'autres algos / optimiser le tien ?" svp, je maîtrise bien cet aspect du problème et le contexte blablabla
Message édité par boulgakov le 12-11-2006 à 15:45:52