@brief subroutine that, given a global grid, VDC blocksize, and max # of nioprocs, will
automatically create an VDC optimized IO decomposition that uses the most possible IO tasks
POST-EFFECTS:
Each MPI Task is now either and IO task or a computational task. IO tasks have nonzero start/counts
@param[in] rank int rank of the current MPI task
@param[inout] nioprocs int represents the max possible # of IO procs,
@algorithm will try to get as close as possible to this # and return it in nioprocs
@param[in] blockdims int(3) global grid dimensions represented as VDC blocks
@param[out] start int(3) iostart for the current MPI task
@param[out] count int(3) iocount for the current MPI task
@param[in] bsize int(3) VDC block size
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=i4), | intent(in) | :: | rank | |||
integer(kind=i4), | intent(inout) | :: | nioprocs | |||
real(kind=r4), | intent(in), | dimension(:) | :: | block_dims | ||
integer(kind=PIO_OFFSET), | intent(out) | :: | start(3) | |||
integer(kind=PIO_OFFSET), | intent(out) | :: | count(3) | |||
integer(kind=i4), | intent(in), | dimension(:) | :: | bsize | ||
integer(kind=i4), | intent(in), | dimension(:) | :: | data_dims |