@InProceedings{cormen:fg,
  author = {Thomas H. Cormen and Elena R. Davidson},
  title = {{FG:} A framework generator for hiding latency in parallel programs
  running on clusters},
  booktitle = {Proceedings of the 17th IASTED International Conference on
  Parallel and Distributed Computing and Systems},
  editor = {Bader, DA; Khokhar, AA},
  year = {2004},
  month = {September},
  pages = {137--144},
  institution = {Dartmouth Coll, Dept Comp Sci, 6211 Sudikoff Lab, Hanover, NH
  03755 USA; Dartmouth Coll, Dept Comp Sci, Hanover, NH 03755 USA},
  publisher = {INTERNATIONAL SOCIETY COMPUTER S \& THEIR APPLICATIONS (ISCA)},
  copyright = {(c)2005 The Thomson Corporation},
  address = {San Francisco, CA},
  URL = {http://www.cs.dartmouth.edu/FG/},
  keywords = {asynchronous I/O, pipelined I/O, pario-bib},
  abstract = {FG is a programming environment for asynchronous programs that
  run on clusters and fit into a pipeline framework. It enables the programmer
  to write a series of synchronous functions and represents them as stages of
  an asynchronous pipeline. FG mitigates the high latency inherent in
  interprocessor communication and accessing the outer levels of the memory
  hierarchy. It overlaps separate pipeline stages that perform communication,
  computation, and I/O by running the stages asynchronously. Each stage maps to
  a thread. Buffers, whose sizes correspond to block sizes in the memory
  hierarchy, traverse the pipeline. FG makes such pipeline-structured parallel
  programs easier to write, smaller, and faster. FG offers several advantages
  over statically scheduled overlapping and dynamically scheduled overlapping
  via explicit calls to thread functions. First, it reduces coding and
  debugging time. Second, we find that it reduces code size by approximately
  15-26%. Third, according to experimental results, it improves performance.
  Compared with programs that use static scheduling, FG-generated programs run
  approximately 61-69% faster on a 16-node Beowulf cluster. Compared with
  programs that make explicit calls for dynamically scheduled threads,
  FG-generated programs run slightly faster. Fourth, FG offers various design
  options and makes it easy for the programmer to explore different pipeline
  configurations.}
}

