J'ai exécuté la commande ldd sur un exécutable créé par Open MPI. Il montre une référence à libpthread.so En utilisant la variable LD_PRELOAD j'ai créé ma propre implémentation de pthread_create, mais à partir de la sortie il semble que l'implémentation MPI n'appelle pas pthread_create comme je l'avais prévu. Pourquoi ldd affiche-t-il pthread de sorte que le fichier est en sortie s'il n'est pas utilisé? Est-ce que MPI ouvert n'utilise pas un thread MPI distinct pour chaque nœud pour implémenter la fonctionnalité?Sortie ldd affichant le fichier objet partagé dont la fonction n'est pas appelée
1
A
Répondre
0
Si le binaire n'est pas lié à --as-needed
, il obtiendra une référence à chaque bibliothèque donnée sur la ligne de commande de liaison, qu'elle soit réellement nécessaire ou non. Passez -Wl,--as-needed
à gcc pour lui faire passer l'option à ld.
1
MPI utilise des processus, pas des threads. Donc non, Open MPI n'utilisera pas un thread MPI séparé par nœud.