Ошибка поиска символов для программы mpi

#parallel-processing #mpi

#параллельная обработка #mpi

Вопрос:

Я не слишком разбираюсь в параллельных вычислениях, поэтому прошу прощения, если это наивный вопрос.

Я унаследовал распараллеленную версию (C-кодированного) исполняемого файла от старшего коллеги. К сожалению, он не дал мне фактический C-код, поэтому я не могу перекомпилировать или поискать там, чтобы найти, что вызывает эту ошибку.

Моя проблема в том, что при запуске этого исполняемого файла (myexecutable) я получаю сообщение об ошибке:

  myexececutable: undefined symbol: ompi_mpi_int
 

У меня такое чувство, что существует некоторая зависимость от библиотеки, которая не поддерживается, и я указал ПУТЬ к тому месту, где находится материал openmpi (/usr/ lib64/openmpi/bin). Это не помогло.

Любая помощь по этой ошибке будет высоко оценена!

Комментарии:

1. Вы имеете в виду, что они отправили вам только исполняемый файл, а не код для его компиляции? Я не думаю, что это сработает. Попробуйте ldd исполняемый файл, чтобы проверить, правильно ли связаны библиотеки OpenMPI, и убедитесь, что вы /usr/lib64/openmpi/lib LD_LIBRARY_PATH также добавили их.

2. Большое спасибо, @Ed_Smith! Запуск ldd был блестящим планом … теперь, по крайней мере, я вижу недостающие ссылки, так сказать! Слава и спасибо за помощь.

3. Хорошо! Итак, «ldd» дал мне замечательный список того, что где предоставляется, и я заметил, что некоторые библиотеки — это библиотеки, которые я загрузил сам, которые теперь находятся в подкаталоге моего домашнего каталога. Они находятся в LD_LIBRARY_PATH, но мне интересно, не проблема ли в том, что каталог «scratch» в кластере (где должен выполняться мой код) каким-то образом не может найти эти библиотеки. Может быть, мне следует спросить моего системного администратора?

4. Подождите, вы же не пытаетесь работать сами mpiexec по себе, не так ли? Вы используете mpiexec from openmpi/bin для запуска исполняемого файла. Путь к библиотеке будет иметь значение при компиляции кода, например, скопируйте код из mpi.deino.net/mpi_functions/mpi_init.html to test.cpp и вызовите mpic test.cpp , затем запустите результирующий исполняемый файл с помощью mpiexec -n 1 ./a.out . Если это сработает, я думаю, что проблема не в mpi этом, а в том, что скомпилированный исполняемый файл работает только на компьютере, на котором он был скомпилирован. Вам нужен исходный код…

5. Еще раз спасибо за отличную помощь, @Ed_Smith! Я отредактировал свой первоначальный вопрос, чтобы сделать его менее двусмысленным, и я попробовал ваше отличное предложение! пример кода, который вы предложили, скомпилирован и запущен на моей машине. Мне определенно нужно каким-то образом получить исходный код для моего исполняемого файла…