Affiliation:
1. Center For Supercomputing Research and Development, University of Illinois at Urbana-Champaign, Urbana Illinois
Abstract
The recognition of recurrence relations is important in several ways to the compilation of programs. Induction variables, the simplest form of recurrence, are pivotal in loop optimizations and dependence testing. Many recurrence relations, although expressed sequentially by the programmer, lend themselves to efficient vector or parallel computation. Despite the importance of recurrences, vectorizing and parallelizing compilers to date have recognized them only in an ad-hoc fashion. In this paper we put forth a systematic method for recognizing recurrence relations automatically. Our method has two parts. First, abstract interpretation [CC77, CC79] is used to construct a map that associates each variable assigned in a loop with a symbolic form (expression) of its value. Second, the elements of this map are matched with patterns that describe recurrence relations. The scheme is easily extensible by the addition of templates, and is able to recognize nested recurrences by the propagation of the closed forms of recurrences from inner loops. We present some applications of this method and a proof of its correctness.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Cited by
14 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Recurrence Analysis for Automatic Parallelization of Subscripted Subscripts;Proceedings of the 29th ACM SIGPLAN Annual Symposium on Principles and Practice of Parallel Programming;2024-02-20
2. History of Abstract Interpretation;IEEE Annals of the History of Computing;2021
3. Static Analysis of Binary Code with Memory Indirections Using Polyhedra;Lecture Notes in Computer Science;2019
4. Revealing parallel scans and reductions in recurrences through function reconstruction;Proceedings of the 27th International Conference on Parallel Architectures and Compilation Techniques;2018-11
5. Non-linear reasoning for invariant synthesis;Proceedings of the ACM on Programming Languages;2018-01