HPFC at a glance
HPFC is a prototype High Performance Fortran
Compiler which is being developed within the PIPS
framework by Fabien COELHO at
CRI, École des mines de Paris.
It aims at testing new compilation techniques for distributed-memory
parallel architectures. Funded by PARADIGME.
URL: http://www.cri.mines-paristech.fr/pips/hpfc.html
Input language
- Fortran 77
- HPF static and dynamic mapping directives
- prescriptive and descriptive mappings for arguments
- HPF
independent
and new
directives
- private
local
, pure
and
io
directives
- assumes all sizes as known at compile time
- arrays in commons can be distributed statically
Output
- 2 programs: host for I/Os and SPMD node for computations
- Fortran 77 + HPFC Runtime support + PVM 3
Implementation
- data structures based on NEWGEN. Linear/C3 library for linear techniques.
- 18,000 lines of ANSI C for the compiler (HPFC, a PIPS module)
- 1,000 lines of shell and C for the driver and other utilities
- 3,000 lines of m4/fortran for the runtime support library
(expanded to +8,000)
- PIPS as a whole is around 200,000 lines of code.
Standard Optimizations
- run-time resolution to handle general cases.
- reduced allocation of distributed arrays on nodes.
- overlaps, partial shifts and reductions
for block-distributed stride-1 aligned arrays.
- simple copies for any aligned arrays are recognized.
Advanced Optimizations
Experiments
- +100 small or medium size codes for non regression test.
- SOR on a network of SUN workstations
(abstract,
paper).
- wave propagation code from IFP (French Oil Institute)
on the SEH/ETCA CM5.
- matrix transpose on a DEC Alpha farm (see remappings).