Memory Alignment in Co-Array Fortran

Memory Alignment in Co-Array Fortran

We are attempting to use Direct IO file I/O with Coarray Fortran (CAF)

We would like to write a distributed CAF array to a file opened via Direct IO (e.g. the O_DIRECT flag in the unix open(...) command).

In order for this to work, the distributed CAF array must be aligned to a specific logical block size (typically 512 or 4096).

What compiler flag or other method is needed to align CAF arrays in memory? Is this even possible?


    * We perform memory alignment in FORTRAN by calling an external C function to call POSIX_MEMALIGN(..). This alignment method works well, but does not work with CAF.

    * We would prefer not to copy a CAF array to an aligned local array before writing to disk because of the overhead associated with the copy.

1 post / 0 new
For more complete information about compiler optimizations, see our Optimization Notice.