Fortran D

Fortran D

A data-parallel Fortran developed by Ken Kennedy at Rice University.

["Fortran D Language Specification", G. Fox et al, TR 90079, Rice U, March 1991].

E-mail: Theresa Chapman <tlc@cs.rice.edu>.
References in periodicals archive ?
Additional research languages include Fortran D, Fortran 90D/HPF, Fortran M, Opus, and Vienna Fortran.
We call the extended language Fortran D, where "D" suggests data, decomposition, or distribution.
To that end, we have embarked on a program to implement Fortran D for several differnt architectures.
The remainder of this article presents the data decomposition specifications in Fortran D, basic compiler analysis and code generation algorithms, and compiler optimizations to reduce communication cost and exploit pipeline parallelism.
Fortran D provides data decomposition specifications for these two levels of parallelism using DECOMPOSITION, ALIGN, and DISTRIBUTE statements.
Because its goal is to support both SIMD and MIMD architectures, Fortran D is the first language to implement both alignment and distribution specifications.
The Fortran D compiler automates the second step by generating node programs with explicit communication for a given data decomposition.
It translates a Fortran D program into a single-program, multiple-data (SPMD) program with explicit message-passing that executes directly on the nodes of the distributed-memory machine.
The prototype Fortran D compiler is being developed in the context of the ParaScope programming environment and incorporates the analysis capabilities described in the following paragraphs [6, 21].
Constant propagation, auxiliary induction variable elimination, expression folding, and loop invariant expression recognition are performed during the symbolic analysis phase of the Fortran D compiler.
If constant propagation is able to produce a constant value for n, or if n is identified as a loop-invariant expression, the Fortran D compiler can communicate B(n) with an efficient broadcast preceding the loop.
The Fortran D compiler requires a new type of program analysis to generate the proper program--it must determine the data decomposition for each reference to a distributed array.