MPI_Register_datarep MPI_File_get_type_extent
Sun MPI I/O supports the basic data representations described in Section 9.5 of the MPI-2 standard:
native - With native representation, data is stored exactly as in memory, in other words, in Solaris/UltraSPARC data representation. This format offers the highest performance and no loss of arithmetic precision. It should be used only in a homogeneous environment, that is, on Solaris/UltraSPARC nodes running Sun ClusterTools software. It may also be used when the MPI application will perform the data type conversions itself.
internal - With internal representation, data is stored in an implementation-dependent format, such as for Sun MPI 4.0.
external32 - With external32 representation, data is stored in a portable format, prescribed by the MPI-2 and IEEE standards.
These data representations, as well as any user-defined representations, are specified as an argument to MPI_File_set_view.
You may create user-defined data representations with MPI_Register_datarep. Once a data representation has been defined with this routine, you may specify it as an argument to MPI_File_set_view, so that subsequent data-access operations will call the conversion functions specified with MPI_Register_datarep.
If the file data representation is anything but native, you must be careful when constructing elementary data types and file types. For those functions that accept displacements in bytes, the displacements must be specified in terms of their values in the file for the file data representation being used.
MPI_File_get_type_extent can be used to calculate the extents of data types in the file. The extent is the same for all processes accessing the specified file. If the current view uses a user-defined data representation, MPI_File_get_type_extent uses one of the functions specified in setting the data representation to calculate the extent.