Другие языки программирования и технологии
Фортран 77. Нужна помощь!!
Преподаватель отжег. Дал программу. Для зачета нужно запустить ее на параллельных компьютерах (фортран 77). Проблема следующая: вообще не можем ее запустить. Видим фортран первый и последний раз в жизни!! Помогите, плиз, исправить ошибку в IMPLICIT REAL*8(a-h,o-z) PARAMETER (n = 11) Код программы: PROGRAMM main INCLUDE 'mpif.h' IMPLICIT REAL*8(a-h,o-z) PARAMETER (n = 11) DIMENSION a(n), b(n) INTEGER istatus(MPI_STATUS_SIZE) CALL MPI_INIT(ierr) CALL MPI_COMM_SIZE(MPI_COMM_WORLD, nprocs, ierr) CALL MPI_COMM_RANK(MPI_COMM_WORLD, myrank, ierr) CALL para_range(1, n, nprocs, myrank, ista, iend) ista2 = ista iend1 = iend IF (myrank = 0) ista2 = 2 IF(myrank = nprocs - 1) iend1 = n - 1 inext = myrank + 1 iprev = myrank - 1 IF (myrank == nprocs-1) inext = MPI_PROC_NULL IF (myrank == 0) iprev = MPI_PROC_NULL DO i = ista, iend b(i) = i ENDDO CALL MPI_ISEND(b(iend), 1, MPI_REAL8, inext, 1, MPI_COMM_WORLD, isend1, ierr) CALL MPI_ISEND(b(ista), 1, MPI_REAL8, iprev, 1, MPI_COMM_WORLD, isend2, ierr) CALL MPI_IRECV(b(ista-1), 1, MPI_REAL8, iprev, 1, MPI COMM_WORLD, irecv1, ierr) CALL MPI_IRECV(b(iend+1), 1, MPI_REAL8, inext, 1, MPI COMM_WORLD, irecv2, ierr) CALL MPI_WAIT(isend1, istatus, ierr) CALL MPI_WAIT(isend2, istatus, ierr) CALL MPI_WAIT(irecv1, istatus, ierr) CALL MPI_WAIT(irecv2, istatus, ierr) DO i = ista2, iend1 a(i) = b(i-1) + b(i+1) ENDDO CALL MPI_FINALIZE(ierr) END
А чего ошибочного в
IMPLICIT REAL*8(a-h,o-z)
PARAMETER (n = 11)
??
IMPLICIT REAL*8(a-h,o-z)
Объявляет что все переменные начинающиеся с букв (a-h,o-z) имеют тип REAL*8
разве что пробела вроде не хватает, но может он и не нужен, не помню
IMPLICIT REAL*8 (a-h,o-z)
А
PARAMETER (n = 11)
просто объявляет что есть такая константа n=11
Код программы - это не фортран77, это более поздние расширения тут я пас, лет 20 на фортране не программил
-------
DO i = ista, iend
b(i) = i
ENDDO
...
CALL MPI_IRECV(b(ista-1), 1, MPI_REAL8, iprev, 1,
MPI COMM_WORLD, irecv1, ierr)
CALL MPI_IRECV(b(iend+1), 1, MPI_REAL8, inext, 1,
MPI COMM_WORLD, irecv2, ierr)
-------
b(ista-1)и b(iend+1) вроде же не инициализировано? или MPI_IRECV туда значение вгоняет?
и где проверка на попадание (ista-1)и (iend+1) в границу массива?
IMPLICIT REAL*8(a-h,o-z)
PARAMETER (n = 11)
??
IMPLICIT REAL*8(a-h,o-z)
Объявляет что все переменные начинающиеся с букв (a-h,o-z) имеют тип REAL*8
разве что пробела вроде не хватает, но может он и не нужен, не помню
IMPLICIT REAL*8 (a-h,o-z)
А
PARAMETER (n = 11)
просто объявляет что есть такая константа n=11
Код программы - это не фортран77, это более поздние расширения тут я пас, лет 20 на фортране не программил
-------
DO i = ista, iend
b(i) = i
ENDDO
...
CALL MPI_IRECV(b(ista-1), 1, MPI_REAL8, iprev, 1,
MPI COMM_WORLD, irecv1, ierr)
CALL MPI_IRECV(b(iend+1), 1, MPI_REAL8, inext, 1,
MPI COMM_WORLD, irecv2, ierr)
-------
b(ista-1)и b(iend+1) вроде же не инициализировано? или MPI_IRECV туда значение вгоняет?
и где проверка на попадание (ista-1)и (iend+1) в границу массива?
это всяко не 77-ой.. .
такие длинные строки (в 72 позиции ну никак не полезут).. .
и я не совсем уверен что означает prograMM с двумя MM
затем, у вас в IF условиях знаки равенства то появляются то исчезают.. .
короче у меня ругается вот так:
C:\CODE\FORTRAN\main.f: In program `main':
C:\CODE\FORTRAN\main.f:3:
IMPLICIT REAL*8(a-h,o-z)
1
mpif.h:30: (continued):
INTEGER MPI_SUCCESS,MPI_ERR_BUFFER,MPI_ERR_COUNT,MPI_ERR_TYPE
2
Statement at (1) invalid in context established by statement at (2)
причём копилил в 77-ом...
такие длинные строки (в 72 позиции ну никак не полезут).. .
и я не совсем уверен что означает prograMM с двумя MM
затем, у вас в IF условиях знаки равенства то появляются то исчезают.. .
короче у меня ругается вот так:
C:\CODE\FORTRAN\main.f: In program `main':
C:\CODE\FORTRAN\main.f:3:
IMPLICIT REAL*8(a-h,o-z)
1
mpif.h:30: (continued):
INTEGER MPI_SUCCESS,MPI_ERR_BUFFER,MPI_ERR_COUNT,MPI_ERR_TYPE
2
Statement at (1) invalid in context established by statement at (2)
причём копилил в 77-ом...
Похожие вопросы
- Нужна помощь в програмированнии. Мне необходимо сдать работу на языке Фортран.
- Нужна помощь по информатике.
- Нужна помощь с паскалем!
- Программисты,нужна помощь,пожалуйста Для вас легко
- Логика. Нужна помощь.
- Нужна помощь
- Информатика!Нужна помощь!если можно,с объяснением.
- Пожалуйста, очень нужна помощь с Pascal
- Люди! Нужна помощь. Помогите настроить Оперу
- Срочно нужна помощь WEB-программиста, который мог бы состряпать сайт