La modélisation de structures semi-cristallines de polymères, donc la recherche de conformations d'énergie minimale implique une étape de calculs d'énergie après modifications systématiques (mais limitées à des régions de l'espace des paramètres ayant un sens physique) et simultanées de toutes les nombreuses variables concernées (pour exemple: valeurs des distances des liaisons chimiques, des angles, des angles de torsion, distances des chaînes polymériques les unes par rapport aux autres, orientations de ces chaînes, géométrie des cellules du réseau semi-cristallin...). Il va sans dire que cette phase de scan est l'étape du projet coûteuse en temps.
Afin de minimiser le temps de calcul, jŒai été intéressée par une optimisation de mon code, réalisée sur un exemple test sur des serveurs de département Silicon Graphics.
65% /8 + 35% = 42%
L'exécution s'effectuera dans le meilleur des cas en un peu moins que la moitié du temps de la version scalaire. Pour la version avec 8 processeurs, le speedup n'est pas intéressant.
C$COPYIN /common block/ qui recopie le common block donné à
l'ensemble des processeurs.
C$DOACROSS LOCAL(liste de variable) qui demande au compilateur
de générer du code en version parallèle en gardant les variables
indiquées en copie locale à chaque processeur.
Le parallélisme du scan des cellules étant atteint, on a le choix entre deux stratégies:
C'est cette dernière variante qui a été retenue puisque le temps nécessaire pour scanner une cellule n'est pas le même d'une cellule à l'autre. Compilation et exécution Après compilation, l'exécution d'un test court donne les résultats suivants:
On obtient donc un speedup quasi-linéaire. LŒécart tient au fait qu'il y a une partie d'initialisation et d'écriture des résultats qui s'effectue en mode scalaire. De plus il existe un temps d'overhead causé par le démarrage des sections parallélisées.
Les résultats obtenus sur plusieurs échantillons ont montré la justesse des calculs. On peut donc s'attaquer à des problèmes réels. Conclusion Une fois l'effort de parallélisation effectué, il est possible d'exécuter le même code sans modification sur un nombre quelconque de processeurs ainsi que sur d'autres processeurs plus rapide du type TFP.
Cet exemple montre qu'il est possible de paralléliser un code existant sans devoir le réécrire et ceci à moindre frais de modifications. D'autre part le gain de temps obtenu se traduit immédiatement en gain de travail pour l'analyse de problèmes nécessitant autrement des mois de calculs.

Je remercie particulièrement pour leur aide Francis Lapique du SIC et Paride Zizzari, Silicon Graphics, tél.: 621 9273/9250, e-mail: paride@lausanne.sgi.com n