Выход LDD, показывающий общий объектный файл, функция которого не вызывается
-
27-09-2019 - |
Вопрос
Я управлял командой LDD на исполняемом файле, созданном открытым MPI. Он показывает ссылку на Libpthread.so, используя переменную ld_preload, я создал мою собственную реализацию pthread_create, но из его вывода, похоже, что реализация MPI не вызывает pthread_create, как я ожидал. Почему LDD показывает Pthread, так что файл на выходе, если оно не используется? Открыть MPI не использует отдельный поток MPI для каждого узла для реализации функциональности?
Решение
Если двоичный файл не связан с --as-needed
Затем он приобретет ссылку на каждую библиотеку, приведенную в командной строке ссылки, независимо от того, на самом деле необходима ли она. Проходят -Wl,--as-needed
в GCC для того, чтобы пройти опцию для LD.
Другие советы
MPI использует процессы, а не темы. Так что нет, Open MPI не будет использовать отдельный поток MPI на узел.