Optimizing Parallel Performance with Work and Span in the OpenCilk Compiler

OpenCilk is the modern iteration of Cilk, a multithreaded programming environment designed for high-performance multicore computing. OpenCilk consists of a LLVM fork called Tapir and a runtime scheduler, which, together, allow for OpenCilk’s high performance in practice. However, there are many oppo...

Full description

Bibliographic Details
Main Author: Reddy, Nikhil
Other Authors: Schardl, Tao B.
Format: Thesis
Published: Massachusetts Institute of Technology 2023
Online Access:https://hdl.handle.net/1721.1/147495
_version_ 1811079630158823424
author Reddy, Nikhil
author2 Schardl, Tao B.
author_facet Schardl, Tao B.
Reddy, Nikhil
author_sort Reddy, Nikhil
collection MIT
description OpenCilk is the modern iteration of Cilk, a multithreaded programming environment designed for high-performance multicore computing. OpenCilk consists of a LLVM fork called Tapir and a runtime scheduler, which, together, allow for OpenCilk’s high performance in practice. However, there are many opportunities to improve on the implementation of OpenCilk. In particular, current grainsize calculations for OpenCilk rely on a notion of work that is limited in a few ways. In this thesis, I propose an alternate implementation that creates a first-class notion of work and span within the OpenCilk compiler that is then used to inform optimizations within OpenCilk. I then analyze the current formulas for grainsizes. I identify key scenarios where the compiler is unable to determine a suitable grainsize and use this to suggest improvements. Finally, I construct a benchmark of one of these scenarios using a Twitter follower dataset and empirically analyze optimal grainsizes for it.
first_indexed 2024-09-23T11:18:06Z
format Thesis
id mit-1721.1/147495
institution Massachusetts Institute of Technology
last_indexed 2024-09-23T11:18:06Z
publishDate 2023
publisher Massachusetts Institute of Technology
record_format dspace
spelling mit-1721.1/1474952023-01-20T03:40:14Z Optimizing Parallel Performance with Work and Span in the OpenCilk Compiler Reddy, Nikhil Schardl, Tao B. Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science OpenCilk is the modern iteration of Cilk, a multithreaded programming environment designed for high-performance multicore computing. OpenCilk consists of a LLVM fork called Tapir and a runtime scheduler, which, together, allow for OpenCilk’s high performance in practice. However, there are many opportunities to improve on the implementation of OpenCilk. In particular, current grainsize calculations for OpenCilk rely on a notion of work that is limited in a few ways. In this thesis, I propose an alternate implementation that creates a first-class notion of work and span within the OpenCilk compiler that is then used to inform optimizations within OpenCilk. I then analyze the current formulas for grainsizes. I identify key scenarios where the compiler is unable to determine a suitable grainsize and use this to suggest improvements. Finally, I construct a benchmark of one of these scenarios using a Twitter follower dataset and empirically analyze optimal grainsizes for it. M.Eng. 2023-01-19T19:54:12Z 2023-01-19T19:54:12Z 2022-09 2022-09-16T20:24:13.419Z Thesis https://hdl.handle.net/1721.1/147495 In Copyright - Educational Use Permitted Copyright MIT http://rightsstatements.org/page/InC-EDU/1.0/ application/pdf Massachusetts Institute of Technology
spellingShingle Reddy, Nikhil
Optimizing Parallel Performance with Work and Span in the OpenCilk Compiler
title Optimizing Parallel Performance with Work and Span in the OpenCilk Compiler
title_full Optimizing Parallel Performance with Work and Span in the OpenCilk Compiler
title_fullStr Optimizing Parallel Performance with Work and Span in the OpenCilk Compiler
title_full_unstemmed Optimizing Parallel Performance with Work and Span in the OpenCilk Compiler
title_short Optimizing Parallel Performance with Work and Span in the OpenCilk Compiler
title_sort optimizing parallel performance with work and span in the opencilk compiler
url https://hdl.handle.net/1721.1/147495
work_keys_str_mv AT reddynikhil optimizingparallelperformancewithworkandspanintheopencilkcompiler