From crabapple.srv.cs.cmu.edu!cantaloupe.srv.cs.cmu.edu!rochester!udel!darwin.sura.net!wupost!rice!chk Fri Mar 20 12:39:35 1992
Article: 10180 of comp.lang.misc


From: metzger@bach.convex.com (Robert Metzger)


The following table was compiled at a dinner meeting on 1/27/92, the first
day of the High Performance Fortran Forum (HPFF).  Attendees were:
(Convex): Bob Metzger, Joel Williamson, (TMC): Bob Milstein, Guy Steele,
(IBM): Jorge Sanz, (Vienna): Hans Zima, Barbara Chapman, Piyush
Mehrotra[ICASE], (Rice): Chuck Koelbel, and (Auburn) Cherri Pancake.
The point of the meeting was to compare the features of the various HPF
proposals.  We expect this to be a sarting point for the ongoing HPF
meetings.  For those organizations not at this meeting (DEC, Cray) we
attempted to characterize their features from the text of their
proposals.

This table was what we accomplished in 3 hours -- obviously there are
many more features to be addressed.



	Comparison of High-Performance Fortran Features

Key:

Fortran D: As developed at Rice and Syracuse Universities by
		Ken Kennedy, Geoffrey Fox, et al.
      DEC: Digital Equipment Corporation
      CRI: Cray Research, Incorporated
   Vienna: Vienna Fortran, developed by Hans Zima, et al.
      TMC: Thinking Machines Corporation
      DPF: Data Parallel Fortran, developed at International Business
		Machines, Almaden Research Center by Jorge Sanz, et al.



Base Language.

Fortran D: F77 or F90
      DEC: F90 subset
      CRI: cft77
   Vienna: F77 or F90
      TMC: F90 subset
      DPF: F90 subset


Concurrent I/O.

Fortran D: No
      DEC: No
      CRI: SHARED I/O
   Vienna: COPEN, CREAD, CWRITE
      TMC: Call UNIXlib functions
      DPF: No


Reductions.

Fortran D: REDUCE statement
      DEC: F90
      CRI: F90
   Vienna: Similar to Fortran D
      TMC: F90
      DPF: F90


Process Topology.

Fortran D: Implicit Multidimensional
      DEC: Cartesian Numbers
      CRI: Weights on distribution, implicit power of 2
   Vienna: PROCESSORS statement
      TMC: PROCESSORS statement
      DPF: N/A


Processor Intrinsics.

Fortran D: n$proc intrinsic variable
      DEC: NUMBER_OF_PROCESSORS intrinsic function
      CRI: N$PES intrinsic constant; MY$PE intrinsic variable
   Vienna: $NP intrinsic function; $P and $PL intrinsic arrays
      TMC: n$proc intrinsic variable
      DPF: N/A


Parallel Prefix.

Fortran D: No
      DEC: No
      CRI: Yes
   Vienna: No
      TMC: Yes
      DPF: Use FORALL


User-defined Reductions.

Fortran D: Yes
      DEC: No
      CRI: No?
   Vienna: Yes
      TMC: No
      DPF: Yes


Nested WHERE Blocks.

Fortran D: No
      DEC: No
      CRI: No
   Vienna: No 
      TMC: Yes
      DPF: No


Redistribute/Realign on procedure boundary.

Fortran D: Yes
      DEC: Yes
      CRI: Yes
   Vienna: Yes
      TMC: Yes
      DPF: Yes


Local execution; reindexed local data.

Fortran D: No
      DEC: No
      CRI: No
   Vienna: No
      TMC: Yes
      DPF: Yes


Message-passing in local execution.

Fortran D: No
      DEC: No
      CRI: No
   Vienna: No
      TMC: Yes
      DPF: Default if variable is not remapped


FORALL.

Fortran D: Block
      DEC: Statement
      CRI: DOSHARED directive on DO loop
   Vienna: FORALL like DOSHARED
      TMC: Block
      DPF: Block


FORAL Nesting.

Fortran D: Perfect nest 
      DEC: No
      CRI: Perfect nest
   Vienna: Perfect nest
      TMC: ?
      DPF: Perfect nest


FORALL Determininism.

Fortran D: Yes
      DEC: Yes
      CRI: ?
   Vienna: Yes
      TMC: Yes
      DPF: Yes


FORALL Semantics.

Fortran D: \
      DEC:  \
      CRI:   \ --> Mutually inconsistent
   Vienna:   /
      TMC:  /
      DPF: /


Declarative ALIGN, DISTRIBUTE.   

Fortran D: No
      DEC: Yes
      CRI: Yes
   Vienna: Yes
      TMC: Yes
      DPF: Yes


Imperative ALIGN, DISTRIBUTE.

Fortran D: Yes
      DEC: No
      CRI: Yes
   Vienna: Yes
      TMC: Yes
      DPF: Yes


User-defined alignment/distribution functions.

Fortran D: Yes
      DEC: No
      CRI: No
   Vienna: Yes
      TMC: No
      DPF: Yes


ALIGN/DISTRIBUTE dependent on information available only at runtime.

Fortran D: Yes
      DEC: No (specification expressions)
      CRI: ?
   Vienna: Yes
      TMC: Yes
      DPF: Yes


Executable functions to inquire on distributions.

Fortran D: No
      DEC: No
      CRI: Yes
   Vienna: Yes
      TMC: No
      DPF: No







