Subject: hpff-core: New Proposed Chapter structure

From: [email-masked] (Chuck Koelbel)
Date: Wed, 17 Jan 1996 14:59:56 -0600

---------------------------------------------------------------------------
[email-masked] is a mailing list for announcements related to High
Performance Fortran.  Instructions for adding or deleting yourself
from this list appear at the bottom of this message.
---------------------------------------------------------------------------
This was discussed Friday, after many people had left.  Most of this is
still open to discussion, certainly until we pick the official Word
Processor of HPFF.  (Maybe we can support the meetings with corporate
sponsorships?  Must investigate...)

Feedback that would be especially welcome:

* After all the course corrections, should Fortran 95 be the base document
for HPF 2.0?  Or should we base on F90?

* Should we revise/expand the HPF Model section?  If so, who will write it?

* Should HPF_LOCAL and HPF_SERIAL be part of the EXTRINSIC chapter, or
stand-alone chapters?

* Do we want a "FORTRAN 77 and HPF" Chapter?  If so, who will write it?

* Are any features clearly in the wrong part?

* Is there a better way to separate Kernel HPF features from HPF 2.0
features?  (My intent is that they appear in separate subsections of the
same chapter.)

                                                Chuck

Proposed Outline for HPF 2.0 Language Specification

Outermost outline level is "Part"
Next is "Chapter"
Then "Section"/"Subsection"/etc.

ZERO. Front Matter
        [note that there is no Roman numeral for "0"]
        Copyright notice [still (c) Rice University]
        Table of Contents
        Acknowledgements
        * HPFF Acknowledgements
        * HPFF 94 Acknowledgements
        * HPFF 2.0 Acknowledgements

I. High Performance Fortran 2.0

   1. Overview
        o Goals and Scope of High Performance Fortran 2.0
             + Goals of HPF 2.0
             + Goals of Kernel HPF
             + Goals of Extended Features
        o Fortran 95
             [*very* brief description of features most important for HPF]
             [Any omitted features (POINTER) are spelled out here]
        o New Features in High Performance Fortran
             + Data Distribution Features
             + Data Parallel Execution Features
             + Intrinsic Functions and Standard Library
             + Extrinsic Procedures
        o Organization of this Document

   2. High Performance Fortran Terms and Concepts
        o Typographic Conventions
             [includes "Rationale", "Advice to XXX", code fragments, etc.]
        o BNF Notation
        o Syntax of Directives
        o Frequently-Used Terms
             + HPF-Conforming
             [Can/should we say "in the kernel" rather than
             "kernel-conforming"?  Might make the kernel sound less like a
             stand-alone language]
             + System Dependent
             [as opposed to the F90 "processor-dependent" term :-)]
             + Mapping Terms
             ["explicitly mapped" and the like appear in several places]
             + Execution Terms
             ["active processor subset" and the like will be needed for
             mapping under an ON clause]
        o The HPF Model
             + Simple Communication Examples
             + Aggregate Communication Examples
             + Interaction of Communication and Parallelism

   3. Data Alignment and Distribution Directives
        o Data Mapping Model
            [Maybe this should be part of the model in Chapter 2?]
        o Syntax of Data Alignment and Distribution Directives
             [This is the top-level syntax, i.e. "ALIGN and DISTRIBUTE are
             kinds of attributes"]
        o DISTRIBUTE Directive
             + General Syntax and Semantics
             + Distribution Patterns in Kernel HPF
             + Additional Distribution Patterns in HPF 2.0
        o ALIGN Directive
             + General Syntax and Semantics
             + Alignment Options in Kernel HPF
             + Additional Distribution Patterns in HPF 2.0
        o Mapping of Allocatable Arrays
        o PROCESSORS Directive
        o TEMPLATE Directive

   4. Alignment, Distribution, and Procedure Interfaces
        [If any of these features are not in Kernel HPF, then there should
        be subsections for "Kernel HPF" and "HPF 2.0" as above]
        o Implicit Interfaces
             [Are only allowed if the explicit mapping of caller and callee
             match.]
        o Explicit Interfaces
             + Prescriptive Mappings [which now subsume descriptive
             mappings]
             + Transcriptive Mappings
        o INHERIT Directive
        o Storage Association
             + Definition and Examples
             + Storage Association Rules
               [Now only one rule: "Thou shalt not map storage-associated
               arrays"]
             + Storage Association Discussion
             + Sequence Directives
        o Argument Passing and Sequence Association
             + Sequence Association Rules
             + Discussion of Sequence Association
             + Examples of Sequence Association

   5. Data Parallel Statements and Directives
        o The FORALL Statement and Construct
             [Only if there are differences from Fortran 95]
        o Pure Procedures
             [Only if there are differences from Fortran 95]
        o The INDEPENDENT Directive
             + General Syntax and Semantics
               [Including the REDUCTION "external" syntax]
             + INDEPENDENT Options in Kernel HPF
             + INDEPENDENT Options in HPF 2.0
             + Examples of INDEPENDENT
             + Visualization of INDEPENDENT Directives

   6. Intrinsic and Library Procedures
        [I believe that all HPF 1.1 library procedures are in Kernel HPF.]
        o Notation
        o System Inquiry Intrinsic Functions
        o Computational Intrinsic Functions
             [Were these adopted into F95?  If so, this section can be
             dropped]
        o Library Procedures
             + Mapping Inquiry Subroutines
             + Bit Manipulation Functions
             + Array Reduction Functions
             + Array Combining Scatter Functions
             + Array Prefix and Suffix Functions
             + Array Sorting Functions
        o Generic Intrinsic and Library Procedures
             + System inquiry intrinsic functions
             + Array location intrinsic functions
             + Mapping inquiry subroutines
             + Bit manipulation functions
             + Array reduction functions
             + Array combining scatter functions
             + Array prefix and suffix functions
             + Array sort functions
        o Specifications of Intrinsic Procedures
             [Several of them]
        o Specifications of Library Procedures
             [Gobs of them]

   7. Input and Output
        [I believe asynchronous I/O was adopted into HPF 2.0.  If not,
        this chapter should be moved into Part II.]
        o Asynchronous I/O Operations

   8. Extrinsic Procedures
        [I believe these are all in Kernel HPF]
        o Overview
        o Definition and Invocation of Extrinsic Procedures
        o Requirements on the Called Extrinsic Procedure

   9. HPF_LOCAL Interface
        [I believe all this is in Kernel HPF]
        [This could be made a section under Chapter 8.]
        o Conventions for Local Subprograms
           + Conventions for Calling Local Subprograms
           + Calling Sequence
           + Information Available to the Local Procedure
        o HPF_LOCAL Restrictions
        o HPF_LOCAL Argument Association
        o HPF_LOCAL Routine Library
        o Example HPF_LOCAL Procedures

   10. HPF_SERIAL Interface
        [I believe all this is in Kernel HPF]
        [This could be made a section under Chapter 8.]
        o Conventions for Uniprocessor Subprograms
           + Calling Sequence
        o HPF_SERIAL Restrictions
        o HPF_SERIAL Runtime Library
        o Example HPF_SERIAL Procedures

   11. Kernel HPF
        o Motivation for a Kernel Language
        o HPF 2.0 Features in Kernel HPF
        o HPF 2.0 Features *not* in Kernel HPF
        o Discussion of Kernel HPF Features
          [i.e. Justify the choices above.]

II. Extended Features for High Performance Fortran

   12. Overview of Extended Features
        o Motivation for Extended Features
        o Relationship to HPF 2.0
        o Extended Features in High Performance Fortran
             + Extended Data Distribution Features
             + Extended Data Parallel Execution Features
             + Extended Intrinsic Functions and Standard Library
             + Extended Extrinsic Procedures

   13. Extended Data Alignment and Distribution
        o Extended DISTRIBUTE Options
             + Indirect Mapping
             + Generalized BLOCK
             + Distribution Ranges
             + Distribution to Processor Arrangement Subsets
             + Shadow Widths
        o Dynamic Data Mapping
             + DYNAMIC Directive
             + REALIGN Directive
             + REDISTRIBUTE Directive
        o Mapping of POINTER Variables
        o Mapping of Derived Type Components

   14. Extended Data Parallel Statements and Directives
        o The ON Directive
             [I can't reconcile the requests for (a) ON in HPF 2.0 and (b)
             no complex distributions (in particular, no ONTO subset) in
             HPF 2.0.  I'm putting all of ON into the "Extended" category
             until this is resolved.]
             + General Syntax and Semantics
             + ON Options in Kernel HPF
             + ON Options in HPF 2.0
        o The TASK Directive
        o The REDUCTION Directive for User-Defined Operations

   15. Extended Intrinsic Functions and Standard Library
        o Generalized TRANSPOSE
        o Tasking Inquiry Functions
             [ON_NUMBER_OF_PROCESSORS(), etc.]

   16. Extended Extrinsic Procedures
        [These could each be a separate chapter.]
        o HPF_SPMD Interface
        o HPF to MPI Interface
        o C Interoperability

III. Appendices
        [Note switch to "lettering" rather than "numbering" chapters]
        A. Syntax Rules
        B. Semantic Restrictions
        C. Glossary
        D. Bibliography

---------------------------------------------------------------------------
To (un)subscribe to this list, send mail to [email-masked].
Leave the subject line blank, and in the body put the line
(un)subscribe <email-address>
---------------------------------------------------------------------------