2010-04-16 6 views
1

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

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.