увеличить MPI пример компиляции - PullRequest
0 голосов
/ 05 июля 2018

Я собираюсь использовать boost_mpi, но во время компиляции тестовой программы возникли следующие проблемы.

Проблема

/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_mpi_info_null'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_request_null'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_mpi_packed'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_mpi_comm_null'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_mpi_errors_return'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `MPI::Comm::Comm()'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_op_set_cxx_callback'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_mpi_cxx_op_intercept'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_mpi_datatype_null'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_mpi_comm_world'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_mpi_unsigned_long'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so: undefined reference to `ompi_mpi_group_empty'
collect2: error: ld returned 1 exit status
make[2]: *** [Test] Error 1
make[1]: *** [CMakeFiles/Test.dir/all] Error 2
make: *** [all] Error 2

Другая информация

Мой libboost был установлен с помощью apt-get install libboost-dev-all, номер версии 1.54. Моя версия GCC 4.8.4, версия MPICH 3.2.

Вот мой код тестирования:

#include <boost/mpi.hpp>
#include <iostream>

int main(int argc, char *argv[])
{
    boost::mpi::environment env{argc, argv};
    boost::mpi::communicator world;
    std::cout << world.rank() << ", " << world.size() << '\n';
}

1 Ответ

0 голосов
/ 05 июля 2018

Какую версию Ubuntu вы используете? Выше выглядит немного странно. Похоже на действительно старую систему?

apt -y install libboost-mpi-dev libmpich-dev openmpi-bin

должно вас хорошо настроить. libboost-mpi-dev не является частью boost-all. Затем создайте свой код:

mpicxx -std=c++11 -o test test.cpp -lboost_mpi

где вы код в test.cpp. Тест с:

mpiexec -np 4 ./test
...