- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It seems that the MPI Performance Snapshot analysis interferes with the execution of the Fortran programs, i.e. the following code
PROGRAM main USE MPI USE ISO_FORTRAN_ENV IMPLICIT NONE INTEGER(kind=int32), PARAMETER :: length = 10 INTEGER(kind=int32) :: numprocs, myid, ierr, i, tag, offset, idx INTEGER(kind=int32), ALLOCATABLE :: requests(:) REAL(kind=real32), ALLOCATABLE :: buffer(:) CALL MPI_Init(ierr) CALL MPI_Comm_size(MPI_COMM_WORLD, numprocs, ierr) CALL MPI_Comm_rank(MPI_COMM_WORLD, myid, ierr) IF (numprocs == 1) THEN write(*,*) "This example need at least two processes." CALL MPI_Finalize(ierr) STOP END IF ! Allocate memory for send/recv buffer and request array ALLOCATE(buffer(numprocs*length)) ALLOCATE(requests(numprocs)) ! All workers (rank 1..numprocs-1) send a message to rank 0 IF (myid > 0) THEN DO i=1,length buffer(i) = sin(real(i)) END DO tag = myid CALL MPI_Isend(buffer, length, MPI_REAL, 0, tag, MPI_COMM_WORLD, requests(1), ierr) CALL MPI_Wait(requests(1), MPI_STATUS_IGNORE, ierr) ! Rank 0 receive these messages ELSE offset = 0 DO i=1,numprocs-1 tag = i CALL MPI_Irecv(buffer(offset+1), length, MPI_REAL, i, tag, & MPI_COMM_WORLD, requests(i), ierr) offset = offset + length END DO DO WHILE(.TRUE.) CALL MPI_Waitany(numprocs-1, requests, idx, MPI_STATUS_IGNORE, ierr) IF (idx /= MPI_UNDEFINED) THEN write(*,*) "Recieved message with idx =", idx ELSE EXIT END IF END DO END IF CALL MPI_Finalize(ierr) END PROGRAM MAIN
prints different results with and without the MPS analysis. Without MPS analysis the output is the row of number from 1 to 15 (as expected). But running the same program under -mps flag outputs numbers starting from 0, i.e. from 0 to 14.
I use MPS version which comes from ITAC 9.1 The binary is produced using Intel Fortran compiler 15.0.5 and Intel MPI Library 5.1
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Igor,
Yes, you are right. MPS Fortran wrappers do not have special handling for Fortran arrays that's why indexes are in C-style starting form 0.
Regards!
---Dmitry
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Dmitry,
is this feature somehow reflected in the documentation?
Best,
Igor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Igor,
No, it's not reflected. It should be fixed in next release.
Regards!
---Dmitry

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page