Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Mpi и gcc/g++  (Прочитано 5364 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Re1aps

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Mpi и gcc/g++
« : 30 Июля 2012, 18:02:07 »
Всем доброго времени суток, подскажите как при помощи gcc/g++ скомпилировать mpi код? использую библиотеку mpich2. Код собственно из википедии, все работает но компиляется только mpicc/mpic++, что для меня крайне неудобно. При попытке скомпилировать как обычную программу, выдает ошибку о том, что не знает кто такой "mpi.h".
#include <stdio.h>
#include <mpi.h>
 
int main (int argc, char* argv[])
{
    int rank, size;
 
    MPI_Init (&argc, &argv);
    MPI_Comm_rank (MPI_COMM_WORLD, &rank);
    MPI_Comm_size (MPI_COMM_WORLD, &size);
 
    printf( "Hello world from process %d of %d\n", rank, size );



    MPI_Finalize();
 
    return 0;
}

Оффлайн mastepaner

  • Новичок
  • *
  • Сообщений: 30
    • Просмотр профиля
Re: Mpi и gcc/g++
« Ответ #1 : 30 Июля 2012, 18:28:11 »
А файл /usr/include/mpi.h у вас есть?
apt-cache show libmpich2-dev ->  This package includes the MPICH2 headers
« Последнее редактирование: 30 Июля 2012, 18:31:48 от mastepaner »

Оффлайн Re1aps

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Mpi и gcc/g++
« Ответ #2 : 30 Июля 2012, 19:45:28 »
А файл /usr/include/mpi.h у вас есть?
apt-cache show libmpich2-dev ->  This package includes the MPICH2 headers
Да, конечно все установлено.

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: Mpi и gcc/g++
« Ответ #3 : 30 Июля 2012, 20:02:22 »
mpi.h находится в /usr/include/mpich2/.

Оффлайн Re1aps

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Mpi и gcc/g++
« Ответ #4 : 31 Июля 2012, 00:16:16 »
mpi.h находится в /usr/include/mpich2/.

Да я вроде бы пробовал компилять так:

g++ -l "/usr/include/mpich2/" test.cpp -o test + инклюд "mpich2/mpi.h".

В итоге он ругается на стандартные mpi функции, попросту их не видит. Может я не так компилю?

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: Mpi и gcc/g++
« Ответ #5 : 31 Июля 2012, 00:27:10 »
mpi.h находится в /usr/include/mpich2/.

Да я вроде бы пробовал компилять так:

g++ -l "/usr/include/mpich2/" test.cpp -o test + инклюд "mpich2/mpi.h".

В итоге он ругается на стандартные mpi функции, попросту их не видит. Может я не так компилю?

О боже, man gcc для начала.
g++ test.cpp -o test `pkg-config --libs --cflags mpich2-cxx`

Оффлайн Re1aps

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Mpi и gcc/g++
« Ответ #6 : 31 Июля 2012, 01:34:42 »
mpi.h находится в /usr/include/mpich2/.

Да я вроде бы пробовал компилять так:

g++ -l "/usr/include/mpich2/" test.cpp -o test + инклюд "mpich2/mpi.h".

В итоге он ругается на стандартные mpi функции, попросту их не видит. Может я не так компилю?

О боже, man gcc для начала.
g++ test.cpp -o test `pkg-config --libs --cflags mpich2-cxx`

По-вашему в мане gcc написано какие флаги нужны для компиляции кода с mpi? да и собственно опция -l, насколько я знаю, подключает к бинарнику библиотеку, я лишь предположил что это может быть нечто подобное, поэтому не стоит так резко реагировать. За подсказку большое спасибо завтра попробую, надеюсь заработает.

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Mpi и gcc/g++
« Ответ #7 : 31 Июля 2012, 01:36:30 »
да и собственно опция -l, насколько я знаю
для хэдер-файлов вас должна интересовать опция не -l (эл), а -I (и).

Оффлайн Re1aps

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Mpi и gcc/g++
« Ответ #8 : 31 Июля 2012, 03:08:34 »
Так варианты предложенные выше не прокатили. Попробовал собрать так:
g++ -g -D_REENTRANT -I/usr/lib/mpich2/include -o test test.cpp -L/usr/include/mpich2/mpi.h -lmpich 2В итоге:
g++: ошибка: 2: Нет такого файла или каталогаФантастика какая-то...
« Последнее редактирование: 31 Июля 2012, 03:28:07 от Re1aps »

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: Mpi и gcc/g++
« Ответ #9 : 31 Июля 2012, 04:10:51 »
Так варианты предложенные выше не прокатили. Попробовал собрать так:
g++ -g -D_REENTRANT -I/usr/lib/mpich2/include -o test test.cpp -L/usr/include/mpich2/mpi.h -lmpich 2В итоге:
g++: ошибка: 2: Нет такого файла или каталогаФантастика какая-то...

Могу дать только один совет: не пишите код в 3 часа ночи. У вас пробел лишний перед двойкой "-lmpich 2".

Оффлайн Re1aps

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Mpi и gcc/g++
« Ответ #10 : 31 Июля 2012, 12:39:33 »
Так варианты предложенные выше не прокатили. Попробовал собрать так:
g++ -g -D_REENTRANT -I/usr/lib/mpich2/include -o test test.cpp -L/usr/include/mpich2/mpi.h -lmpich 2В итоге:
g++: ошибка: 2: Нет такого файла или каталогаФантастика какая-то...

Могу дать только один совет: не пишите код в 3 часа ночи. У вас пробел лишний перед двойкой "-lmpich 2".

По другому ни как :) Убрал я пробел:
/usr/bin/ld: cannot find -lmpich2
collect2: выполнение ld завершилось с кодом возврата 1
Я же говорю фантастика, уже даже не знаю может либа по-другому называется?

Оффлайн Re1aps

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Mpi и gcc/g++
« Ответ #11 : 31 Июля 2012, 21:55:39 »
Так варианты предложенные выше не прокатили. Попробовал собрать так:
g++ -g -D_REENTRANT -I/usr/lib/mpich2/include -o test test.cpp -L/usr/include/mpich2/mpi.h -lmpich 2В итоге:
g++: ошибка: 2: Нет такого файла или каталогаФантастика какая-то...

Могу дать только один совет: не пишите код в 3 часа ночи. У вас пробел лишний перед двойкой "-lmpich 2".

По другому ни как :) Убрал я пробел:
/usr/bin/ld: cannot find -lmpich2
collect2: выполнение ld завершилось с кодом возврата 1
Я же говорю фантастика, уже даже не знаю может либа по-другому называется?
это не фантастика, это значит:
- что компиляция у вас уже прошла (-I сработал)
- а на линковке - сшиблось, нет библиотеки libmpich2.so
- а зачем вы воткнули: -L/usr/include/mpich2/mpi.h - библиотека libmpich2.so уж точно не находится на этом пути, ... тем более, что вы указали не путь к каталогу, а путь к файлу ;)

P.S. просмотрите вот это по-быстренькому: http://rus-linux.net/nlib.php?name=/MyLDP/BOOKS/Linux-tools/07/ltfwp-07-01.html

Вот народ иногда бывает странный, неужели я прошу в топе научить меня пользоваться компиляторами, если бы я это хотел, я бы так и написал, нечего сказать по делу, а тут явно именно такая ситуация - проходите мимо. Погуглить как пользоваться компилятором я могу и сам, конкретно я задавал вопрос какие флаги нужно использовать с компилятором gcc/g++ для компиляции mpi кода. В итоге кроме того, что я нашел сам, никто ничего дельного не предложил, а ну кроме того, что - "читай как пользоваться компилятором". Короче удаляйте эту тему...

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Mpi и gcc/g++
« Ответ #12 : 01 Августа 2012, 00:23:35 »
Вот народ иногда бывает странный, неужели я прошу в топе научить меня пользоваться компиляторами, если бы я это хотел, я бы так и написал, нечего сказать по делу, а тут явно именно такая ситуация - проходите мимо.
ну так обращайтесь в Лигу Сексуальных Реформ?

ключ -L убери, лабух! ;)

 

Страница сгенерирована за 0.019 секунд. Запросов: 23.