Next: D. ADAPTOR Problems and
Up: ADAPTOR HPF Language Reference
Previous: B. About the new
  Contents
  Index
Subsections
C. Overview of the ADAPTOR Input Language
The front end has been designed in such a way that all features of
FORTRAN 77, Fortran 90, Fortran 95 and HPF are parsed.
Nevertheless ADAPTOR does still not support all features of these
languages. But the user will get information about the unsupported
features in his code.
The following extensions of Fortran 90 [ABM$^+$92]
can be used within ADAPTOR:
- array expressions and array assignments,
- intrinsic functions for arrays (with some exceptions),
- dynamic arrays,
- array-valued functions,
- assumed-shaped arrays,
- optional arguments,
- new declaration statements,
- new loop constructs CASE, EXIT, and CYCLE,
- the binary operations <>, /=,
==, <=, <, >, and >=
instead of .ne., .eq., .le.,
.lt., .gt., and .ge.,
- ending comments starting with !,
- semicolon ; for separating statements,
- using & for continuation lines,
- free source format.
Furthermore, the following Fortran 90 features can be used if there
is a Fortran 90 compiler available on the target machine:
- parameterized data types and numeric inquiry functions,
- modules,
- derived data types,
- contained procedures,
- generic procedures,
- overloading of operators.
ADAPTOR supports the following features of Fortran 95 that have
been formerly part of HPF 1.1
- FORALL statement and FORALL construct,
- PURE procedures.
The following HPF features are supported:
- processor directives and different abstract processor arrays,
- distribution directives of HPF,
- alignment directives of HPF
- some new HPF intrinsic functions (e.g.
NUMBER_OF_PROCESSORS, xxx_SCATTER),
- serial routines (HPF_SERIAL),
- independent DO loops.
- REDUCTION clause for INDEPENDENT loops,
- local and serial EXTRINSIC procedures.
The most important restrictions are:
- no strides in alignments to distributed dimensions that are
not SERIAL or BLOCK distributed.
- any access to global data structures (arrays that are not
mapped to the active processor subset) must be resident on
the active processor subset.
Attention: In some situations, especially when using complex
independent loops, complex
array expressions and complex indirect addressing, ADAPTOR will fail
to translate the data parallel code. In this case, the system will give
an appropriate error message and the user has to find a workaround.
Experiences with previous versions have shown that this also might
help to write more efficient parallel programs. Indeed, the restrictions
are mainly due to the fact that in this situation ADAPTOR does not
know how to generate efficient code.
ADAPTOR supports the following approved
extensions of HPF 2.0 [Hig97]:
- general block distributions,
- indirect distributions,
- ON directive,
- RESIDENT clause,
- TASK_REGION construct,
- shadow edges for arrays can be explicitly defined by
the SHADOW directive,
- processor subsets.
Not supported are:
- pointers to distributed arrays,
- mapping of any components within derived types,
Furthermore, ADAPTOR realizes and offers some features that are not standardized
until now:
- ARBITRARY distributions where blocks of different sizes
within one dimension can be mapped to different processors.
- The REPLICATED directive supports the replication
of serial data onto processor arrays and processor subsets.
- The SINGLE directive maps serial data to a single
processor.
- The LAYOUT directive allows to choose how the
processors allocate memory for their local sections.
The SHADOW directive, also specified in the HPF 2.0
standard, has been extended to distinguish between exact and minimal
sizes of shadow edges.
- ADAPTOR allows the use of the REDUCTION directive outside
of parallel loops.
- With the SHARED directive, arrays will be put
in a shared or virtually shared memory segment (but only if
this is supported on the target machine).
- Indirect addressing requires the complex computation of a communication
schedule. This schedule can be reused if the involved integer arrays have
not been modified. But whether an array has been changed or not requires
complex data flow analysis that is not available in ADAPTOR.
With the TRACE directive the user specifies that an integer
array used for indirect addressing will be marked as invalid after
an update. As long as it has not been updated, the schedule for
the indirect addressing can be reused.
- ADAPTOR supports the new machine-specific SELECT
directive to select dimensions of arrays for vectorization
and/or shared memory parallelization.
- ADAPTOR allows vector-subscripts for the specification of
processor subsets.
- ADAPTOR provides a task library for task interaction (message
passing). This task library can be used for data parallel tasks as
well as in the local SPMD execution model.
Next: D. ADAPTOR Problems and
Up: ADAPTOR HPF Language Reference
Previous: B. About the new
  Contents
  Index
Thomas Brandes
2004-03-18