При попытке собирать любой mpi-код на Fortran-90 (минимальный пример: program test use mpi integer :: id, err call MPI_Start(err) call MPI_Comm_rank(MPI_COMM_WORLD,id,err) print *, id call MPI_Finalize(err) end ) получаем сообщение об ошибке вида $ mpif90 test.f90 test.f90:2.7: use mpi 1 Fatal Error: Wrong module version '0' (expected '4') for file 'mpi.mod' opened at (1) Если вместо подключения модуля mpi.mod использовать mpif.h («стиль» F77), то работает, но некомильфо, ибо надо знать это и переписывать код имеющийся.
Буду на выходных разбираться. у меня ваш пример вот так обрабатывается для mpif90: mpif90 f.f90 f.f90:4.20: call MPI_Start(err) 1 Error: There is no specific subroutine for the generic 'mpi_start' at (1) f.f90:9.1: ) 1 Error: Invalid character in name at (1) и совпадает с вашим, при использовании mpif77 версия openmpi та, которая в сизифе сейчас? к сожалению, с фортраном я не работаю, возможно попрошу помощи
> Если вместо подключения модуля mpi.mod использовать mpif.h («стиль» F77), то > работает, но некомильфо, ибо надо знать это и переписывать код имеющийся. странно, попробуйте переложить mpi.mod из /usr/lib/openmpi/lib в /usr/lib/openmpi/include у меня после этого осталась только ошибка, которую я продемонстрировал выше. а вот как с ней бороться с наскока не разберусь
> mpif90 f.f90 > f.f90:4.20: > > call MPI_Start(err) > 1 > Error: There is no specific subroutine for the generic 'mpi_start' at (1) > f.f90:9.1: > > ) > 1 > Error: Invalid character in name at (1) > > и совпадает с вашим, при использовании mpif77 хм. Странно. Если я заменяю «use mpi» на «include "mpif.h"» (тт самый стиль f77), то прокатывает компиляция. Собрать же посредством f77 этот код нневозможно: во-первый, оператор USE в f77 отсутствует как класс, во-вторых, код записан в свободном формате, которого также не было в f77. > версия openmpi та, которая в сизифе сейчас? > к сожалению, с фортраном я не работаю, возможно попрошу помощи Несколькодневной давности: $ rpm -qa openmpi openmpi-1.4.3-alt2 и, еслм важно: $ rpm -qa gcc4.5-fortran gcc4.5-fortran-4.5.1-alt6 Вечером обновлю зеркало и завтра попробую освежить установку. На всякий случай, для скорости, мой JID: const@jabber.ru Бо сам очень сильно заинтересован в адекватной работе. UPD: Подумалось, что в Вашем случае mpi.mod цепляется нормально, но он «пустой», то есть там нет описания ф-ции MPI_Start, оттого и ошибка лезет такая.
(В ответ на комментарий №2) > > Если вместо подключения модуля mpi.mod использовать mpif.h («стиль» F77), то > > работает, но некомильфо, ибо надо знать это и переписывать код имеющийся. > > странно, попробуйте переложить mpi.mod из /usr/lib/openmpi/lib в > /usr/lib/openmpi/include > у меня после этого осталась только ошибка, которую я продемонстрировал выше. а > вот как с ней бороться с наскока не разберусь У меня не срабатывает такой подход.
Появилось время разобраться. 1. Вы _абсолютно_ уверены в правильности тестовой программы? mpi_start - это не инициализация mpi. наверное там должно быть MPI_Init ? и если скобку закрывающую в конце убрать, то все начинает компилироваться и запускаться. 2. посмотрите пожалуйста, примеры из пакета openmpi-openmpi-examples - там есть минимальный пример: /usr/share/doc/openmpi-openmpi-examples-1.4.3/examples/hello_f90.f90 PS а моя ошибка была вызвана тем, что стоял openmpi не из репозитория, а тестовая локальная сборка %)
Подтверждаю: 1. Fatal Error: Wrong module version '0' (expected '4') for file 'mpi.mod' opened at (1) не воспроизводится. Наверно, потому, что у меня openmpi свежий сизифный. 2. MPI_Start - так не бывает, бывает MPI_Init. Так что, видимо, это надо в FIXED - NOTABUG.
(В ответ на комментарий №6) > 1. Fatal Error: Wrong module version '0' (expected '4') for file 'mpi.mod' > opened > at (1) > не воспроизводится. Наверно, потому, что у меня openmpi свежий сизифный. $ rpm -qa openmpi openmpi-1.4.3-alt2 > 2. MPI_Start - так не бывает, бывает MPI_Init. > > Так что, видимо, это надо в FIXED - NOTABUG. Описался, да. Но факт остаётся и на правильном коде: с «use mpi» даёт ошибку, тогда как «include "mpif.h"» проглатывает.
Это похоже на какой-то local misconfiguration, ибо уже два человека Ваш пример попробовало, и всё скомпилировалось без ошибок.
(В ответ на комментарий №8) > Это похоже на какой-то local misconfiguration, ибо уже два человека Ваш пример > попробовало, и всё скомпилировалось без ошибок. То есть, у Вас пример с «use mpi» собирается, если описку MPI_Start исправить? Тогда возникает вопрос, «куды рыть?» Ибо ситуация у меня повторяется на второй машине уже: ставится в минимальном виде бета Кентавра, обновляется до текущего Сизифа, доустанавливается openmpi (компиляторы вытягивает сам), настраивается mpi-selector… Чего не хватает в этой цепочке?
Не могу даже предположить. mpi-selector --set openmpi source /usr/lib/openmpi/bin.sh делали? Или у Вас просто в PATH воткнут /usr/lib/openmpi/bin?
пардон, описка во второй команде, надо так: source /usr/lib/openmpi/bin/mpivars.sh
(В ответ на комментарий №10) > Не могу даже предположить. > > mpi-selector --set openmpi > source /usr/lib/openmpi/bin.sh > > делали? Или у Вас просто в PATH воткнут /usr/lib/openmpi/bin? mpi-selector --system --set openmpi от рута делал и перезаходил пользователем. Сейчас также проверил с source из следующего письма — результат тот же. На всякий случай: $ set |grep mpi LD_LIBRARY_PATH=/usr/lib/openmpi/lib: MANPATH=/usr/lib/openmpi/man:/usr/local/share/man:/usr/share/man/ru:/usr/share/man:/usr/X11R6/man:/usr/local/man PATH=/usr/lib/kde4/bin:/usr/lib/kde4bin:/usr/lib/openmpi/bin:/home/const/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/X11R6/bin
(В ответ на комментарий №11) 2Женя,ради интереса - у тебя gfortran --version какой показывает? в общем подтверждается бага, но только на компиляторе версии 4.5. На 4.4 - работает. С примерами из openmpi-examples тоже повторяется. Сейчас попробую пересобрать с с использованием 4.5 и, если все нормально, то закину в сизиф.
(В ответ на комментарий №13) > (В ответ на комментарий №11) > 2Женя,ради интереса - у тебя gfortran --version какой показывает? > > в общем подтверждается бага, но только на компиляторе версии 4.5. На 4.4 - > работает. > С примерами из openmpi-examples тоже повторяется. > > Сейчас попробую пересобрать с с использованием 4.5 и, если все нормально, то > закину в сизиф. Денис, я думал о компиляторе, но решил, что раз пакет за собой gcc4.5 тянет, то им и собран… В принципе, мне не сложно на 4.4 откатиться, но проверить теперь только в понедельник смогу.
(В ответ на комментарий №14) > Денис, я думал о компиляторе, но решил, что раз пакет за собой gcc4.5 тянет, то > им и собран… а я просто не знал про фортран и его зависимость по версиям до этой баги ;-) в сизифе был глобальный переход на новую версию компилятора - вот и вылезло. > В принципе, мне не сложно на 4.4 откатиться, но проверить теперь > только в понедельник смогу. откатываться не надо - я забросил новую версию. в понедельник сделайте dist-upgradе
Денису: чёрт, оказывается, у меня дома до сих пор GNU Fortran (GCC) 4.4.5 20101112 (ALT Linux 4.4.5-alt3) Обновил до 4.5.1, ошибка подтвердилась.
(В ответ на комментарий №15) > (В ответ на комментарий №14) > > > Денис, я думал о компиляторе, но решил, что раз пакет за собой gcc4.5 тянет, то > > им и собран… > а я просто не знал про фортран и его зависимость по версиям до этой баги ;-) > в сизифе был глобальный переход на новую версию компилятора - вот и вылезло. > > > В принципе, мне не сложно на 4.4 откатиться, но проверить теперь > > только в понедельник смогу. > откатываться не надо - я забросил новую версию. > в понедельник сделайте dist-upgradе Всё нормально теперь, спасибо! Зарываю ошибку.