Subject: Recently received

From: [email-masked]
Date: Thu, 11 Jun 92 16:31:04 -0500

This arrived (in hardcopy format) during the HPFF meeting.  I offer it
as fodder for the F90 group discussion.  Typos are mine.

					Chuck

						[email-masked]
						713-297-1061
						June 6, 1992

Dear Charles,

Here is a report that I mentioned to you.  In the Introcudtion, parge
1, there is a list of the critical language elements that will allow
us to write viable mathematical software.  I think that any proposal
by the HPF that skirts the full standard, in any way, is asking for
resistance by the user community.  I suggest you should implement the
entire standard in your binding.  Perhaps leaving it up to the
individual hardware vendors about small details.  That way the
software vendors can move functioning code to new machines with a
minimum of changes.

						Sincerely,
						Richard J. Hanson
						Senior Mathematical Designer
						Technical Staff

-------------------------------------------------------------------------------

[the report is 21 pages long - here's the first page]

A Design of High-Performance Fortran 90 Libraries
by Richard J. Hanson, IMSL, Inc.
IMSL Technical Report Series No. 9201

1. Introduction and Rationale

The aspect of scientific computation that emplowys parallel computing
resources is a maturing subject that requires some retraining of
programmers who are principally familiar with sequential compution.
IMSL, Inc. wants to help programmers by providing mathematical
software products of the highest quality.

Practitioners and programmers tolerate the complications associated
with exploiting parallel computing resources because of requirements
for efficiency in application software.  It is an elementary
observation that to complete disjoint tasks, parallel activity is
going to be efficient.  This fits well with common life experience:
share the work to get it done faster.  What may not ahve a counterpart
in life experience is the control, communication and synchronization
associated with parllel computing activities.

This report outlines methods for the entire design and support cycle
leading to a transportable subroutien and interface library.  The
resulting product can be used as the basis for massively parallel or
mult8i-tasking, shared memory computations.  The implementations are
specific to the Fortran 90 language.  The model for the livrary
defined in the following sections makes no assumption about the
operating system that is not supported in the language.

The critical new language elements, allocatable arrays, automatic
arrays, optional arguments, derived types, and internal subroutines,
recursive subroutines, and modules, provide the means to design
high-quality library codes that do double duty: they can function in a
serial or parallel code.  Our experiments with the language are based
on the compiler from NAG (1991).

The model of massively parallel or multi-tasking computing the we
believe will be effective consists of algorithsm written in Fortran 90
together with critical implementation details.  Several key points
that contribute to the portability of this software are listed below.
Section 3, "Technical Differences", on page 4 and Section 4, "Option
Arrays", on page 6 discuss each of these matters separaately.  Section
6, "sample Routines", on page 7 gives examples of using a linear
solver and a one-dimensional function minimizing routine.

	* Copies of private vraiables can be saved in the called
program unit whenever the routine is to be reentered in a predictable
state.

	* COMMON is not used in any HL Series code

	* No output is attempted; a derived type is optionally used
for the logical pointers to error messages that are delivered by a
utility.

	* STOP is not executed.

	* Optional arguments, including error and option arrays,
specified as derived dta types, are used to shorten argument lists and
communicate data for output.