Title
Symbolic reasoning for automatic signal placement.
Abstract
Explicit signaling between threads is a perennial cause of bugs in concurrent programs. While there are several run-time techniques to automatically notify threads upon the availability of some shared resource, such techniques are not widely-adopted due to their run-time overhead. This paper proposes a new solution based on static analysis for automatically generating a performant explicit-signal program from its corresponding implicit-signal implementation. The key idea is to generate verification conditions that allow us to minimize the number of required signals and unnecessary context switches, while guaranteeing semantic equivalence between the source and target programs. We have implemented our method in a tool called Expresso and evaluate it on challenging benchmarks from prior papers and open-source software. Expresso-generated code significantly outperforms past automatic signaling mechanisms (avg. 1.56x speedup) and closely matches the performance of hand-optimized explicit-signal code.
Year
DOI
Venue
2018
10.1145/3192366.3192395
PLDI
Keywords
Field
DocType
Implicit signal monitors, abductive reasoning, concurrent programming, monitor invariant, symbolic reasoning, verification conditions
Programming language,Computer science,Static analysis,Thread (computing),Software,Semantic equivalence,Concurrent computing,Shared resource,Computer engineering,Speedup,Context switch
Conference
Volume
Issue
ISSN
53
4
0362-1340
Citations 
PageRank 
References 
0
0.34
19
Authors
4
Name
Order
Citations
PageRank
Kostas Ferles1101.85
Jacob Van Geffen2152.30
Isil Dillig371144.97
Yannis Smaragdakis42247147.50