(j3.2006) [MPI3 Fortran] Feedback from Fortran J3 meeting
William B. Clodius
wclodius
Thu May 29 22:18:48 EDT 2008
On May 29, 2008, at 11:35 AM, Bill Long wrote:
> I generally agree with Aleks here. We should not embed particular
> libraries like MPI in the standard - it is possibly subject to
> obsolescence (we might have picked PVM before), and inevitably subject
> to incompleteness (...I want LaPack!). Instead, we have chosen to
> interface with C under the assumption that the combination of C and
> Fortran calling conventions should cover most libraries. The problem
> with some C library routines (including many in MPI) is that our
> interface does not handle (void *) dummy arguments well. Fixing
> that is
> a big part of the current discussion.
>
> Vendors, for performance reasons, of course, can recognize MPI
> routines
> as additional intrinsics and optimize their calls. Ditto for BLAS and
> LaPack routines. But I think this sort of thing should remain outside
> the Fortran standard. We're in the business of defining a language,
> not
> writing people's programs or picking their library packages for them.
> (Yeah, I know there is a gray area with the Fortran intrinsics, but
> most
> of those are not really library routines.)
<snip>
I disagree. Picking library packages for users is an important part of
defining a language. A large part of any language is the vocabulary,
and in computer languages the vocabulary is largely provided by
libraries. A problem with many language definitions is a failure to
define a sufficiently large and useful set of libraries. Wirth's
languages in particular had that problem.
For its first few decades Fortran could get by with a relatively small
set of standard defined intrinsics, because as the first relatively
useful language it quickly built up a set of public domain libraries
that serve as defacto standards, but those libraries were not well
integrated, have often not kept up with the time, and are not commonly
discussed in Fortran texts. Some of those libraries, SLATEC comes to
mind, make assumptions about such thing as argument passing that are
not standard conforming. As a result people recreate similar libraries
whose unfamiliar names and structure complicate the understanding of
programs, and often rely on the quirks of specific compilers making
portability harder. Identifying and documenting useful libraries
within a (alternate?) standard is a relatively easy way of improving
the language's functionality, particularly if the libraries are
already in existence.
More information about the J3
mailing list