Withdraw
Loading…
Converting Parallel Code from Low-Level Abstractions to Higher-Level Abstractions
Okur, Semih; Erdogan, Cansu; Dig, Danny
Loading…
Permalink
https://hdl.handle.net/2142/49859
Description
- Title
- Converting Parallel Code from Low-Level Abstractions to Higher-Level Abstractions
- Author(s)
- Okur, Semih
- Erdogan, Cansu
- Dig, Danny
- Issue Date
- 2014
- Keyword(s)
- parallel programming
- refactoring
- multicore software engineering
- Date of Ingest
- 2014-06-01T01:06:36Z
- 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.
- Type of Resource
- text
- Genre of Resource
- Conference Paper / Presentation
- Language
- en
- Permalink
- http://hdl.handle.net/2142/49859
Owning Collections
Manage Files
Loading…
Edit Collection Membership
Loading…
Edit Metadata
Loading…
Edit Properties
Loading…
Embargoes
Loading…