This manual page is for Mac OS X version 10.6

If you are running a different version of Mac OS X, view the documentation locally:

  • In Terminal, using the man(1) command

Reading manual pages

Manual pages are intended as a quick reference for people who already understand a technology.

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

  • For more information about this technology, look for other documentation in the Apple Reference Library.

  • For general information about writing shell scripts, read Shell Scripting Primer.



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)

Reporting Problems

The way to report a problem with this manual page depends on the type of problem:

Content errors
Report errors in the content of this documentation with the feedback links below.
Bug reports
Report bugs in the functionality of the described tool or API through Bug Reporter.
Formatting problems
Report formatting mistakes in the online version of these pages with the feedback links below.