Compiling Dynamic Mappings with Array Copies
To appear in PPoPP'97, Las Vegas, Nevada, June 1997.
Report EMP CRI A-302, April 1997.
12 pages, 19 references.
Array remappings are useful to many applications on distributed memory
parallel machines. They are available in High Performance Fortran, a
Fortran-based data-parallel language. This paper describes techniques
to handle dynamic mappings through simple array copies: array
remappings are translated into copies between statically mapped distinct
versions of the array. It discusses the language restrictions required to
do so. The remapping graph which captures all remapping and liveness
information is presented, as well as additional data-flow optimizations
that can be performed on this graph, so as to avoid useless remappings at
run time. Such useless remappings appear for arrays that are not used after
a remapping. Live array copies are also kept to avoid other flow-dependent
useless remappings. Finally the code generation and runtime required by
our scheme are discussed. These techniques are implemented in our
prototype HPF compiler.