ADC Home > Reference Library > Reference > Mac OS X > Mac OS X Man Pages

 

This document is a Mac OS X manual page. Manual pages are a command-line technology for providing documentation. You can view these manual pages locally using the man(1) command. These manual pages come from many different sources, and thus, have a variety of writing styles.

For more information about the manual page format, see the manual page for manpages(5).



MPI_Type_indexed(3OpenMPI)                                                        MPI_Type_indexed(3OpenMPI)



NAME
       MPI_Type_indexed - Creates an indexed datatype.


SYNTAX
C Syntax
       #include <mpi.h>
       int MPI_Type_indexed(int count, int *array_of_blocklengths,
            int *array_of_displacements, MPI_Datatype oldtype,
            MPI_Datatype *newtype)


Fortran Syntax
       INCLUDE 'mpif.h'
       MPI_TYPE_INDEXED(COUNT, ARRAY_OF_BLOCKLENGTHS,
                 ARRAY_OF_DISPLACEMENTS, OLDTYPE, NEWTYPE, IERROR)
            INTEGER   COUNT, ARRAY_OF_BLOCKLENGTHS(*)
            INTEGER   ARRAY_OF_DISPLACEMENTS(*), OLDTYPE, NEWTYPE
            INTEGER   IERROR


C++ Syntax
       #include <mpi.h>
       Datatype Datatype::Create_indexed(int count,
            const int array_of_blocklengths[],
            const int array_of_displacements[]) const


INPUT PARAMETERS
       count     Number  of  blocks  -- also number of entries in array_of_displacements and array_of_block-lengths array_of_blocklengths
                 lengths (nonnegative integer).

       array_of_blocklengths
                 Number of elements per block (array of nonnegative integers).

       array_of_displacements
                 Displacement for each block, in multiples of oldtype extent (array of integer).

       oldtype   Old datatype (handle).


OUTPUT PARAMETERS
       newtype   New datatype (handle).

       IERROR    Fortran only: Error status (integer).


DESCRIPTION
       The function MPI_Type_indexed allows replication of an old datatype into a sequence of  blocks  (each
       block  is  a  concatenation  of the old datatype), where each block can contain a different number of
       copies and have a different displacement. All block displacements  are  multiples  of  the  old  data
       type's extent.


       Example:  Let oldtype have type map {(double, 0), (char, 8)}, with extent 16. Let  B = (3, 1) and let
       D = (4, 0).  A call to MPI_Type_indexed(2, B, D, oldtype, newtype) returns a datatype with type map

           {(double, 64), (char, 72), (double, 80), (char, 88),
           (double, 96), (char, 104),
           (double, 0), (char, 8)}

       That is, three copies of the old type starting at displacement 4 x 16 = 64, and one copy starting  at
       displacement 0.

       In general, assume that oldtype has type map

           {(type(0), disp(0)), ..., (type(n-1), disp(n-1))},

       with  extent ex. Let B be the array_of_blocklength argument and D be the array_of_displacements argu-ment. argument.
       ment. The newly created datatype has
       n x S ^count-1
           i = 0           B[i]  entries:

           {(type(0), disp(0) + D[0]* ex), ...,
           (type(n-1), disp(n-1) + D[0]* ex), ...,
           (type(0), disp(0) + (D[0] + B[0]-1)* ex), ...,
           (type(n-1), disp(n-1) + (D[0]+ B[0]-1)* ex), ...,
           (type(0), disp(0) + D[count-1]* ex), ...,
           (type(n-1), disp(n-1) + D[count-1]* ex), ...,
           (type(0), disp(0) +  (D[count-1] + B[count-1] -1)* ex), ...,
           (type(n-1), disp(n-1) + (D[count-1] + B[count-1] -1)* ex)}

       A call to MPI_Type_vector(count, blocklength, stride, oldtype, newtype) is equivalent to  a  call  to
       MPI_Type_indexed(count, B, D, oldtype, newtype) where

           D[j] = j * stride, j = 0,..., count-1

       and

           B[j] = blocklength, j = 0, .., count-1


ERRORS
       Almost  all  MPI  routines return an error value; C routines as the value of the function and Fortran
       routines in the last argument. C++ functions do not return errors. If the default  error  handler  is
       set  to MPI::ERRORS_THROW_EXCEPTIONS, then on error the C++ exception mechanism will be used to throw
       an MPI:Exception object.

       Before the error value is returned, the current MPI error handler is called. By default,  this  error
       handler  aborts  the  MPI  job, except for I/O function errors. The error handler may be changed with
       MPI_Comm_set_errhandler; the predefined error handler MPI_ERRORS_RETURN may be used  to  cause  error
       values  to  be  returned.  Note  that MPI does not guarantee that an MPI program can continue past an
       error.


SEE ALSO
       MPI_Type_create_hindexed
       MPI_Type_hindexed




Open MPI 1.2                                   September 2006                     MPI_Type_indexed(3OpenMPI)

Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.