Composing Parallel Runtime Systems: A Case Study in How to Compose the Julia and OpenCilk Runtimes

Julia [5] [15] is a high-level computing language used by many developers for its performance and ease of use. Julia operates on tasks that are run concurrently on threads. In its current state, however, Julia is not able to effectively employ fine-grained parallelism. OpenCilk [9] is an open-source...

Full description

Bibliographic Details
Main Author: Kralj, Tim
Other Authors: Leiserson, Charles
Format: Thesis
Published: Massachusetts Institute of Technology 2022
Online Access:https://hdl.handle.net/1721.1/139542
_version_ 1826188578124726272
author Kralj, Tim
author2 Leiserson, Charles
author_facet Leiserson, Charles
Kralj, Tim
author_sort Kralj, Tim
collection MIT
description Julia [5] [15] is a high-level computing language used by many developers for its performance and ease of use. Julia operates on tasks that are run concurrently on threads. In its current state, however, Julia is not able to effectively employ fine-grained parallelism. OpenCilk [9] is an open-source implementation of the Cilk concurrency platform designed to utilize fine-grain parallelism. The Cilk runtime system, based on Cheetah [12], offers provably efficient parallel scheduling whose performance is borne out in theory and practice. I propose a combination of the Julia and OpenCilk runtimes through the integration of multiple components. One contribution of this thesis is a novel algorithm for combining C/C++ memory allocations with Julia’s precise garbage collector. Composing the parallelism of OpenCilk and Julia enables programmers to write efficient multithreaded code. Additionally, this work is a case study of combining the high levels of parallelism present in Cilk with a high-level language.
first_indexed 2024-09-23T08:01:33Z
format Thesis
id mit-1721.1/139542
institution Massachusetts Institute of Technology
last_indexed 2024-09-23T08:01:33Z
publishDate 2022
publisher Massachusetts Institute of Technology
record_format dspace
spelling mit-1721.1/1395422022-01-15T04:10:22Z Composing Parallel Runtime Systems: A Case Study in How to Compose the Julia and OpenCilk Runtimes Kralj, Tim Leiserson, Charles Schardl, Tao B. Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science Julia [5] [15] is a high-level computing language used by many developers for its performance and ease of use. Julia operates on tasks that are run concurrently on threads. In its current state, however, Julia is not able to effectively employ fine-grained parallelism. OpenCilk [9] is an open-source implementation of the Cilk concurrency platform designed to utilize fine-grain parallelism. The Cilk runtime system, based on Cheetah [12], offers provably efficient parallel scheduling whose performance is borne out in theory and practice. I propose a combination of the Julia and OpenCilk runtimes through the integration of multiple components. One contribution of this thesis is a novel algorithm for combining C/C++ memory allocations with Julia’s precise garbage collector. Composing the parallelism of OpenCilk and Julia enables programmers to write efficient multithreaded code. Additionally, this work is a case study of combining the high levels of parallelism present in Cilk with a high-level language. M.Eng. 2022-01-14T15:18:43Z 2022-01-14T15:18:43Z 2021-06 2021-06-17T20:13:33.281Z Thesis https://hdl.handle.net/1721.1/139542 In Copyright - Educational Use Permitted Copyright MIT http://rightsstatements.org/page/InC-EDU/1.0/ application/pdf Massachusetts Institute of Technology
spellingShingle Kralj, Tim
Composing Parallel Runtime Systems: A Case Study in How to Compose the Julia and OpenCilk Runtimes
title Composing Parallel Runtime Systems: A Case Study in How to Compose the Julia and OpenCilk Runtimes
title_full Composing Parallel Runtime Systems: A Case Study in How to Compose the Julia and OpenCilk Runtimes
title_fullStr Composing Parallel Runtime Systems: A Case Study in How to Compose the Julia and OpenCilk Runtimes
title_full_unstemmed Composing Parallel Runtime Systems: A Case Study in How to Compose the Julia and OpenCilk Runtimes
title_short Composing Parallel Runtime Systems: A Case Study in How to Compose the Julia and OpenCilk Runtimes
title_sort composing parallel runtime systems a case study in how to compose the julia and opencilk runtimes
url https://hdl.handle.net/1721.1/139542
work_keys_str_mv AT kraljtim composingparallelruntimesystemsacasestudyinhowtocomposethejuliaandopencilkruntimes