Bug 24645 - Ошибка в реализации для F90
Summary: Ошибка в реализации для F90
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: openmpi-devel (show other bugs)
Version: unstable
Hardware: all Linux
: P3 major
Assignee: Andrew Savchenko
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-11-26 13:07 MSK by Const
Modified: 2010-11-29 12:55 MSK (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Const 2010-11-26 13:07:20 MSK
При попытке собирать любой 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), то работает, но некомильфо, ибо надо знать это и переписывать код имеющийся.
Comment 1 Denis Pynkin 2010-11-26 13:45:36 MSK
Буду на выходных разбираться.
у меня ваш пример вот так обрабатывается для 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 та, которая в сизифе сейчас?
к сожалению, с фортраном я не работаю, возможно попрошу помощи
Comment 2 Denis Pynkin 2010-11-26 13:57:36 MSK
> Если вместо подключения модуля mpi.mod использовать mpif.h («стиль» F77), то
> работает, но некомильфо, ибо надо знать это и переписывать код имеющийся.

странно, попробуйте переложить mpi.mod из /usr/lib/openmpi/lib в /usr/lib/openmpi/include
у меня после этого осталась только ошибка, которую я продемонстрировал выше. а вот как с ней бороться с наскока не разберусь
Comment 3 Const 2010-11-26 14:05:48 MSK
> 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, оттого и ошибка лезет такая.
Comment 4 Const 2010-11-26 14:06:50 MSK
(В ответ на комментарий №2)
> > Если вместо подключения модуля mpi.mod использовать mpif.h («стиль» F77), то
> > работает, но некомильфо, ибо надо знать это и переписывать код имеющийся.
> 
> странно, попробуйте переложить mpi.mod из /usr/lib/openmpi/lib в
> /usr/lib/openmpi/include
> у меня после этого осталась только ошибка, которую я продемонстрировал выше. а
> вот как с ней бороться с наскока не разберусь

У меня не срабатывает такой подход.
Comment 5 Denis Pynkin 2010-11-27 01:01:29 MSK
Появилось время разобраться.
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 не из репозитория, а тестовая локальная сборка %)
Comment 6 real@altlinux.org 2010-11-27 07:58:26 MSK
Подтверждаю:

1. Fatal Error: Wrong module version '0' (expected '4') for file 'mpi.mod' opened
at (1)
не воспроизводится. Наверно, потому, что у меня openmpi свежий сизифный.

2. MPI_Start - так не бывает, бывает MPI_Init.

Так что, видимо, это надо в FIXED - NOTABUG.
Comment 7 Const 2010-11-27 10:41:04 MSK
(В ответ на комментарий №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"» проглатывает.
Comment 8 real@altlinux.org 2010-11-27 10:51:39 MSK
Это похоже на какой-то local misconfiguration, ибо уже два человека Ваш пример попробовало, и всё скомпилировалось без ошибок.
Comment 9 Const 2010-11-27 11:10:10 MSK
(В ответ на комментарий №8)
> Это похоже на какой-то local misconfiguration, ибо уже два человека Ваш пример
> попробовало, и всё скомпилировалось без ошибок.

То есть, у Вас пример с «use mpi» собирается, если описку MPI_Start исправить?

Тогда возникает вопрос, «куды рыть?»
Ибо ситуация у меня повторяется на второй машине уже: ставится в минимальном виде бета Кентавра, обновляется до текущего Сизифа, доустанавливается openmpi (компиляторы вытягивает сам), настраивается mpi-selector… Чего не хватает в этой цепочке?
Comment 10 real@altlinux.org 2010-11-27 11:20:18 MSK
Не могу даже предположить.

mpi-selector --set openmpi
source /usr/lib/openmpi/bin.sh

делали? Или у Вас просто в PATH воткнут /usr/lib/openmpi/bin?
Comment 11 real@altlinux.org 2010-11-27 11:21:40 MSK
пардон, описка во второй команде, надо так:

source /usr/lib/openmpi/bin/mpivars.sh
Comment 12 Const 2010-11-27 11:51:25 MSK
(В ответ на комментарий №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
Comment 13 Denis Pynkin 2010-11-27 16:29:33 MSK
(В ответ на комментарий №11)
2Женя,ради интереса - у тебя gfortran --version какой показывает? 

в общем подтверждается бага, но только на компиляторе версии 4.5. На 4.4 - работает.
С примерами из openmpi-examples тоже повторяется.

Сейчас попробую пересобрать с с использованием 4.5 и, если все нормально, то закину в сизиф.
Comment 14 Const 2010-11-27 17:01:47 MSK
(В ответ на комментарий №13)
> (В ответ на комментарий №11)
> 2Женя,ради интереса - у тебя gfortran --version какой показывает? 
> 
> в общем подтверждается бага, но только на компиляторе версии 4.5. На 4.4 -
> работает.
> С примерами из openmpi-examples тоже повторяется.
> 
> Сейчас попробую пересобрать с с использованием 4.5 и, если все нормально, то
> закину в сизиф.

Денис, я думал о компиляторе, но решил, что раз пакет за собой gcc4.5 тянет, то им и собран… В принципе, мне не сложно на 4.4 откатиться, но проверить теперь только в понедельник смогу.
Comment 15 Denis Pynkin 2010-11-27 17:10:24 MSK
(В ответ на комментарий №14)

> Денис, я думал о компиляторе, но решил, что раз пакет за собой gcc4.5 тянет, то
> им и собран… 
а я просто не знал про фортран и его зависимость по версиям до этой баги ;-)
в сизифе был глобальный переход на новую версию компилятора - вот и вылезло.

> В принципе, мне не сложно на 4.4 откатиться, но проверить теперь
> только в понедельник смогу.
откатываться не надо - я забросил новую версию.
в понедельник сделайте dist-upgradе
Comment 16 real@altlinux.org 2010-11-27 18:18:42 MSK
Денису: чёрт, оказывается, у меня дома до сих пор
GNU Fortran (GCC) 4.4.5 20101112 (ALT Linux 4.4.5-alt3)

Обновил до 4.5.1, ошибка подтвердилась.
Comment 17 Const 2010-11-29 12:55:06 MSK
(В ответ на комментарий №15)
> (В ответ на комментарий №14)
> 
> > Денис, я думал о компиляторе, но решил, что раз пакет за собой gcc4.5 тянет, то
> > им и собран… 
> а я просто не знал про фортран и его зависимость по версиям до этой баги ;-)
> в сизифе был глобальный переход на новую версию компилятора - вот и вылезло.
> 
> > В принципе, мне не сложно на 4.4 откатиться, но проверить теперь
> > только в понедельник смогу.
> откатываться не надо - я забросил новую версию.
> в понедельник сделайте dist-upgradе

Всё нормально теперь, спасибо! Зарываю ошибку.