Files in this item



application/pdfokur-2014-ecoop.pdf (468kB)
(no description provided)PDF


Title:Converting Parallel Code from Low-Level Abstractions to Higher-Level Abstractions
Author(s):Okur, Semih; Erdogan, Cansu; Dig, Danny
Subject(s):parallel programming
multicore software engineering
Abstract:Parallel libraries continuously evolve from low-level to higher-level abstractions. However, developers are not up-to-date with these higher-level abstractions, thus their parallel code might be hard to read, slow, and unscalable. Using a corpus of 880 open-source C# applications, we found that developers still use the old Thread and ThreadPool abstractions in 62% of the cases when they use parallel abstractions. Converting code to higher-level abstractions is (i) tedious and (ii) error-prone. e.g., it can harm performance and silence the uncaught exceptions. We present two automated migration tools, Taskifier and Simplifier that work for C# code. The first tool transforms old style Thread and ThreadPool abstractions to Task abstractions. The second tool transforms code with Task abstractions into higher-level design patterns. Using our code corpus, we have applied these tools 3026 and 405 times, respectively. Our empirical evaluation shows that the tools (i) are highly applicable, (ii) reduce the code bloat, (iii) are much safer than manual transformations. We submitted 66 patches generated by our tools, and the open-source developers accepted 53.
Issue Date:2014
Genre:Conference Paper / Presentation
Publication Status:published or submitted for publication
Peer Reviewed:is peer reviewed
Date Available in IDEALS:2014-06-01

This item appears in the following Collection(s)

Item Statistics