A T2 graph-reduction approach to fusion

Research output: Chapter in Book/Report/Conference proceedingArticle in proceedingsResearchpeer-review

Standard

A T2 graph-reduction approach to fusion. / Henriksen, Troels; Oancea, Cosmin Eugen.

Proceedings of the 2nd ACM SIGPLAN Workshop on Functional High-Performance Computing (FHPC'13). Association for Computing Machinery, 2013. p. 47-58.

Research output: Chapter in Book/Report/Conference proceedingArticle in proceedingsResearchpeer-review

Harvard

Henriksen, T & Oancea, CE 2013, A T2 graph-reduction approach to fusion. in Proceedings of the 2nd ACM SIGPLAN Workshop on Functional High-Performance Computing (FHPC'13). Association for Computing Machinery, pp. 47-58, ACM SIGPLAN workshop on Functional high-performance computing, Boston, United States, 25/09/2013. https://doi.org/10.1145/2502323.2502328

APA

Henriksen, T., & Oancea, C. E. (2013). A T2 graph-reduction approach to fusion. In Proceedings of the 2nd ACM SIGPLAN Workshop on Functional High-Performance Computing (FHPC'13) (pp. 47-58). Association for Computing Machinery. https://doi.org/10.1145/2502323.2502328

Vancouver

Henriksen T, Oancea CE. A T2 graph-reduction approach to fusion. In Proceedings of the 2nd ACM SIGPLAN Workshop on Functional High-Performance Computing (FHPC'13). Association for Computing Machinery. 2013. p. 47-58 https://doi.org/10.1145/2502323.2502328

Author

Henriksen, Troels ; Oancea, Cosmin Eugen. / A T2 graph-reduction approach to fusion. Proceedings of the 2nd ACM SIGPLAN Workshop on Functional High-Performance Computing (FHPC'13). Association for Computing Machinery, 2013. pp. 47-58

Bibtex

@inproceedings{1eb807ab0e8c4264bffc6c9fd649fe6a,
title = "A T2 graph-reduction approach to fusion",
abstract = "Fusion is one of the most important code transformations as it has the potential to substantially optimize both the memory hierarchy time overhead and, sometimes asymptotically, the space requirement.In functional languages, fusion is naturally and relatively easily derived as a producer-consumer relation between program constructs that expose a richer, higher-order algebra of program invariants, such as the map-reduce list homomorphisms.In imperative languages, fusing producer-consumer loops requires dependency analysis on arrays applied at loop-nest level. Such analysis, however, has often been labeled as {"}heroic effort{"} and, if at all, is supported only in its simplest and most conservative form in industrial compilers.Related implementations in the functional context typically apply fusion only when the to-be-fused producer is used exactly once, i.e., in the consumer. This guarantees that the transformation is conservative: the resulting program does not duplicate computation.We show that the above restriction is more conservative than needed, and present a structural-analysis technique, inspired from the T1--T2 transformation for reducible data flow, that enables fusion even in some cases when the producer is used in different consumers and without duplicating computation.We report an implementation of the fusion algorithm for a functional-core language, named L0, which is intended to support nested parallelism across regular multi-dimensional arrays. We succinctly describe L0's semantics and the compiler infrastructure on which the fusion transformation relies, and present compiler-generated statistics related to fusion on a set of six benchmarks.",
keywords = "autoparallelization, functional language, fusion",
author = "Troels Henriksen and Oancea, {Cosmin Eugen}",
year = "2013",
doi = "10.1145/2502323.2502328",
language = "English",
isbn = "978-1-4503-2381-9 ",
pages = "47--58",
booktitle = "Proceedings of the 2nd ACM SIGPLAN Workshop on Functional High-Performance Computing (FHPC'13)",
publisher = "Association for Computing Machinery",
note = "null ; Conference date: 25-09-2013 Through 27-09-2013",

}

RIS

TY - GEN

T1 - A T2 graph-reduction approach to fusion

AU - Henriksen, Troels

AU - Oancea, Cosmin Eugen

N1 - Conference code: 2

PY - 2013

Y1 - 2013

N2 - Fusion is one of the most important code transformations as it has the potential to substantially optimize both the memory hierarchy time overhead and, sometimes asymptotically, the space requirement.In functional languages, fusion is naturally and relatively easily derived as a producer-consumer relation between program constructs that expose a richer, higher-order algebra of program invariants, such as the map-reduce list homomorphisms.In imperative languages, fusing producer-consumer loops requires dependency analysis on arrays applied at loop-nest level. Such analysis, however, has often been labeled as "heroic effort" and, if at all, is supported only in its simplest and most conservative form in industrial compilers.Related implementations in the functional context typically apply fusion only when the to-be-fused producer is used exactly once, i.e., in the consumer. This guarantees that the transformation is conservative: the resulting program does not duplicate computation.We show that the above restriction is more conservative than needed, and present a structural-analysis technique, inspired from the T1--T2 transformation for reducible data flow, that enables fusion even in some cases when the producer is used in different consumers and without duplicating computation.We report an implementation of the fusion algorithm for a functional-core language, named L0, which is intended to support nested parallelism across regular multi-dimensional arrays. We succinctly describe L0's semantics and the compiler infrastructure on which the fusion transformation relies, and present compiler-generated statistics related to fusion on a set of six benchmarks.

AB - Fusion is one of the most important code transformations as it has the potential to substantially optimize both the memory hierarchy time overhead and, sometimes asymptotically, the space requirement.In functional languages, fusion is naturally and relatively easily derived as a producer-consumer relation between program constructs that expose a richer, higher-order algebra of program invariants, such as the map-reduce list homomorphisms.In imperative languages, fusing producer-consumer loops requires dependency analysis on arrays applied at loop-nest level. Such analysis, however, has often been labeled as "heroic effort" and, if at all, is supported only in its simplest and most conservative form in industrial compilers.Related implementations in the functional context typically apply fusion only when the to-be-fused producer is used exactly once, i.e., in the consumer. This guarantees that the transformation is conservative: the resulting program does not duplicate computation.We show that the above restriction is more conservative than needed, and present a structural-analysis technique, inspired from the T1--T2 transformation for reducible data flow, that enables fusion even in some cases when the producer is used in different consumers and without duplicating computation.We report an implementation of the fusion algorithm for a functional-core language, named L0, which is intended to support nested parallelism across regular multi-dimensional arrays. We succinctly describe L0's semantics and the compiler infrastructure on which the fusion transformation relies, and present compiler-generated statistics related to fusion on a set of six benchmarks.

KW - autoparallelization, functional language, fusion

U2 - 10.1145/2502323.2502328

DO - 10.1145/2502323.2502328

M3 - Article in proceedings

SN - 978-1-4503-2381-9

SP - 47

EP - 58

BT - Proceedings of the 2nd ACM SIGPLAN Workshop on Functional High-Performance Computing (FHPC'13)

PB - Association for Computing Machinery

Y2 - 25 September 2013 through 27 September 2013

ER -

ID: 109774960