concurrent predicates: a debugging technique for every parallel programmer
DESCRIPTION
Concurrent Predicates: A Debugging Technique for Every Parallel Programmer. PACT ‘13 Justin Gottschlich Gilles Pokam Cristiano Pereira Youfeng Wu Intel Corporation. The Problem. Reproducing known multithreaded bugs is challenging Why is it important? - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Concurrent Predicates: A Debugging Technique for Every Parallel Programmer](https://reader035.vdocument.in/reader035/viewer/2022062520/56816374550346895dd44ff3/html5/thumbnails/1.jpg)
1
Concurrent Predicates: A Debugging Technique for Every Parallel Programmer
PACT ‘13
Justin GottschlichGilles PokamCristiano PereiraYoufeng Wu
Intel Corporation
![Page 2: Concurrent Predicates: A Debugging Technique for Every Parallel Programmer](https://reader035.vdocument.in/reader035/viewer/2022062520/56816374550346895dd44ff3/html5/thumbnails/2.jpg)
2
The Problem• Reproducing known multithreaded bugs is
challenging
• Why is it important?– Fixing known bugs is general approach for real-
world bug fixing
• Works well for sequential code, not parallel
![Page 3: Concurrent Predicates: A Debugging Technique for Every Parallel Programmer](https://reader035.vdocument.in/reader035/viewer/2022062520/56816374550346895dd44ff3/html5/thumbnails/3.jpg)
3
A Simple Sequential Bug Exampley = calculate();
a = x / y;
if (y == 0) y = 1;
if (y == 0) crash
y = calculate();
if (y == 0) y = 1;
a = x / y;y != 0, no crash
![Page 4: Concurrent Predicates: A Debugging Technique for Every Parallel Programmer](https://reader035.vdocument.in/reader035/viewer/2022062520/56816374550346895dd44ff3/html5/thumbnails/4.jpg)
4
A Not-So Simple Parallel Bug Example
Parallel Bug Reproduction Needs1. Buggy program state2. Buggy program schedule
![Page 5: Concurrent Predicates: A Debugging Technique for Every Parallel Programmer](https://reader035.vdocument.in/reader035/viewer/2022062520/56816374550346895dd44ff3/html5/thumbnails/5.jpg)
5
The CP Solution
100mil loops, 0-999 calc(),occurs 1 out of 20 executions.
100mil loops, 0-999 calc(),occurs 20 out of 20 executions.
![Page 6: Concurrent Predicates: A Debugging Technique for Every Parallel Programmer](https://reader035.vdocument.in/reader035/viewer/2022062520/56816374550346895dd44ff3/html5/thumbnails/6.jpg)
6
What is CP?• Two variants– Concurrent Predicates (CP) – control structure
– CP with Expressions (CPEs) – happens-before ordering extrapolated
![Page 7: Concurrent Predicates: A Debugging Technique for Every Parallel Programmer](https://reader035.vdocument.in/reader035/viewer/2022062520/56816374550346895dd44ff3/html5/thumbnails/7.jpg)
7
The CPE Solution
![Page 8: Concurrent Predicates: A Debugging Technique for Every Parallel Programmer](https://reader035.vdocument.in/reader035/viewer/2022062520/56816374550346895dd44ff3/html5/thumbnails/8.jpg)
8
The Real Problem• But what about reproducing a known bug
with an unknown root cause?– Most real-world bugs come in this form
![Page 9: Concurrent Predicates: A Debugging Technique for Every Parallel Programmer](https://reader035.vdocument.in/reader035/viewer/2022062520/56816374550346895dd44ff3/html5/thumbnails/9.jpg)
9
Recipes and Experimental Data
![Page 10: Concurrent Predicates: A Debugging Technique for Every Parallel Programmer](https://reader035.vdocument.in/reader035/viewer/2022062520/56816374550346895dd44ff3/html5/thumbnails/10.jpg)
10
A Bit About Bugs• Bugs can be thought in terms of ...
– A root cause– An observable effect
• CPs can be thought of in terms of ...– A root cause CP– An effect CP
• The root cause CP is placed after bug root cause, which is usually unknowny = calculate();
• The effect CP is placed just before bug effect, which is usually knowna = x / y;
![Page 11: Concurrent Predicates: A Debugging Technique for Every Parallel Programmer](https://reader035.vdocument.in/reader035/viewer/2022062520/56816374550346895dd44ff3/html5/thumbnails/11.jpg)
11
Recipe: Data Race
• CP can automatically find data races– Early implementation in PIN– Verified results found by Thread Checker• Identified true positives
![Page 12: Concurrent Predicates: A Debugging Technique for Every Parallel Programmer](https://reader035.vdocument.in/reader035/viewer/2022062520/56816374550346895dd44ff3/html5/thumbnails/12.jpg)
12
Recipe: Atomicity Violation
• Same structure as divide by zero example
![Page 13: Concurrent Predicates: A Debugging Technique for Every Parallel Programmer](https://reader035.vdocument.in/reader035/viewer/2022062520/56816374550346895dd44ff3/html5/thumbnails/13.jpg)
13
Recipe: Deadlock
• Expression operators in paper
![Page 14: Concurrent Predicates: A Debugging Technique for Every Parallel Programmer](https://reader035.vdocument.in/reader035/viewer/2022062520/56816374550346895dd44ff3/html5/thumbnails/14.jpg)
14
Experimental Results
• 5 handcrafted bugs• 5 RADBench bugs• 3 unresolved TBoost.STM bugs (now fixed)• Overhead generally 10%-100% (1.1x – 2x)
![Page 15: Concurrent Predicates: A Debugging Technique for Every Parallel Programmer](https://reader035.vdocument.in/reader035/viewer/2022062520/56816374550346895dd44ff3/html5/thumbnails/15.jpg)
15
Conclusions and Future Directions• CP and CPE:– Can improve known bug reproduction– Can identify unknown root causes of known bugs
using recipes (we’ve used them)
• What’s next?– Simplify model; direct debugger integration– Automated CPE injection for certain types of
bugs– Usage experience data from novice programmers
![Page 16: Concurrent Predicates: A Debugging Technique for Every Parallel Programmer](https://reader035.vdocument.in/reader035/viewer/2022062520/56816374550346895dd44ff3/html5/thumbnails/16.jpg)
16
Concurrent Predicates: A Debugging Technique for Every Parallel Programmer
PACT ‘13
Justin Gottschlich ([email protected])Gilles PokamCristiano PereiraYoufeng Wu
Intel Corporation
Questions?