(j3.2006) (SC22WG5.3813) [ukfortran] Ballot on the technical content of the TR

Aleksandar Donev donev1 at llnl.gov
Wed Dec 10 14:08:30 EST 2008


Hi Jim,

> Last thing I'd like to mention is in N1761 assumed-rank arrays are
> always passed using a Fortran descriptor.  This was a big change from
> the original response to MPI forum that Fortran standardize
> IGNORE_TKR.
The thinking (at least mine) was that "TYPE(*), DIMENSION(*)" already 
provides a kind of IGNORE_TKR since the actual can be of any type and 
even rank, by virtue of the long-existing practice of sequence 
association. However, Reinhold has pointed out recently that sequence 
association does not work with generic resolution, nor does it work 
with a scalar actual that is not an array element. He has 
proposed "DIMENSION(**)" to specify a dummy that is passed by address 
and can be matched by an actual of any rank (including scalar), even in 
generic resolution. Would that help?

DIMENSION(..) was meant to be used in new, "modern" interfaces, where 
descriptors are passed. They add a lot of power to the descriptor TR, 
coming from a user perspective. They won't help the old "F77" folks, 
but, I can assure you, there are scientific programmers that know F90 
and onward and can and will use them.

> I believe this was caused by tangling the MPI
> request with TR 29113.
As I explained above there was no "tangling". These are separate pieces 
of an effort to "improve interoperability with C" for types of dummy 
arguments that do not exist in both languages, so one language needs to 
do something new (C has to construct descriptors, and Fortran needs to 
learn how "void*" works).

> To me we shouldn't do that and we'd better 
> leave them separate, i.e. response to MPI folks with something else,
> and remove the assumed-type and assumed-rank features from TR 29113.
I am very opposed to further delays by a needless wasted effort to go 
backwards. Let's make something work and publish the damn TR. We could 
even make it a two-part document, so that vendors can only implement 
one and say so. The first part would be the "void*" part (allowing type 
and some kind of rank mismatch between actual and dummy), and the 
second the descriptor part.

Best,
Aleks

-- 
Aleksandar Donev, Ph.D.
Lawrence Postdoctoral Fellow @ Lawrence Livermore National Laboratory
High Performance Computational Materials Science and Chemistry
E-mail: donev1 at llnl.gov
Phone: (925) 424-6816  Fax: (925) 423-0785
Address: P.O.Box 808, L-367, Livermore, CA 94551-9900
Web: http://cherrypit.princeton.edu/donev



More information about the J3 mailing list