On 10/01/2015 10:40 AM, Dorier, Matthieu wrote:
Ok thanks Rajeev.
I came up with this problem when trying to read multiple blocks of a 3d array in a file, with overlapping blocks. I was creating a set of MPI_Datatypes using the MPI_Type_create_subarray, and combining these types using MPI_Type_create_struct, passing the result to MPI_File_set_view.
If you have any suggestion on how to (easily) use collective I/O in a context where each process has a set of blocks to load from a big 3d array (blocks can overlap within and across processes, due to ghost zones), I'm all listening.
this case is uncommon, since it's unusual to store the ghost cells in the file. The ghost cells are duplicated data, so for a lot of applications (like the FLASH plotfile and checkpoint formats) the ghost cells are omitted when writing. ==rob
Thanks,
Matthieu ________________________________________ From: Thakur, Rajeev [[email protected]] Sent: Thursday, October 01, 2015 10:34 AM To: [email protected] Subject: Re: [mpich-discuss] Question on MPI_Type_create_struct
No, the file offsets represented by the file view must be "monotonically nondecreasing” (3.1, 492:5-6). You can do the permutation instead in the datatype describing memory buffer in the read call. No restrictions on that datatype.
Rajeev
On Oct 1, 2015, at 10:10 AM, Dorier, Matthieu <[email protected]> wrote:
(I meant "ACBD" in the first case, not "ACDB")
From: Dorier, Matthieu [[email protected]] Sent: Thursday, October 01, 2015 10:03 AM To: [email protected] Subject: [mpich-discuss] Question on MPI_Type_create_struct
Hi,
Suppose I have a file containing "ABCD", I build a type that would let me read "AC" and another type allowing me to read "BD". Can I then create a struct type using MPI_Type_create_struct combining the 2 types, and use it in an MPI_File_set_view such that if I then read 4 bytes on the file, I get "ACDB" in my buffer?
If so, another more complicated scenario: say my first type would let me read "ACD" from the file and the second type would allow me to read "BC", can I then build a struct type using those two types, use it in an MPI_File_set_view to get "ACDBC" if I read 5 bytes?
Thanks,
Matthieu _______________________________________________ discuss mailing list [email protected] To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/discuss
_______________________________________________ discuss mailing list [email protected] To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/discuss _______________________________________________ discuss mailing list [email protected] To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/discuss
-- Rob Latham Mathematics and Computer Science Division Argonne National Lab, IL USA _______________________________________________ discuss mailing list [email protected] To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/discuss