I'am developing mpi4py, a MPI port for Python. I've wrote many
unittest scripts for my wrappers, which also pretend to test MPI
implementations.
Below, I list some issues I've found when building my wrappers with
Open MPI 1.1.1. Please let me know your opinions.
- MPI_Group_translate_ranks(group1, n, ranks1, group2, ranks2) fails
(with MPI_ERR_GROUP) if n != size(group1). Regarding the standard,
I understand this routine should whork for any value of n, if
ranks1 contains values (even if some are duplicated) in a valid
range according to size(group1).
- MPI_Info_get_nthkey(INFO, 0, key) does not fail when INFO is
empty, ie, when MPI_Info_get_nkeys(info, &nkeys) returns nkeys==0.
- Usage of MPI_IN_PLACE is broken in some collectives, below the
reasons I've found:
+ MPI_Gather: with sendbuf=MPI_IN_PLACE, sendcount is not ignored.
+ MPI_Scatter: with recvbuf=MPI_IN_PLACE, recvcount is not ignored.
+ MPI_Allgather: with sendbuf=MPI_IN_PLACE, sendcount is not ignored.
The standard says that [send|recv]count and [send|recv]type are
ignored. I've not tested vector variants, perhaps they suffer the
same problem.
- Some extended collective communications failed (not by raising
errors, but instead aborting tracing to stdout) when using
intercommunicators. Sometimes, the problems appeared when
size(local_group) != size(remote_group). However, MPI_Barrier and
MPI_Bcast worked well. I still could not get the reasons for those
failures. I've found a similar problem in MPICH2 when configured
with error-cheking enabled (they had a bug in some error-cheking
macros, I reported this issue and next they told me I was right).
--
Lisandro Dalcín
---------------
Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
PTLC - Güemes 3450, (3000) Santa Fe, Argentina
Tel/Fax: +54-(0)342-451.1594
|