{"id":{"repo_id":"mit","oai_identifier":"oai:dspace.mit.edu:1721.1/150176"},"canonical_url":"https://search.dev.ndltd.org/etd/mit/oai:dspace.mit.edu:1721.1/150176","repository":{"repo_id":"mit","name":"MIT","base_url":"https://dspace.mit.edu/oai/request"},"display":{"title":"Continuation Stealing in Julia","abstract":"Work stealing schedulers are widely used by parallel programming platforms to distribute tasks across multiple processors. Memory blowup from scheduling a program with work stealing can be bounded by using continuation stealing when new tasks are spawned. Continuation stealing is opposed to child stealing, a different method for spawning tasks that is simpler to implement, but comes at the expense of potentially unbounded memory use. An extension to the Julia programming langauge that adds support for optimizable spawn and sync parallel constructs has been proposed, but it does not currently support continuation stealing. In my thesis, I implement continuation stealing in Julia using two different metaprogramming approaches. One approach uses Julia’s macro system, while the other uses the Julia compiler’s internal representation (IR) of functions. My results show that the IR-based approach uses less memory than the child stealing implementation in the proposed extension to Julia, while having similar speed.","abstract_html":"Work stealing schedulers are widely used by parallel programming platforms to distribute tasks across multiple processors. Memory blowup from scheduling a program with work stealing can be bounded by using continuation stealing when new tasks are spawned. Continuation stealing is opposed to child stealing, a different method for spawning tasks that is simpler to implement, but comes at the expense of potentially unbounded memory use. An extension to the Julia programming langauge that adds support for optimizable spawn and sync parallel constructs has been proposed, but it does not currently support continuation stealing. In my thesis, I implement continuation stealing in Julia using two different metaprogramming approaches. One approach uses Julia’s macro system, while the other uses the Julia compiler’s internal representation (IR) of functions. My results show that the IR-based approach uses less memory than the child stealing implementation in the proposed extension to Julia, while having similar speed.","abstract_has_math":false,"creators":["Trollback, August"],"institution":"Massachusetts Institute of Technology","degree_name":"Master","degree_level":null,"degree_discipline":null,"degree_department":"Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science","school":null,"contributors":[],"advisors":["Schardl, Tao B."],"committee_chairs":[],"committee_members":[],"year":2023,"date_issued":"2023-02","date_published":"2023-02","updated_at":"2026-07-22T22:22:03Z","subjects":[],"languages":[],"rights":["In Copyright - Educational Use Permitted","Copyright MIT"],"rights_urls":["http://rightsstatements.org/page/InC-EDU/1.0/"],"identifier_entries":[]},"links":{"outbound_url":"https://hdl.handle.net/1721.1/150176","outbound_label":"Handle","outbound_source":"dc:identifier.uri"},"metadata_groups":[{"id":"people","label":"People","entries":[{"key":"dc:contributor.advisor","label":"Advisor","values":["Schardl, Tao B."]},{"key":"dc:contributor.department","label":"Department","values":["Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science"]},{"key":"dc:creator","label":"Author","values":["Trollback, August"]}]},{"id":"academic_context","label":"Academic Context","entries":[{"key":"dc:date.accessioned","label":"Dc Date Accessioned","values":["2023-03-31T14:37:42Z"]},{"key":"dc:date.available","label":"Dc Date Available","values":["2023-03-31T14:37:42Z"]},{"key":"dc:date.issued","label":"Date","values":["2023-02"]},{"key":"dc:publisher","label":"Institution","values":["Massachusetts Institute of Technology"]},{"key":"dc:type","label":"Dc Type","values":["Thesis"]},{"key":"thesis:degree_name","label":"Degree Name","values":["Master","Master of Engineering in Electrical Engineering and Computer Science"]}]},{"id":"language_rights","label":"Language and Rights","entries":[{"key":"dc:rights","label":"Dc Rights","values":["In Copyright - Educational Use Permitted","Copyright MIT"]},{"key":"dc:rights.uri","label":"Rights URI","values":["http://rightsstatements.org/page/InC-EDU/1.0/"]}]},{"id":"identifiers","label":"Identifiers","entries":[{"key":"dc:identifier.uri","label":"Identifier URI","values":["https://hdl.handle.net/1721.1/150176"]}]},{"id":"additional","label":"Additional Metadata","entries":[{"key":"dc:description.abstract","label":"Abstract","values":["Work stealing schedulers are widely used by parallel programming platforms to distribute tasks across multiple processors. Memory blowup from scheduling a program with work stealing can be bounded by using continuation stealing when new tasks are spawned. Continuation stealing is opposed to child stealing, a different method for spawning tasks that is simpler to implement, but comes at the expense of potentially unbounded memory use. An extension to the Julia programming langauge that adds support for optimizable spawn and sync parallel constructs has been proposed, but it does not currently support continuation stealing. In my thesis, I implement continuation stealing in Julia using two different metaprogramming approaches. One approach uses Julia’s macro system, while the other uses the Julia compiler’s internal representation (IR) of functions. My results show that the IR-based approach uses less memory than the child stealing implementation in the proposed extension to Julia, while having similar speed."]},{"key":"dc:description.degree","label":"Dc Description Degree","values":["M.Eng."]},{"key":"dc:title","label":"Title","values":["Continuation Stealing in Julia"]}]}],"canonical_facts":{"dc:contributor.advisor":["Schardl, Tao B."],"dc:contributor.department":["Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science"],"dc:creator":["Trollback, August"],"dc:date.accessioned":["2023-03-31T14:37:42Z"],"dc:date.available":["2023-03-31T14:37:42Z"],"dc:date.issued":["2023-02"],"dc:description.abstract":["Work stealing schedulers are widely used by parallel programming platforms to distribute tasks across multiple processors. Memory blowup from scheduling a program with work stealing can be bounded by using continuation stealing when new tasks are spawned. Continuation stealing is opposed to child stealing, a different method for spawning tasks that is simpler to implement, but comes at the expense of potentially unbounded memory use. An extension to the Julia programming langauge that adds support for optimizable spawn and sync parallel constructs has been proposed, but it does not currently support continuation stealing. In my thesis, I implement continuation stealing in Julia using two different metaprogramming approaches. One approach uses Julia’s macro system, while the other uses the Julia compiler’s internal representation (IR) of functions. My results show that the IR-based approach uses less memory than the child stealing implementation in the proposed extension to Julia, while having similar speed."],"dc:description.degree":["M.Eng."],"dc:identifier.uri":["https://hdl.handle.net/1721.1/150176"],"dc:publisher":["Massachusetts Institute of Technology"],"dc:rights":["In Copyright - Educational Use Permitted","Copyright MIT"],"dc:rights.uri":["http://rightsstatements.org/page/InC-EDU/1.0/"],"dc:title":["Continuation Stealing in Julia"],"dc:type":["Thesis"],"thesis:degree_name":["Master","Master of Engineering in Electrical Engineering and Computer Science"]},"updated_at":"2026-07-22T22:22:03Z"}