[mpich2-dev] regression in datatype decoding

Lisandro Dalcin dalcinl at gmail.com
Tue Oct 2 12:41:58 CDT 2012


This morning I've svn updated mpich2-dev and rebuilt. I think I've
found a regression running mpi4py testsuite (I believe last time I
tried all my tests passed, but I could be confused).

To help you debug the issue, see the C program at the end. On decoding
a type created with MPI_Type_create_hindexed_block(), I expect to get
displacements in the array of addresses, however I'm getting the
displacements in the array of integers. This is my ouput for the C
code below:

$ mpicc decode.c
$ ./a.out
integers:  4 2 0 8 16 24
addresses:
datatypes: MPI_INT,

This smells as copy&paste oversight from MPI_Type_create_indexed_block().

#include <mpi.h>
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
  MPI_Datatype t;
  int count = 4;
  int blocklength = 2;
  MPI_Aint displacements[] ={0, 8, 16, 24};

  MPI_Init(0,0);

  MPIX_Type_create_hindexed_block(count, blocklength,
                                  displacements, MPI_INT,
                                  &t);
  MPI_Type_commit(&t);
  {
    int ni, na, nd, combiner;
    int i[1024];
    MPI_Aint a[1024];
    MPI_Datatype d[1024];
    int k;
    MPI_Type_get_envelope(t, &ni, &na, &nd, &combiner);
    MPI_Type_get_contents(t, ni, na, nd, i, a, d);

    printf("integers:  ");
    for (k=0;k<ni;k++) printf("%d ",i[k]);
    printf("\n");

    printf("addresses: ");
    for (k=0;k<na;k++) printf("%d ",a[k]);
    printf("\n");

    printf("datatypes: ");
    for (k=0;k<nd;k++) {
      char name[MPI_MAX_OBJECT_NAME]; int n;
      MPI_Type_get_name(d[k],name,&n);
      printf("%s, ",name);
    }
    printf("\n");

  }

  MPI_Type_free(&t);
  MPI_Finalize();
}



-- 
Lisandro Dalcin
---------------
CIMEC (INTEC/CONICET-UNL)
Predio CONICET-Santa Fe
Colectora RN 168 Km 472, Paraje El Pozo
3000 Santa Fe, Argentina
Tel: +54-342-4511594 (ext 1011)
Tel/Fax: +54-342-4511169


More information about the mpich2-dev mailing list