Cache Locality Optimization for Recursive Programs
We present an approach to optimize the cache locality for recursive programs by dynamically splicing—recursively interleaving—the execution of distinct function invocations. By utilizing data effect annotations, we identify concurrency and data reuse opportunities across function invocations and interleave them to reduce reuse distance. We present algorithms that efficiently track effects in recursive programs, detect interference and dependencies, and interleave execution of function invocations using user-level (non-kernel) lightweight threads. To enable multi-core execution, a program is parallelized using a nested fork/join programming model. Our cache optimization strategy is designed to work in the context of a random work stealing scheduler. We present an implementation using the MIT Cilk framework that demonstrates significant improvements in sequential and parallel performance, competitive with a state-of-the-art compile-time optimizer for loop programs and a domain-specific optimizer for stencil programs.
Mon 19 JunDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
10:50 - 12:30 | Compiler OptimizationsPLDI Research Papers at Aula Master Chair(s): Uday Bondhugula Indian Institute of Science | ||
10:50 25mTalk | Cache Locality Optimization for Recursive Programs PLDI Research Papers | ||
11:15 25mTalk | Fusing Effectful Comprehensions PLDI Research Papers Olli Saarikivi , Margus Veanes Microsoft Research, Todd Mytkowicz , Madan Musuvathi Microsoft Research | ||
11:40 25mTalk | Generalizations of the Theory and Deployment of Triangular Inequality for Compiler-Based Strength Reduction PLDI Research Papers Yufei Ding North Carolina State University, Lin Ning North Carolina State University, Hui Guan North Carolina State University, Xipeng Shen North Carolina State University Media Attached | ||
12:05 25mTalk | ALIVE-INFER: Data-Driven Precondition Inference for Peephole Optimizations in LLVM PLDI Research Papers Media Attached |