Вывод ldd, показывающий общий объектный файл, функция которого не вызывается
Я выполнил команду ldd для исполняемого файла, созданного Open MPI. Он показывает ссылку на libpthread.so. Используя переменную LD_PRELOAD, я создал свою собственную реализацию pthread_create, но из вывода it кажется, что реализация MPI не вызывает pthread_create, как я ожидал. Почему ldd показывает pthread, так что файл в выводе, если он не используется? Open MPI не использует отдельный поток MPI для каждого узла для реализации функциональности?
2 ответа
Если бинарный файл не связан с --as-needed
тогда он получит ссылку на каждую библиотеку, заданную в командной строке ссылки, независимо от того, нужна ли она на самом деле. Проходить -Wl,--as-needed
в gcc, чтобы он передал опцию ld.
MPI использует процессы, а не потоки. Так что нет, Open MPI не будет использовать отдельный поток MPI для каждого узла.