Programmable Array Compiler


The Programmable Array Compiler (PAC) is a tool for writing compilers that support distibuted array constructs. It has been developed for:

  1. building domain -specific compilers based on Fortran language,
  2. implementing distributed-array language constructs,
  3. experimenting with various data- and task- parallel language constructs.

The PAC compiler supports several constructs found in HPF and CM Fortran:

  1. array statements,
  2. where and forall constructs,
  3. dynamic memory management,
  4. directives for distributing data, defining SIMD regions, etc.

The compiler is programed using a language definition file (LDF) that:

  1. describes how to translate a program from global view of code to local view,
  2. for each of several fortran constructs (array statements, I/O, etc) contains code template to translate the construct,
  3. code templates describe details of communication, synchronization, atomicity, etc.,
  4. the preprocessor supplies several compile time functions that can be used to extract information from the constructs being translated,
  5. specifies array expressions that can optimized by the compiler.

Language definition files have been and are being written for two different domains: a data-parallel Fortran compiler and a task-parallel Fortran compiler.

Data-parallel Fortran compiler

Task-parallel Fortran compiler


Contact person: Matt Rosing <rosing@pnl.gov> or <rosing@frii.com>