Le projet peut être découpé en trois étapes : une étude générale sur le parallélisme, une étude sur les différentes technologies de parallélisation, et enfin une étape d'implémentation, tests et optimisations sur les technologies choisies.
L'étude générale consiste à prospecter sur le parallélisme ; les grands principes derrière ce terme, ainsi que les technologies existantes. Les technologies retenues sont :
- GPGPU (CUDA, OpenCL) : Effectuer des calculs non destinés à l'affichage sur une ou plusieurs cartes graphiques
- Machines distribuées (MPI) : Distribuer les calculs sur plusieurs machines (cluster)
- Multithreading : Utiliser les différents cœurs de calculs d'un processeur
- SIMD (SSE, AVX) : Faire des calculs sur des vecteurs plutôt que sur des scalaires
Dans un second temps, nous nous sommes formés sur les architectures, qui requièrent des savoir-faire différents. De plus, dans le but de pouvoir les comparer entre elles, une méthodologie de test est rédigée. Elle définit précisément comment mesurer le débit, et les paramètres étudiés.
La dernière étape du projet consiste à adapter et à optimiser l'algorithme de tramage sur les différents supports. Le langage de base utilisé est le C, accompagné des bibliothèques adaptées.
Des implémentations mélangeant plusieurs de ces architectures sont aussi envisagées, afin d'améliorer encore le facteur d'accélération. C'est au cours de cette étape que le dossier technique est rédigé, contenant les résultats et leurs analyses. Il permettra à l'entreprise de faire un choix sur la technologie la plus prometteuse, qu'elle intégrera à sa suite logicielle.