Bonjour,
voilà mon problème. J'ai un programme qui s'exécute en monotâche et linéairement. C'est un calcul sur un maillage contenant N cellules pour résoudre des EDP. Il est constitué de trois boucles :
1) la première boucle est un simple calcul linéaire, donc elle est rapide.
2) la seconde est plus lente, car pour chaque cellule, elle nécessite de calculer une inversion de matrice. Cette boucle a besoin des données de chaque cellule calculées en 1). Autrement dit, la première boucle calcule p paramètres, qui doivent être passés comme condition initiale dans la seconde boucle pour calculer n paramètres supplémentaires.
3) la troisième boucle a besoin, à chaque cellule, des p paramètres de la boucle 1) et des n paramètres de la boucle 2) pour obtenir k paramètres.
En fait, je songe à paralléliser ce code, dans la mesure où le temps d'exécution est très rapide pour la première boucle, mais lente pour les 2 et 3. Dans un programme linéaire, je subis toute la lenteur de ces deux dernières boucles, tandis qu'en parallélisant, je pourrais lancer la boucle 2 alors que la 1 n'a pas fini, et la boucle 3 alors que la 2 n'est pas fini.
Comment utiliser les thread dans ce cas ? cela nécessite de nombreuses notions qui dépassent un peu mes compétences, par exemple comment passer des données d'un thread à un autre....
Quelqu'un pourrait m'aider s'il vous plait ?
Je vous remercie par avance.
Cordialement.
Partager