[mpich-discuss] custom defined mpi data type

Sufeng Niu sniu at hawk.iit.edu
Mon Jul 15 16:32:40 CDT 2013


I try to broadcast a self-defined data type struct, but I found that every
time the last value I cannot send it out. ex:
my data struct is:
typedef struct image_info_type{
        int width;
        int length;
        int page_num;
        int buffer_width;
        int buffer_length;
        long int buffer_size;
        long int image_size;
} image_info_type;

in my MPI program:
        int count = 7;
        MPI_Datatype MPI_Imageinfo;
        MPI_Datatype types[7] = {MPI_INT, MPI_INT, MPI_INT, MPI_INT,
        int len[7] = {1, 1, 1, 1, 1, 1, 1};
        MPI_Aint disp[7];
        long int base;
        MPI_Address(image_info, disp);
        MPI_Address(&(image_info->width), disp+1);
        MPI_Address(&(image_info->length), disp+2);
        MPI_Address(&(image_info->page_num), disp+3);
        MPI_Address(&(image_info->buffer_width), disp+4);
        MPI_Address(&(image_info->buffer_length), disp+5);
        MPI_Address(&(image_info->buffer_size), disp+6);
        base = disp[0];
        for(i=0; i<7; i++)
                disp[i] -= base;

        MPI_Type_struct(count, len, disp, types, &MPI_Imageinfo);

However, when I print out every information on each rank. the image_size is
always 0. I cannot figure out anything wrong with my program. I would
appreicate that if any one can give any suggestions. Thank you!

Best Regards,
Sufeng Niu
ECASP lab, ECE department, Illinois Institute of Technology
Tel: 312-731-7219
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mpich.org/pipermail/discuss/attachments/20130715/6bceb8ed/attachment.html>

More information about the discuss mailing list