- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
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 copiado
- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
Hi,
Thank you for posting in Intel Communities
We were able to reproduce the issue. and we are investigating at our end.
Regards,
Veena
- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
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
- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
Hi,
We have not heard back from you. Could you kindly confirm whether the explanation provided addresses your question?
Regards,
Veena
- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
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

- Subscrever fonte RSS
- Marcar tópico como novo
- Marcar tópico como lido
- Flutuar este Tópico para o utilizador atual
- Marcador
- Subscrever
- Página amigável para impressora