Symbolic Reasoning for Automatic Signal Placement (Extended Version)

04/07/2018
by   Kostas Ferles, et al.
0

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.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
04/06/2018

An Approach to Static Performance Guarantees for Programs with Run-time Checks

Instrumenting programs for performing run-time checking of properties, s...
research
03/01/2022

Synthesizing Fine-Grained Synchronization Protocols for Implicit Monitors (Extended Version)

A monitor is a widely-used concurrent programming abstraction that encap...
research
09/28/2017

Thread-Modular Static Analysis for Relaxed Memory Models

We propose a memory-model-aware static program analysis method for accur...
research
10/23/2016

Hybrid Static/Dynamic Schedules for Tiled Polyhedral Programs

Polyhedral compilers perform optimizations such as tiling and paralleliz...
research
11/10/2016

A stochastically verifiable autonomous control architecture with reasoning

A new agent architecture called Limited Instruction Set Agent (LISA) is ...
research
09/05/2017

Trace-Based Run-time Analysis of Message-Passing Go Programs

We consider the task of analyzing message-passing programs by observing ...
research
10/19/2017

Safe Pointers in SPARK 2014

In the context of deductive software verification, programs with pointer...

Please sign up or login with your details

Forgot password? Click here to reset