This directory hosts an early draft for a Coarray run-time libarary on MPI basis. ------------------ IDEA ------------------- Calls to a wrapper run-time library will be generated; the first implementation will use MPI; library is available as source thus the local MPI can be used. The wrapper calls are enabled using some option like -fcoarray=library/lib/... Possible extensions: * An option to enable direct thread support (rather than, e.g., an implementation, which uses the wrapper-library ABI): -fcoarray=thread/shared/openmp/... * A debug version, which generates checks by passing more information to the wrapper library, e.g. -fcoarray=lib-debug * An option to preset the number of images, which allows some optimizations in the compiler, but must be checked at run-time (if not setable by the CAF program). -fcoarray-num-images=, n >= 0 (0 = run-time determined) Example usage: mpicc -c libgfortran_coarray_mpi.c gfortran -fcoarray=library -c myFort*.f90 mpif90 myFort*.o libgfortran_coarray_mpi.o (If needed, one can still use "ar" to create a lib*.a to place it into $SYSLIBDIR) ------------------ REFERENCES ------------------- For more details, have a look at http://users.physik.fu-berlin.de/~tburnus/coarray/README.txt and http://gcc.gnu.org/ml/fortran/2010-04/msg00168.html ------------------ IMPLEMENTATION --------------- The library should be written to be compatible with MPIv1.x or with MPIv2.1/MPIv2.2; if possible compatible to both with #ifdefs. Similarly, there should be optional error checks. MPI standard, see http://www.mpi-forum.org/docs/docs.html MPI tutorial for mere beginners ;-) https://computing.llnl.gov/tutorials/mpi/