@PhdThesis{bordawekar:thesis,
  author = {Rajesh Bordawekar},
  title = {Techniques for Compiling {I/O} Intensive Parallel Programs},
  year = {1996},
  month = {April},
  school = {Electrical and Computer Engineering Dept., Syracuse University},
  note = {Also available as Caltech technical report CACR-118},
  URL = {http://www.cat.syr.edu/~rajesh/thesis.html},
  keywords = {parallel I/O, compiler, HPF, pario-bib},
  abstract = {This dissertation investigates several issues in providing
  compiler support for I/O intensive parallel programs. In this dissertation,
  we focus on satisfying two I/O requirements, namely, support for accessing
  multidimensional arrays and support for {\it out-of-core} computations. We
  analyze working spaces in I/O intensive programs and propose three execution
  models to be used by users or compilers for developing efficient I/O
  intensive parallel programs. Different phases in compiling out-of-core
  parallel programs are then described. Three different methods for performing
  communication are presented and validated using representative application
  templates.We illustrate that communication in out-of-core programs may
  require both inter-processor communication and file I/O. We show that using
  the {\it copy-in-copy-out} semantics of the HPF {\tt FORALL} construct, extra
  file I/O incurred in communication can be completely eliminated by reordering
  in-core computations. Two different approaches for reordering in-core
  computations are presented, namely, integrated tiling and scheduling
  heuristic, and dataflow framework for placing communication and I/O calls.
  The discussion is supplemented with experimental performance results of
  representative stencil applications. Finally, an overview of the prototype
  \textsf{PASSION} (Parallel And Scalable Software for I/O) compiler is
  presented. This compiler takes an annotated out-of-core High Performance
  Fortran (HPF) program as input and generates the corresponding {\it
  node+message-passing} program with calls to the parallel I/O runtime library.
  We illustrate various functionalities of the compiler using example programs
  and supplement them by experimental results.}
}

