In NetCDF/PnetCDF, there is an API family named varm that can achieve such effect.
APIs nc_put_varm_int/ncmpi_put_varm_int allows users to writes a mapped array section of values. The argument imap can be used to describe the "transpose" layout of the write buffer. See their API references in http://cucis.ece.northwestern.edu/projects/PnetCDF/doc/pnetcdf-c/ncmpi_005fput_005fvarm_005f_003ctype_003e.html http://www.unidata.ucar.edu/software/netcdf/docs/group__variables.html#ga3ff88687cfc7b58293a1cc883780b453 In PnetCDF internal implementation, the write buffer is first transposed to a temporary buffer which is then written to file. The in-memory 2D transpose is done by first creating an MPI derived datatype based on the imap argument, followed by a call to MPI_Pack to "pack" the write buffer to the temporary buffer. So, the only subroutine an HDF5 user program needs is that in-memory transpose. I can extract such subroutine from PnetCDF, but it will be using MPI. Let me know. If you are interested in the PnetCDF case, an example C program is available in http://trac.mcs.anl.gov/projects/parallel-netcdf/browser/trunk/examples/C/transpose.c and a short description in http://trac.mcs.anl.gov/projects/parallel-netcdf/browser/trunk/examples/README Wei-keng > A coworker and I are mulling over if its possible to take a simple 3x3 > matrix (stored row major) in a dataspace and write it out transposed to > disk using a hyperslab. It seems that the grammer provided by start, > stride, blocks, and count won't allow for this. We hope we are wrong! It > is possible to do this? > > Thanks, > Isaac _______________________________________________ Hdf-forum is for HDF software users discussion. [email protected] http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org Twitter: https://twitter.com/hdf5
