Compiler-Guided Identification of Critical Sections in Parallel Code

Kempf S, Veldema R, Philippsen M (2013)


Publication Language: English

Publication Type: Conference contribution, Original article

Publication year: 2013

Journal

Publisher: Springer-verlag

Edited Volumes: Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)

City/Town: Berlin Heidelberg

Pages Range: 204-223

Conference Proceedings Title: Compiler Construction, 22nd International Conference, CC 2013

Event location: Rome, Italy IT

ISBN: 978-3-642-37050-2

URI: https://www2.informatik.uni-erlangen.de/publication/download/CC2013.pdf

DOI: 10.1007/978-3-642-37051-9_11

Abstract

There is a huge body of sequential legacy code that needs to be refactored for multicore processors. Especially for control code for embedded systems it is often easy to split the program into multiple threads. But it is difficult to identify critical sections to avoid data races as the legacy code hides its synchronization in a static schedule, priorities and interrupts. To ease refactoring, this paper presents a new static data-dependence analysis that identifies necessary critical sections in thread-parallel code that does not yet contain any synchronization between threads. A novel optimization pass then breaks up and shrinks the identified critical sections to maximize parallelism while preserving correctness. Our technique proved to be successful in refactoring sequential assembly-like legacy codes in an industry-sponsored project. But as refactoring projects are hard to evaluate quantitatively and as the domain specific low-level language is of limited interest, we use a standard benchmark suite for which the optimum, i.e., the minimal set of the necessary atomic block annotations is known. We removed the annotations and let the compiler attempt to rediscover them. For 5 out of 7 benchmarks, our compiler identified the same critical sections as the original programmers did by hand. For the other two benchmarks, the compiler found slightly larger (but also correct) critical sections. In all cases, the versions of the benchmarks that the compiler annotated achieved the original run-time performance. © 2013 Springer-Verlag.

Authors with CRIS profile

How to cite

APA:

Kempf, S., Veldema, R., & Philippsen, M. (2013). Compiler-Guided Identification of Critical Sections in Parallel Code. In Ranjit Jhala, Koen De Bosschere (Eds.), Compiler Construction, 22nd International Conference, CC 2013 (pp. 204-223). Rome, Italy, IT: Berlin Heidelberg: Springer-verlag.

MLA:

Kempf, Stefan, Ronald Veldema, and Michael Philippsen. "Compiler-Guided Identification of Critical Sections in Parallel Code." Proceedings of the International Conference on Compiler Construction, Rome, Italy Ed. Ranjit Jhala, Koen De Bosschere, Berlin Heidelberg: Springer-verlag, 2013. 204-223.

BibTeX: Download