Dear OpenMPI developers,
i have a strage problems with OpenMPI 1.2.5 Intel Compiled when i
debug my code under Valgrind 3.3. In a very simple ping-pong MPI
application, i retrieve strange warnings about MPI Communications,
like MPI_Send,MPI_Recv. Valgrind tells me that there are uninitialized
values in send/recv buffers, but there are initialized, i'm absolutely
sure!

There warnings are detected when my application runs over Infiniband
net, so i suspect that there are some conflicts between net
configuration and OpenMPI who confuse Valgrind. Also with OpenMPI 1.26
and 1.28 i have this behaviour. In fact, if my applications runs into
the node, without involve communication net, warnings disappears. In
others MPI applications, every MPI function returns an huge number of
warnings. That's incredible!

In the test machine, OPenMPI is compiled with the follows flags:

 --enable-static --with-mpi-f90-size=medium --with-f90-max-array-dim=8
--disable-ipv6 --with-openib=/usr/local/ofed
--with-openib-libdir=/usr/local/ofed/lib64

and debug flags ( -O0 -g)

In attach at this email, you can find Valgrind report and MPI test application.

Somebody can you help me? Thanks in advance.
-- 
Ing. Gabriele Fatigati

Parallel programmer

CINECA Systems & Tecnologies Department

Supercomputing Group

Via Magnanelli 6/3, Casalecchio di Reno (BO) Italy

www.cineca.it                    Tel:   +39 051 6171722

g.fatig...@cineca.it
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#include <mpi.h>


int main(int argc, char *argv[])
{
   int a, b;
   int rank, size;
   MPI_Status status;
/*    int count, from, to, tag; */

   MPI_Init(&argc, &argv);
   MPI_Comm_rank(MPI_COMM_WORLD, &rank);
   MPI_Comm_size(MPI_COMM_WORLD, &size);

   if(size != 2)
     {
       if(rank == 0)
	 {
	   fprintf(stderr, "ERROR: run this ping pong only on 2 processes ... \n");
	   fflush(stderr);
	 }
       MPI_Finalize();
       exit(EXIT_FAILURE);
     }

   fprintf(stdout, "%d : I am %d of %d : START ... \n", rank, rank, size);
   fflush(stdout);
   sleep(1);

/*    if(rank == 0) from = to = 1; */
/*    if(rank == 1) from = to = 0; */
/*    tag = 1; */
/*    count = 1; */

   a = 10;
   b = -7777;

   if(rank == 0)
     {
       MPI_Send(&a, 1, MPI_INT, 1, 1, MPI_COMM_WORLD);
       MPI_Recv(&b, 1, MPI_INT, 1, 1, MPI_COMM_WORLD, &status);
     }
   else
     {
       MPI_Recv(&b, 1, MPI_INT, 0, 1, MPI_COMM_WORLD, &status);
       MPI_Send(&a, 1, MPI_INT, 0, 1, MPI_COMM_WORLD);
     }
   
   fprintf(stdout, "%d : Received %d ... \n", rank, b);
   fflush(stdout);

   fprintf(stdout, "%d : I am %d of %d : END   ... \n", rank, rank, size);
   fflush(stdout);

   MPI_Finalize();

   

}

Attachment: ValgrindReport.18796
Description: Binary data

Reply via email to