@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.} }