- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I believe there is a bug in the Intel MPI MPI_AllReduce implementation when using "use mpi". To wit, a simple reproducer:
program test_allreduce
use mpi
implicit none
integer :: status, rank
call MPI_Init(ierror=status)
call MPI_COMM_RANK(MPI_COMM_WORLD,rank,ierror=status)
call MPI_ALLReduce(MPI_IN_PLACE,rank,1,MPI_INTEGER,MPI_MAX,MPI_COMM_WORLD,ierror=status)
call MPI_Finalize(ierror=status)
end program
And when you compile:
$ mpirun -V
Intel(R) MPI Library for Linux* OS, Version 2021.10 Build 20230619 (id: c2e19c2f3e)
Copyright 2003-2023, Intel Corporation.
$ mpiifort allreduce_bug.use_mpi.F90
allreduce_bug.use_mpi.F90(9): error #6632: Keyword arguments are invalid without an explicit interface. [IERROR]
call MPI_ALLReduce(MPI_IN_PLACE,rank,1,MPI_INTEGER,MPI_MAX,MPI_COMM_WORLD,ierror=status)
--------------------------------------------------------------------------^
compilation aborted for allreduce_bug.use_mpi.F90 (code 1)
This seems similar to a bug I reported to MPICH (https://github.com/pmodels/mpich/issues/6693).
If you move to "use mpi_f08" it does seem to compile, so it looks to be a bug just in the "use mpi" implementation.
Note that Open MPI seems happy with it:
$ mpirun -V
mpirun (Open MPI) 4.1.5
Report bugs to http://www.open-mpi.org/community/help/
$ mpifort allreduce_bug.use_mpi.F90
$ echo $?
0
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Thank you for posting in Intel Communities
We were able to reproduce the issue. and we are investigating at our end.
Regards,
Veena
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
We do not provide explicit interfaces for MPI_ALLREDUCE, which is complaint to the MPI standard:
https://www.mpi-forum.org/docs/mpi-3.1/mpi31-report/node410.htm
Provide explicit interfaces according to the Fortran routine interface specifications. This module therefore guarantees compile-time argument checking and allows positional and keyword-based argument lists. If an implementation is paired with a compiler that either does not support TYPE(*), DIMENSION(..) from TS 29113, or is otherwise unable to ignore the types of choice buffers, then the implementation must provide explicit interfaces only for MPI routines with no choice buffer arguments. See Section MPI for Different Fortran Standard Versions for more details.
Please feel free to reach out if you have any further queries.
Regards,
Veena
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
We have not heard back from you. Could you kindly confirm whether the explanation provided addresses your question?
Regards,
Veena
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I assume that your issue is resolved. If you need any additional information, please post a new question as this thread will no longer be monitored by Intel.
Regards,
Veena
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page