Modern "non-strict" functional programming languages are a powerful means of programming highly parallel computers, but are intrinsically difficult to compile well because decisions about ordering of subcomputations must be taken at compile time. This book represents a new technique for compiling such languages by partitioning a program into sequential threads. While the interleaving of threads can vary at run time, within each thread the order is fixed.
A program is compiled by analyzing its data dependences, and developing from that a set of partitioning constraints. These practical algorithms are founded on a new theory of data dependence and ordering within functional programs, which defines dependence graphs in terms of a rewrite-rule operational semantics for the language.
By attacking the ordering problem directly, the book departs from previous approaches that obtain partitioning as a byproduct of optimizing lazy evaluation, and cleanly separates partitioning from other code generation issues. Furthermore, the method is flexible enough to produce both lazy code and also a less restrictive "lenient" variant which allows larger threads with only a slight decrease in expressive power. Code generation and optimization are explored in depth for both uniprocessor and multiprocessor targets.
Kenneth R. Traub is a researcher with the Motorola Cambridge Research Center.
Contents: Introduction. Background - Functional Language Compilers. Lenient Evaluation. Functional Quads. Code Generation. A Syntactic Theory of Data Dependence. Dependence-Based Partitioning. Conclusion.
Le informazioni nella sezione "Riassunto" possono far riferimento a edizioni diverse di questo titolo.
Book by Traub Kenneth R
Le informazioni nella sezione "Su questo libro" possono far riferimento a edizioni diverse di questo titolo.
Spese di spedizione:
GRATIS
In U.S.A.
Descrizione libro MIT Press. Paperback. Condizione: Good. No Jacket. Pages can have notes/highlighting. Spine may show signs of wear. ~ ThriftBooks: Read More, Spend Less. Codice articolo G0262700425I3N00