Bonjour,
Je suis actuellement à la chasse à un bug tenace qui me résiste depuis quelques jours. J'ai une application destinée à tourner sur un cluster, qui mélange pthreads et MPI.
De ce que j'ai pu expérimenter, la "thread-safitude" de MPI n'est pas quelque chose sur lequel il faut compter, notamment quand on passe d'une implémentation à une autre de MPI.
Bref, j'ai pour habitude de protéger mes appels MPI par des sémaphores et tout va bien. Mais là, j'ai maintenant la certitude qu'il y a autre chose. Avec MPI sans threads sur autant de process que je veux (sur un cluster comme en local), tout est OK.
Avec un seul process MPI et des threads, tout est OK.
Dès le moment ou je passe en MPI+pthreads, j'ai des petits soucis.
Par ailleurs, j'ai déjà investigué pour voir si'il y avait des race conditions, notamment avec helgrind et les outils de Intel, rien. J'ai passé valgrind et je m'en sors avec 0 erreurs et 0 warnings. Tout tourne mais certaines données se perdent lors du transfert entre noeuds.
Bref, à défaut de vous balancer l'énorme quantité de code et de pouvoir fournir un "repro case" (le problème n'apparaît pas toujours au même moment), je me demandais si certains parmi vous auraient des expériences avec MPI en multi thread, et quelles précautions il est bon de prendre au delà de celles que j'ai déjà données... !
Merci !
Partager