11.10.1.1 : Optimisation



L'optimisation est une tâche ardue qui ne peut être effectuée dans de bonnes conditions et en obtenant une bonne accélération que si le programme en question a été un minimum conçu pour cela. Dans le cas contraire, l'optimisation consistera à réécrire le programme de dé part, mais en prenant en compte ce nouvel aspect, ce qui, en fin de compte coûtera un temps de développement bien supérieur à celui de la version non-optimisée.

Pour éviter ce problème, certaines parties du programme doivent être optimisées avant la phase de développement. Ainsi, le choix du format de données est crucial de ce point de vue, car tous les calculs seront basés sur celui-ci. Un mauvais choix de format de données impliquera une réécriture quasi-complète du programme en question et le développement de convertisseurs afin de lire les données du format précédent.

Cependant, quelques règles permettent d'éviter au mieux ces problèmes. Un format de données parallélisable qui permet la vectorisation sera composé préférentiellement de structures de tableaux plutôt que de tableaux de structures. Cela permettra de fournir des interfaces exposant des opérations collectives.

Le format de données lui-même ne peut être défini si aucun calcul ne l'utilise. En effet, c'est le type de calcul qui définit le stockage optimal des données, donc c'est la conception des calculs qu'effectue le programme qui détermine son format de données.

D'une manière générale la conception d'un programme ou d'une bibliothèque est toujours la partie clé, et ce, bien avant le développement proprement dit.