data transfer array index permutation

I have a fortran MPI code that uses a domain decomposition in 2 of the
three spatial indices. I would like to store the data in usual x,y,z
order in a file (i.e. u(i,j,k)) but for performance reasons the domain
decomposition is performed over the i, and j indeces (x, and y
directions). Because of this, In memory on each MPI rank the indeces
are permuted; k is first, followed by i and then j. Is there a way to
perform the index permutation via an appropriate file space and
memspace selection/specification [u(i,j,k) <=> u(k,i,j)] or do I need
to create a do loop (over k) to accomplish this data transfer.
Alternatively I could use the Fortran RESHAPE intrinsic on the buffer
but this will likely cause efficiency problems in terms of memory and
possibly clock cycles.

The user manual seems to indicate that this is possible, but there is
no clear example with code showing how this is done. It just states
that the default is to transfer elements in array element order.

Thanks,
Izaak Beekman

···

===================================
(301)244-9367
UMD-CP Visiting Graduate Student
Aerospace Engineering
ibeekman@umiacs.umd.edu
ibeekman@umd.edu

Hi Izaak,

I have a fortran MPI code that uses a domain decomposition in 2 of the
three spatial indices. I would like to store the data in usual x,y,z
order in a file (i.e. u(i,j,k)) but for performance reasons the domain
decomposition is performed over the i, and j indeces (x, and y
directions). Because of this, In memory on each MPI rank the indeces
are permuted; k is first, followed by i and then j. Is there a way to
perform the index permutation via an appropriate file space and
memspace selection/specification [u(i,j,k) <=> u(k,i,j)] or do I need
to create a do loop (over k) to accomplish this data transfer.

  The HDF5 library currently doesn't provide anything for this permutation.

  Quincey

···

On Aug 21, 2011, at 3:10 PM, Izaak Beekman wrote:

Alternatively I could use the Fortran RESHAPE intrinsic on the buffer
but this will likely cause efficiency problems in terms of memory and
possibly clock cycles.

The user manual seems to indicate that this is possible, but there is
no clear example with code showing how this is done. It just states
that the default is to transfer elements in array element order.

Thanks,
Izaak Beekman

(301)244-9367
UMD-CP Visiting Graduate Student
Aerospace Engineering
ibeekman@umiacs.umd.edu
ibeekman@umd.edu

_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org