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(); }
ValgrindReport.18796
Description: Binary data