Lazy tree splitting

N/ACitations
Citations of this article
18Readers
Mendeley users who have this article in their library.

Abstract

Nested data-parallelism (NDP) is a language mechanism that supports programming irregular parallel applications in a declarative style. In this paper, we describe the implementation of NDP in Parallel ML (PML), which is a part of the Manticore system. One of the main challenges of implementing NDP is managing the parallel decomposition of work. If we have too many small chunks of work, the overhead will be too high, but if we do not have enough chunks of work, processors will be idle. Recently, the technique of Lazy Binary Splitting was proposed to address this problem for nested parallel loops over flat arrays. We have adapted this technique to our implementation of NDP, which uses binary trees to represent parallel arrays. This new technique, which we call Lazy Tree Splitting (LTS), has the key advantage of performance robustness, i.e., it does not require tuning to get the best performance for each program. We describe the implementation of the standard NDP operations using LTS and present experimental data that demonstrate the scalability of LTS across a range of benchmarks. © Copyright Cambridge University Press 2012.

Cite

CITATION STYLE

APA

Bergstrom, L., Fluet, M., Rainey, M., Reppy, J., & Shaw, A. (2012). Lazy tree splitting. In Journal of Functional Programming (Vol. 22, pp. 382–438). https://doi.org/10.1017/S0956796812000172

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free