SCORPIO  1.7.0
Functions/Subroutines
PIO_initdecomp

Initialize an I/O decomposition. More...

Functions/Subroutines

subroutine spio_decomp::pio_initdecomp_int (iosys, dt, gdims, map, iodesc, rearr, iostart, iocount, ierr)
 Initialize an I/O decomposition. More...
 
subroutine spio_decomp::pio_initdecomp_offset (iosys, dt, gdims, map, iodesc, rearr, iostart, iocount, ierr)
 Initialize an I/O decomposition. More...
 
subroutine spio_decomp::pio_initdecomp_bc (iosys, dt, gdims, mapstart, mapcount, iodesc, ierr)
 Initialize a block cyclic I/O decomposition. More...
 

Detailed Description

Initialize an I/O decomposition.

Function/Subroutine Documentation

◆ pio_initdecomp_bc()

subroutine spio_decomp::pio_initdecomp_bc ( type(iosystem_desc_t), intent(in)  iosys,
integer, intent(in)  dt,
integer, dimension(:), intent(in)  gdims,
integer(pio_offset_kind), dimension(:), intent(in)  mapstart,
integer(pio_offset_kind), dimension(:), intent(in)  mapcount,
type(io_desc_t), intent(inout)  iodesc,
integer, intent(out), optional  ierr 
)

Initialize a block cyclic I/O decomposition.

Parameters
[in]iosysThe handle to the I/O subsystem associated with the I/O decomposition. IO system descriptor structure. This structure contains the general IO subsystem data and MPI structure
[in]dtThe type of the data in memory. Note that users can use an I/O decomposition representing data in memory with type T1 (e.g. real(r8)) to write data for a variable with a different type, say T2 (e.g. real(r4)) as long as T1 can be safely typecasted to T2. The base types supported by PIO are:
  • PIO_double : 8-byte reals or double precision
  • PIO_real : 4-byte reals
  • PIO_int : 4-byte integers
  • PIO_char : character
    Parameters
    [in]gdimsThe global dimensions of the I/O decomposition
    [in]mapstartThe starting indices for the I/O decomposition map for the block cyclic decomposition. Each element in the array corresponds to the start index for the I/O decomposition (mapstart[i] contains the start index for dimension i in the current process). The size of this array needs to be equal to the number of dimensions of the variables/data represented by this I/O decomposition
    [in]mapcountThe number of elements (count)in the I/O decomposition map for the block cyclic decomposition. Each element in the array corresponds to the number of elements for the I/O decomposition (mapcount[i] contains the number of elements for dimension i in the current process). The size of this array needs to be equal to the number of dimensions of the variables/data represented by this I/O decomposition
    [out]iodescThe handle to the I/O decomposition is returned via this arg.
    IO descriptor structure. This structure defines the mapping for a given variable between compute and IO decomposition.
    Parameters
    [out]ierr(Optional) : The error return code. Set to PIO_NOERR on success, or an error code otherwise (See PIO_seterrorhandling for more information on how to customize/set error handling)

◆ pio_initdecomp_int()

subroutine spio_decomp::pio_initdecomp_int ( type(iosystem_desc_t), intent(in)  iosys,
integer, intent(in)  dt,
integer, dimension(:), intent(in)  gdims,
integer(i4), dimension(:), intent(in)  map,
type(io_desc_t), intent(inout)  iodesc,
integer, intent(in), optional, target  rearr,
integer(pio_offset_kind), dimension(:), intent(in), optional  iostart,
integer(pio_offset_kind), dimension(:), intent(in), optional  iocount,
integer, intent(out), optional  ierr 
)

Initialize an I/O decomposition.

Parameters
[in]iosysThe handle to the I/O subsystem associated with the I/O decomposition. IO system descriptor structure. This structure contains the general IO subsystem data and MPI structure
[in]dtThe type of the data in memory. Note that users can use an I/O decomposition representing data in memory with type T1 (e.g. real(r8)) to write data for a variable with a different type, say T2 (e.g. real(r4)) as long as T1 can be safely typecasted to T2. The base types supported by PIO are:
  • PIO_double : 8-byte reals or double precision
  • PIO_real : 4-byte reals
  • PIO_int : 4-byte integers
  • PIO_char : character
    Parameters
    [in]gdimsThe global dimensions of the I/O decomposition
    [in]mapThe mapping between local data index and the global linearized index for each local data element e.g. If after partitioning the local array contains A(2,3) and A(3,3) of an array A[4x4], the map needs to contain [10, 11] corrsponding to the linearized indices of A(2,3) & A(3,3)
    [out]iodescThe handle to the I/O decomposition is returned via this arg.
    IO descriptor structure. This structure defines the mapping for a given variable between compute and IO decomposition.
    Parameters
    [in]rearr(Optional) The data rearranger to use for this I/O decomposition. The three choices to control rearrangement are:
    • PIO_rearr_none : Do not use any form of rearrangement
  • PIO_rearr_box : Use a PIO internal box rearrangement

PIO_rearr_subset : Use a PIO internal subsetting rearrangement

  • PIO_rearr_any : Let the library choose the optimal rearranger
    Parameters
    [in]iostart(Optional) The start array containing the local start index for all the dimensions. i.e., start(i) contains the starting index for data in the current process for dimension i and size(start) = number of dimensions for the data. The start array is passed in for trivial (e.g. block cyclic) decompositions. The library internally calculates this value if not provided by the user.
    [in]iocount(Optional) The count array containing the local count for all the dimensions. i.e., count(i) contains the number of elements of data in the current process for dimension i and size(count) = number of dimensions for the data. The count array is passed in for trivial (e.g. block cyclic) decompositions. The library internally calculates this value if not provided by the user.
    [out]ierr(Optional) : The error return code. Set to PIO_NOERR on success, or an error code otherwise (See PIO_seterrorhandling for more information on how to customize/set error handling)

◆ pio_initdecomp_offset()

subroutine spio_decomp::pio_initdecomp_offset ( type(iosystem_desc_t), intent(in)  iosys,
integer, intent(in)  dt,
integer, dimension(:), intent(in)  gdims,
integer(pio_offset_kind), dimension(:), intent(in)  map,
type(io_desc_t), intent(inout)  iodesc,
integer, intent(in), optional, target  rearr,
integer(pio_offset_kind), dimension(:), intent(in), optional  iostart,
integer(pio_offset_kind), dimension(:), intent(in), optional  iocount,
integer, intent(out), optional  ierr 
)

Initialize an I/O decomposition.

Parameters
[in]iosysThe handle to the I/O subsystem associated with the I/O decomposition. IO system descriptor structure. This structure contains the general IO subsystem data and MPI structure
[in]dtThe type of the data in memory. Note that users can use an I/O decomposition representing data in memory with type T1 (e.g. real(r8)) to write data for a variable with a different type, say T2 (e.g. real(r4)) as long as T1 can be safely typecasted to T2. The base types supported by PIO are:
  • PIO_double : 8-byte reals or double precision
  • PIO_real : 4-byte reals
  • PIO_int : 4-byte integers
  • PIO_char : character
    Parameters
    [in]gdimsThe global dimensions of the I/O decomposition
    [in]mapThe mapping between local data index and the global linearized index for each local data element e.g. If after partitioning the local array contains A(2,3) and A(3,3) of an array A[4x4], the map needs to contain [10, 11] corrsponding to the linearized indices of A(2,3) & A(3,3)
    [out]iodescThe handle to the I/O decomposition is returned via this arg.
    IO descriptor structure. This structure defines the mapping for a given variable between compute and IO decomposition.
    Parameters
    [in]rearr(Optional) The data rearranger to use for this I/O decomposition. The three choices to control rearrangement are:
    • PIO_rearr_none : Do not use any form of rearrangement
  • PIO_rearr_box : Use a PIO internal box rearrangement

PIO_rearr_subset : Use a PIO internal subsetting rearrangement

  • PIO_rearr_any : Let the library choose the optimal rearranger
    Parameters
    [in]iostart(Optional) The start array containing the local start index for all the dimensions. i.e., start(i) contains the starting index for data in the current process for dimension i and size(start) = number of dimensions for the data. The start array is passed in for trivial (e.g. block cyclic) decompositions. The library internally calculates this value if not provided by the user.
    [in]iocount(Optional) The count array containing the local count for all the dimensions. i.e., count(i) contains the number of elements of data in the current process for dimension i and size(count) = number of dimensions for the data. The count array is passed in for trivial (e.g. block cyclic) decompositions. The library internally calculates this value if not provided by the user.
    [out]ierr(Optional) : The error return code. Set to PIO_NOERR on success, or an error code otherwise (See PIO_seterrorhandling for more information on how to customize/set error handling)