skip to main content
OSTI.GOV title logo U.S. Department of Energy
Office of Scientific and Technical Information

Title: Cache Locality Optimization for Recursive Programs

Abstract

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.

Authors:
;
Publication Date:
Research Org.:
Pacific Northwest National Lab. (PNNL), Richland, WA (United States)
Sponsoring Org.:
USDOE
OSTI Identifier:
1440662
Report Number(s):
PNNL-SA-123961
KJ0402000
DOE Contract Number:  
AC05-76RL01830
Resource Type:
Conference
Resource Relation:
Conference: Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2017), June 18-23, 2017, Barcelona, Spain, 1-16
Country of Publication:
United States
Language:
English

Citation Formats

Lifflander, Jonathan, and Krishnamoorthy, Sriram. Cache Locality Optimization for Recursive Programs. United States: N. p., 2017. Web. doi:10.1145/3140587.3062385.
Lifflander, Jonathan, & Krishnamoorthy, Sriram. Cache Locality Optimization for Recursive Programs. United States. doi:10.1145/3140587.3062385.
Lifflander, Jonathan, and Krishnamoorthy, Sriram. Wed . "Cache Locality Optimization for Recursive Programs". United States. doi:10.1145/3140587.3062385.
@article{osti_1440662,
title = {Cache Locality Optimization for Recursive Programs},
author = {Lifflander, Jonathan and Krishnamoorthy, Sriram},
abstractNote = {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.},
doi = {10.1145/3140587.3062385},
journal = {},
number = ,
volume = ,
place = {United States},
year = {2017},
month = {6}
}

Conference:
Other availability
Please see Document Availability for additional information on obtaining the full-text document. Library patrons may search WorldCat to identify libraries that hold this conference proceeding.

Save / Share:

Works referenced in this record:

Programming with exceptions in JCilk
journal, December 2006

  • Danaher, John S.; Angelina Lee, I. -Ting; Leiserson, Charles E.
  • Science of Computer Programming, Vol. 63, Issue 2
  • DOI: 10.1016/j.scico.2006.05.008

Diamond Tiling: Tiling Techniques to Maximize Parallelism for Stencil Computations
journal, May 2017

  • Bondhugula, Uday; Bandishti, Vinayaka; Pananilath, Irshad
  • IEEE Transactions on Parallel and Distributed Systems, Vol. 28, Issue 5
  • DOI: 10.1109/TPDS.2016.2615094

Composable Parallel Patterns with Intel Cilk Plus
journal, March 2013


Design of a separable transition-diagram compiler
journal, July 1963


A Transformation System for Developing Recursive Programs
journal, January 1977


Symbolic bounds analysis of pointers, array indices, and accessed memory regions
journal, March 2005

  • Rugina, Radu; Rinard, Martin C.
  • ACM Transactions on Programming Languages and Systems, Vol. 27, Issue 2
  • DOI: 10.1145/1057387.1057388

Pointer analysis for structured parallel programs
journal, January 2003

  • Rugina, Radu; Rinard, Martin C.
  • ACM Transactions on Programming Languages and Systems, Vol. 25, Issue 1
  • DOI: 10.1145/596980.596982

Telescoping Languages: A Strategy for Automatic Generation of Scientific Problem-Solving Systems from Annotated Libraries
journal, December 2001

  • Kennedy, Ken; Broom, Bradley; Cooper, Keith
  • Journal of Parallel and Distributed Computing, Vol. 61, Issue 12
  • DOI: 10.1006/jpdc.2001.1724

Concurrent Collections
journal, January 2010

  • Budimlić, Zoran; Burke, Michael; Cavé, Vincent
  • Scientific Programming, Vol. 18, Issue 3-4
  • DOI: 10.1155/2010/521797