[4.7, RFC, Fortran] Coarray: Moving towards real parallelization

Tobias Burnus burnus@net-b.de
Wed Mar 2 23:04:00 GMT 2011


Hello Ralf,

thanks for your comments.

Ralf Wildenhues wrote:
> The library will depend on the MPI installation, obviously.
> You can make a new target directory and overwrite CC with MPICC
> for that directory.  For choosing the latter, the AX_MPI macro from
> the Autoconf Macro Archive can help.  (I can help with the configure
> setup if needed, just not timely).

OK. Though as it should be a relatively small library with little 
dependency, I assume many users/system administrators will compile it 
separately.

[run the program]
> But maybe you don't need to take care of that but can leave it to the
> user of GCC.

That was my idea - though to have some way for the test suite would be 
useful ...

>> static MPI_Win caf_world_window;
> MPI_Win and one-sided communication is an MPI 2 feature; you need to
> test that since there are (IME) still implementations out there that
> don't fully support this.

The library part is actually not set in stone; there is a MPI 1 proposal 
for its implementation. [1]  However, using MPIv2 was the fastest for 
me. I could imagine that at the end there might be a couple of different 
library implementations. In any case, my current focus is mostly on the 
front end - thus a roughly working library is sufficient for me. Whether 
the polished library will be MPI 1 or MPI 2 or conditionally one or the 
other, the future will tell.

[1] http://gcc.gnu.org/ml/fortran/2010-04/msg00168.html

>>    MPI_Init (argc, argv);
> If you're relying on MPI2 anyway, I suggest you try to not limit your
> users to not use MPI themselves.  So please use MPI_Initialized, and
> don't finalize if the library isn't responsible.

Well, the current implementation relies on an early initialization by 
the front end, the compiler generates a main program, which initializes 
the library. Thus, there is no chance for the user to call MPI earlier. 
However, one should think of having a coarray program, where the main 
program is not a Fortran program. In that case, the parallelization 
library could be called later. However, one then runs into issues like 
initializing the library. I think one has to think carefully about that 
- but supporting coarrays with a non-Fortran main program causes several 
subtle issues.

Tobias

PS: I think I will come back to your offer to help with AX_MPI after the 
first front-end patch is in and the library has been a bit cleaned up.



More information about the Fortran mailing list