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.
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?
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.
> 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