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.

http://projects.scipy.org/mpi4py/ticket/9
http://projects.scipy.org/mpi4py/ticket/10

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) {
           return OMPI_ERRHANDLER_INVOKE(comm, MPI_ERR_COUNT, FUNC_NAME);
         } else if (MPI_DATATYPE_NULL == recvtype) {
           return OMPI_ERRHANDLER_INVOKE(comm, MPI_ERR_TYPE, FUNC_NAME);
         }
       }

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
'ompi_comm_size'

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.

Regards,

-- 
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