Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

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