Re: [MPI3 Fortran] Proposing changes to Fortran 2008
Hi, I think what is required is an option/attribute for an argument that it should behave such as in Fortran 77 and before: This means (*) Don't check (ignore) the type and rank of the corresponding argument in the calling program (*) Don't perform copy in/copy out for that argument before/after calling the routine (especially important for all non-blocking routines such as MPI_Isend, MPI_Irecv and all possibly newly introduced non-blocking MPI routines) (*) Pass the reference/pointer of the (first) variable to the subroutine; no descriptor This is exactly what was done by the old Fortran 77 compilers (except for character variables on some other compilers (Cray, ...)) This must be still possible, since Fortran must support the old object files. This is also important for all derived MPI datatypes Such an option would be not only beneficial for MPI. I'm also programming Fortran libraries for coupling climate/weather codes and I have the problem also within these Fortran libraries that I cannot give an interface description for some general routines since the number of possibilities by different types and ranks is too large. Therefore, I don't provide an interface description for these routines and Fortran already fulfills the items above except for the copy in/copy out requirement. MPI and Fortran 77 have worked without any problems (except for the character variables for which sometimes a pointer to a structure was passed). The problems with the number of interfaces and copy-in/copy-out of (sub-)vectors/arrays were introduced by Fortran 90. Thus, an attribute for an argument "Behave such as without interface description and don't perform copy-in/copy-out" (or 2 separate attributes "Behave such as without interface description" and "don't perform copy-in/copy-out) would be beneficial for each (FORTRAN) library programmer and would help the compiler guys in the decision, whether a copy-in/copy out has to be performed, and can improve the performance of the Fortran code. Hubert
participants (1)
-
Hubert Ritzdorf