An efficient method of computing static single assignment form
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
APL '95 Proceedings of the international conference on Applied programming languages
An HPF compiler for the IBM SP2
Supercomputing '95 Proceedings of the 1995 ACM/IEEE conference on Supercomputing
Reducing computational complexity with array predicates
APL '98 Proceedings of the APL98 conference on Array processing language
Compiling MATLAB Programs to ScaLAPACK: Exploiting Task and Data Parallelism
IPPS '96 Proceedings of the 10th International Parallel Processing Symposium
WITH-Loop-Folding in SAC - Condensing Consecutive Array Operations
IFL '97 Selected Papers from the 9th International Workshop on Implementation of Functional Languages
A Compilation Scheme for a Hierarchy of Array Types
IFL '02 Selected Papers from the 13th International Workshop on Implementation of Functional Languages
Single Assignment C: efficient support for high-level array operations in a functional setting
Journal of Functional Programming
Efficient and effective array bound checking
ACM Transactions on Programming Languages and Systems (TOPLAS)
SAC: a functional array language for efficient multi-threaded execution
International Journal of Parallel Programming
On optimising shape-generic array programs using symbolic structural information
IFL'06 Proceedings of the 18th international conference on Implementation and application of functional languages
Index vector elimination: making index vectors affordable
IFL'06 Proceedings of the 18th international conference on Implementation and application of functional languages
IFL'05 Proceedings of the 17th international conference on Implementation and Application of Functional Languages
From Contracts Towards Dependent Types: Proofs by Partial Evaluation
Implementation and Application of Functional Languages
Hi-index | 0.01 |
We introduce shape cliques, a simple way to organize a subset of the arrays appearing in an array-language-based application into sets of identically shaped arrays - shape cliques - and show how a compiler can analyze an application to infer membership in those cliques. We describe an algorithm for performing shape clique inference (SCI), and demonstrate that shape cliques can improve the performance of generated code, by permitting extension of an optimization for removal of run-time checks, and by extending the set of arrays to which optimizations, such as Index Vector Elimination (IVE), can be applied. Implementation of SCI in the APEX APL compiler permitted removal of 25% of run-time checks remaining on 156 benchmarks remaining after other compiler optimizations had eliminated 72% of the 1251 checks present in the original code. In the SAC compiler, IVE using SCI produced typical speedups of 2-14X on benchmarks operating on arrays of non-fixed rank and shape, compared to the operation of IVE in a non-SCI environment. Shape clique inference data can be exploited to allow certain other optimizations, such as loop fusion and withloop folding, to be performed on arrays of statically unknown shape and rank, with the potential for significant reductions in execution time.