Re: [MPIWG Fortran] F08 and pair types?
We talked about this in detail at the SJC meeting this morning. 1. In MPI 3.1 section 5.9.4 p180, the following types are defined for fortran: ----- MPI_2REAL MPI_2DOUBLE_PRECISION MPI_2INTEGER ----- The following types are defined for C: ----- MPI_FLOAT_INT MPI_DOUBLE_INT MPI_LONG_INT MPI_2INT MPI_SHORT_INT MPI_LONG_DOUBLE_INT ----- 2. What Jeff Hammond asks is quite reasonable; it seems like we should use the Fortran derived types for MINLOC and MAXLOC functionality. The old Fortran types (2REAL, 2DOUBLE_PRECISION, 2INTEGER) exist because there were no derived types back in the early 90's. I think we can make three proposals (NOTE: we need to cross reference these proposals with the RMA and collective working groups, but I want to get the Fortran stuff correct first): 2a. Change the definition of MPI_INTEGER from ----- INTEGER FOO(2) ----- to (please correct my fortran syntax; you all know I have some of it wrong below...) ------ TYPE :: MPI_2INTEGER_TYPE, SEQUENCE INTEGER VAL INTEGER LOC END TYPE ----- Craig assures me that these two Fortran types are exactly the same in memory representation. Hence, even though we're technically changing the back-end representation of MPI_2INTEGER, we're changing it to an exactly equivalent definition. Hence, old codes will not break -- we're just updating to use newer Fortran syntax. Also, create two new types: ----- TYPE :: MPI_REAL_INTEGER_TYPE, SEQUENCE REAL VAL INTEGER LOC END TYPE TYPE :: MPI_DOUBLE_PRECISION_INTEGER_TYPE, SEQUENCE DOUBLE PRECISION VAL INTEGER LOC END TYPE ----- And MPI datatypes corresponding to these two new types: MPI_REAL_INTEGER, MPI_DOUBLE_PRECISION_INTEGER Note: with this one old type (2INTEGER) and the 2 new types (REAL_INTEGER and DOUBLE_PRECISION_INTEGER) correspond to the C types MPI_2INT, MPI_FLOAT_INT, MPI_DOUBLE_INT, respectively. 2b. Create three additional new Fortran types to make parity with the remaining C types (MPI_LONG_INT, MPI_SHORT_INT, MPI_LONG_DOUBLE_INT) -- the names below are completely up for negotiation, and may even be longer than 31 characters: ----- TYPE :: MPI_LONGINTEGER_INTEGER_TYPE, SEQUENCE INTEGER(KIND=whatever) VAL INTEGER LOC END TYPE TYPE :: MPI_SHORTINTEGER_INTEGER_TYPE, SEQUENCE INTEGER(KIND=whatever) VAL INTEGER LOC END TYPE TYPE :: MPI_QUAD_PRECISION_INTEGER_TYPE, SEQUENCE DOUBLE PRECISION(KIND=whatever) VAL INTEGER LOC END TYPE ----- These 3 new Fortran types would then make Fortran support the same types as C. 3. Deprecate the 2 old MPI datatypes that we don't want to encourage use of anymore: ----- MPI_2REAL MPI_2DOUBLE_PRECISION ----- Thoughts?
On Dec 8, 2015, at 10:31 AM, Rolf Rabenseifner <[email protected]> wrote:
Sorry, but I was too fast with my negative answer. Yes, we have both arguments in the reduction and therefore it would be simple to add a new datatype to the list of allowed datatypes for MIN/MAXLOC in Fortran.
Deprecation is too expensive and there is no need.
Rolf
----- Original Message -----
From: "Rolf Rabenseifner" <[email protected]> To: "MPI-WG Fortran working group" <[email protected]> Sent: Tuesday, December 8, 2015 7:22:45 PM Subject: Re: [MPIWG Fortran] F08 and pair types?
I'm sorry, but I expect that deprecation of a language binding is not possible for a feature that is still valid in other languages (here C).
This means, that MINLOC and MAXLOC are as they are defined and there is no reason to deprecate them. They are not wrong and nobody want to pay the maintenance costs for modifying existing applications that use MIN/MAXLOC.
The only way to do it better, is to add a new feature, e.g., MINLOC_F08 and MAXLOC_F08 which is valid only for the new mpi_f08 module.
Rolf
----- Original Message -----
From: "Craig Rasmussen" <[email protected]> To: "MPI-WG Fortran working group" <[email protected]> Sent: Tuesday, December 8, 2015 6:30:37 PM Subject: Re: [MPIWG Fortran] F08 and pair types?
The old stuff could be deprecated because all existing compilers that I know of support user-defined types. I assume that "deprecated" means that it still exists in libraries for legacy apps but is no longer really defined in the standard.
-craig
On Tue, Dec 8, 2015 at 9:19 AM, Craig Rasmusen < [email protected] > wrote:
Fortran is a modern language? Wut...
Actually seems like a simple and good change. For example, could define:
MPI_REAL_INT and MPI_INTEGER_INT
However, I'm not sure what would be in the structs (user-defined types). I'll have to ask Squyres what the text following
"The datatype MPI_FLOAT_INT is as if defined by the following sequence of instructions"
means.
-craig
On Mon, Dec 7, 2015 at 4:20 PM, Jeff Hammond < [email protected] > wrote:
I have a reasonable understanding of why the legacy Fortran bindings use 2REAL, 2DOUBLE_PRECISION and 2INTEGER with {MAX,MIN}LOC reductions.
Doesn't modern Fortran provide a way to create struct-like things along the lines of C, such that more appropriate pair types could be used for these?
The relevant text is section 5.9.4 of MPI 3.1.
Jeff
-- Jeff Hammond [email protected] http://jeffhammond.github.io/
_______________________________________________ mpiwg-fortran mailing list [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-fortran
_______________________________________________ mpiwg-fortran mailing list [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-fortran
-- Dr. Rolf Rabenseifner . . . . . . . . . .. email [email protected] High Performance Computing Center (HLRS) . phone ++49(0)711/685-65530 University of Stuttgart . . . . . . . . .. fax ++49(0)711 / 685-65832 Head of Dpmt Parallel Computing . . . www.hlrs.de/people/rabenseifner Nobelstr. 19, D-70550 Stuttgart, Germany . . . . (Office: Room 1.307) _______________________________________________ mpiwg-fortran mailing list [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-fortran
-- Dr. Rolf Rabenseifner . . . . . . . . . .. email [email protected] High Performance Computing Center (HLRS) . phone ++49(0)711/685-65530 University of Stuttgart . . . . . . . . .. fax ++49(0)711 / 685-65832 Head of Dpmt Parallel Computing . . . www.hlrs.de/people/rabenseifner Nobelstr. 19, D-70550 Stuttgart, Germany . . . . (Office: Room 1.307) _______________________________________________ mpiwg-fortran mailing list [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-fortran
-- Jeff Squyres [email protected] For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
participants (1)
-
Jeff Squyres (jsquyres)