Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

From: Lisandro Dalcin (dalcinl_at_[hidden])
Date: 2006-11-06 08:53:18

A user testing my MPI wrappers for Python found a couple of problems
with OMPI-1.1 using valgrind, here are his reports.

I've investigated this at OMPI-1.1.2 sources, and found the following
in file ompi/mpi/c/allgatherv.c

       size = ompi_comm_size(comm);
       for (i = 0; i < size; ++i) {
         if (recvcounts[i] < 0) {
         } else if (MPI_DATATYPE_NULL == recvtype) {

Two things to point on this source file :

- I cannot see any special check for the itercommuncator case, and
checking recvcount with 'ompi_comm_size' is wrong, it should be with
remote comm size. Am I right?

- Test for recvtype should be done outside the loop.

In file ompi/mpi/c/gatherv.c, there are special check for intercomms.
However, in the intercomm specific checks, you are still using

As reference, in ompi/mpi/c/alltoallv.c you have

     size = ompi_comm_remote_size(comm);
     for (i = 0; i < size; ++i) {
       if (recvcounts[i] < 0) {
         err = MPI_ERR_COUNT;
       } else if (MPI_DATATYPE_NULL == recvtype) {
         err = MPI_ERR_TYPE;
       } else {
         OMPI_CHECK_DATATYPE_FOR_SEND(err, sendtype, sendcounts[i]);
       OMPI_ERRHANDLER_CHECK(err, comm, err, FUNC_NAME);

This is OK, but perhaps some things can be moved outside the loop.


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