118
UNIVERSITY OF MASSACHUSETTS, AMHERST Department of Computer Science Grace: Safe Multithreaded Programming for C/C++ Emery Berger University of Massachusetts, UPC/BSC www.cs.umass.edu/~emery

Grace : Safe Multithreaded Programming for C/C++

  • Upload
    bertha

  • View
    43

  • Download
    0

Embed Size (px)

DESCRIPTION

Grace : Safe Multithreaded Programming for C/C++. Emery Berger University of Massachusetts, UPC/BSC www.cs.umass.edu/~emery. “. ”. race condition. atomicity violation. deadlock. order violation. sequential. sequential. race conditions. race conditions. atomicity violations. - PowerPoint PPT Presentation

Citation preview

Page 1: Grace : Safe Multithreaded Programming for C/C++

UNIVERSITY OF MASSACHUSETTS , AMHERST • Department of Computer ScienceUNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science

Grace: Safe Multithreaded Programming for C/C++

Emery BergerUniversity of Massachusetts, UPC/BSC

www.cs.umass.edu/~emery

Page 2: Grace : Safe Multithreaded Programming for C/C++

UNIVERSITY OF MASSACHUSETTS , AMHERST • Department of Computer Science

Page 3: Grace : Safe Multithreaded Programming for C/C++

UNIVERSITY OF MASSACHUSETTS , AMHERST • Department of Computer Science

Page 4: Grace : Safe Multithreaded Programming for C/C++

UNIVERSITY OF MASSACHUSETTS , AMHERST • Department of Computer Science

Page 5: Grace : Safe Multithreaded Programming for C/C++
Page 6: Grace : Safe Multithreaded Programming for C/C++
Page 7: Grace : Safe Multithreaded Programming for C/C++
Page 8: Grace : Safe Multithreaded Programming for C/C++
Page 9: Grace : Safe Multithreaded Programming for C/C++
Page 10: Grace : Safe Multithreaded Programming for C/C++
Page 11: Grace : Safe Multithreaded Programming for C/C++
Page 12: Grace : Safe Multithreaded Programming for C/C++
Page 13: Grace : Safe Multithreaded Programming for C/C++
Page 14: Grace : Safe Multithreaded Programming for C/C++
Page 15: Grace : Safe Multithreaded Programming for C/C++

UNIVERSITY OF MASSACHUSETTS , AMHERST • Department of Computer Science

Page 16: Grace : Safe Multithreaded Programming for C/C++

UNIVERSITY OF MASSACHUSETTS , AMHERST • Department of Computer Science

Page 17: Grace : Safe Multithreaded Programming for C/C++

UNIVERSITY OF MASSACHUSETTS , AMHERST • Department of Computer Science

Page 18: Grace : Safe Multithreaded Programming for C/C++

UNIVERSITY OF MASSACHUSETTS , AMHERST • Department of Computer Science

Page 19: Grace : Safe Multithreaded Programming for C/C++

UNIVERSITY OF MASSACHUSETTS , AMHERST • Department of Computer Science

Page 20: Grace : Safe Multithreaded Programming for C/C++
Page 21: Grace : Safe Multithreaded Programming for C/C++
Page 22: Grace : Safe Multithreaded Programming for C/C++
Page 23: Grace : Safe Multithreaded Programming for C/C++
Page 24: Grace : Safe Multithreaded Programming for C/C++

UNIVERSITY OF MASSACHUSETTS , AMHERST • Department of Computer Science

“ ”

Page 25: Grace : Safe Multithreaded Programming for C/C++
Page 26: Grace : Safe Multithreaded Programming for C/C++
Page 27: Grace : Safe Multithreaded Programming for C/C++
Page 28: Grace : Safe Multithreaded Programming for C/C++
Page 29: Grace : Safe Multithreaded Programming for C/C++
Page 30: Grace : Safe Multithreaded Programming for C/C++

race condition

Page 31: Grace : Safe Multithreaded Programming for C/C++
Page 32: Grace : Safe Multithreaded Programming for C/C++
Page 33: Grace : Safe Multithreaded Programming for C/C++
Page 34: Grace : Safe Multithreaded Programming for C/C++
Page 35: Grace : Safe Multithreaded Programming for C/C++

atomicity violation

Page 36: Grace : Safe Multithreaded Programming for C/C++
Page 37: Grace : Safe Multithreaded Programming for C/C++
Page 38: Grace : Safe Multithreaded Programming for C/C++

deadlock

Page 39: Grace : Safe Multithreaded Programming for C/C++
Page 40: Grace : Safe Multithreaded Programming for C/C++
Page 41: Grace : Safe Multithreaded Programming for C/C++
Page 42: Grace : Safe Multithreaded Programming for C/C++

order violation

Page 43: Grace : Safe Multithreaded Programming for C/C++
Page 44: Grace : Safe Multithreaded Programming for C/C++

sequential

Page 45: Grace : Safe Multithreaded Programming for C/C++

sequential

Page 46: Grace : Safe Multithreaded Programming for C/C++
Page 47: Grace : Safe Multithreaded Programming for C/C++

race conditions

Page 48: Grace : Safe Multithreaded Programming for C/C++

race conditions

atomicity violations

Page 49: Grace : Safe Multithreaded Programming for C/C++

race conditions

atomicity violations

deadlock

Page 50: Grace : Safe Multithreaded Programming for C/C++

race conditions

atomicity violations

deadlock

order violations

Page 51: Grace : Safe Multithreaded Programming for C/C++
Page 52: Grace : Safe Multithreaded Programming for C/C++

Grace

race conditions

atomicity violations

deadlock

order violations

Page 53: Grace : Safe Multithreaded Programming for C/C++

race conditions

atomicity violations

deadlock

order violations

Grace

Page 54: Grace : Safe Multithreaded Programming for C/C++

race conditions

atomicity violations

deadlock

order violations

sequential

Grace

Page 55: Grace : Safe Multithreaded Programming for C/C++

Grace

% g++ myprog.cpp –lpthread –o myprog

Page 56: Grace : Safe Multithreaded Programming for C/C++

Grace

% g++ myprog.cpp –lgrace –o myprog

Page 57: Grace : Safe Multithreaded Programming for C/C++

Grace

% g++ myprog.cpp –lgrace –o myprog

sequential

Page 58: Grace : Safe Multithreaded Programming for C/C++

Grace

% g++ myprog.cpp –lgrace –o myprog

sequentialrace conditions

atomicity violations

deadlock

order violations

Page 59: Grace : Safe Multithreaded Programming for C/C++

Grace

% g++ myprog.cpp –lgrace –o myprog

sequentialrace conditions

atomicity violations

deadlock

order violations

Page 60: Grace : Safe Multithreaded Programming for C/C++

Safe and (usually) fast…

Page 61: Grace : Safe Multithreaded Programming for C/C++

benign race

Page 62: Grace : Safe Multithreaded Programming for C/C++

Grace

sequential + ?1.

Page 63: Grace : Safe Multithreaded Programming for C/C++

Grace

sequential + ?1.

2.

Page 64: Grace : Safe Multithreaded Programming for C/C++

Grace

sequential + ?1.

2.

3.

Page 65: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

Page 66: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

t1 = spawn f(x);t2 = spawn g(y);sync;

Page 67: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

t1 = spawn f(x);t2 = spawn g(y);sync;

spawnf(x)

Page 68: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

t1 = spawn f(x);t2 = spawn g(y);sync;

f(x)

spawnf(x)

Page 69: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

t1 = spawn f(x);t2 = spawn g(y);sync;

f(x)

spawnf(x)

spawng(y)

Page 70: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

t1 = spawn f(x);t2 = spawn g(y);sync;

f(x)g(y)

spawnf(x)

spawng(y)

Page 71: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

t1 = spawn f(x);t2 = spawn g(y);sync;

f(x)g(y)

spawnf(x)

spawng(y)

sync

Page 72: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

t1 = spawn f(x);t2 = spawn g(y);sync;

f(x)g(y)

spawnf(x)

spawng(y)

sync

Page 73: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

t1 = spawn f(x);t2 = spawn g(y);sync;

f(x)g(y)

spawnf(x)

spawng(y)

sync

left-to-right, depth-first ordering

Page 74: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

t1 = spawn f(x);t2 = spawn g(y);sync;

f(x)

g(y)

Page 75: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

t1 = spawn f(x);t2 = spawn g(y);sync;

f(x)

g(y)

“ ”

Page 76: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

f(x)

g(y)

“ ”

Page 77: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

f(x)

g(y)

“ ” race conditions

atomicity violations

deadlock

order violations

Page 78: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

f(x)

g(y)

“ ” race conditions

atomicity violations

deadlock

order violations

Page 79: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

f(x)

g(y)

“ ” race conditions

atomicity violations

deadlock

order violations

Page 80: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

f(x)

g(y)

“ ” race conditions

atomicity violations

deadlock

order violations

Page 81: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

f(x)

g(y)

“ ” race conditions

atomicity violations

deadlock

order violations

Page 82: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

f(x)

g(y)

“ ” race conditions

atomicity violations

deadlock

order violations

Page 83: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

f(x)

g(y)

“ ” race conditions

atomicity violations

deadlock

order violations

Page 84: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

f(x)

g(y)

“ ”

Page 85: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

f(x)

g(y)

“ ”

Page 86: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

f(x)

g(y)

“ ”

Page 87: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

f(x)

g(y)

“ ”

Page 88: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

f(x)

g(y)

“ ”

Page 89: Grace : Safe Multithreaded Programming for C/C++

sequential + ?1.

f(x)

g(y)

“ ”

Fork-join(e.g., map-reduce, Cilk, TBB…)

Page 90: Grace : Safe Multithreaded Programming for C/C++

?2.

What’s under the hood?

Page 91: Grace : Safe Multithreaded Programming for C/C++

?2.

“Magic!”

Page 92: Grace : Safe Multithreaded Programming for C/C++

?2.

+

Page 93: Grace : Safe Multithreaded Programming for C/C++

?2.

Page 94: Grace : Safe Multithreaded Programming for C/C++

?2.

t1 = spawn f(x);t2 = spawn g(y);sync;

Page 95: Grace : Safe Multithreaded Programming for C/C++

?2.

t1 = spawn f(x);t2 = spawn g(y);sync;

if (!fork()) f(x);if (!fork()) g(y);// check;

Page 96: Grace : Safe Multithreaded Programming for C/C++

?2.

if (!fork()) f(x);if (!fork()) g(y);// check;

f(x)g(y)

spawnf(x)

spawng(y)

sync

Page 97: Grace : Safe Multithreaded Programming for C/C++

?2.

if (!fork()) f(x);if (!fork()) g(y);// check;

f(x)g(y)

spawnf(x)

spawng(y)

sync

Page 98: Grace : Safe Multithreaded Programming for C/C++

?2.

if (!fork()) f(x);if (!fork()) g(y);// check;

f(x)g(y)

spawnf(x)

spawng(y)

sync

Note:Nested threads ok

Page 99: Grace : Safe Multithreaded Programming for C/C++

?2.f(x)

g(y)

spawnf(x)

spawng(y)

syncmmap

Page 100: Grace : Safe Multithreaded Programming for C/C++

?2.f(x)

g(y)

spawnf(x)

spawng(y)

syncmmap

Page 101: Grace : Safe Multithreaded Programming for C/C++

?2.f(x)

g(y)

spawnf(x)

spawng(y)

syncmmap

Page 102: Grace : Safe Multithreaded Programming for C/C++

?2.f(x)

g(y)

spawnf(x)

spawng(y)

sync

Page 103: Grace : Safe Multithreaded Programming for C/C++

?2.f(x)

g(y)

spawnf(x)

spawng(y)

sync

1

Page 104: Grace : Safe Multithreaded Programming for C/C++

?2.f(x)

g(y)

spawnf(x)

spawng(y)

sync

12

Page 105: Grace : Safe Multithreaded Programming for C/C++

?2.

scalable heap+ aligned globals

I/O (buffering + ordering)

Page 106: Grace : Safe Multithreaded Programming for C/C++

3.

More detailed results…

Page 107: Grace : Safe Multithreaded Programming for C/C++
Page 108: Grace : Safe Multithreaded Programming for C/C++
Page 109: Grace : Safe Multithreaded Programming for C/C++
Page 110: Grace : Safe Multithreaded Programming for C/C++

Grace

sequentialrace conditions

atomicity violations

deadlock

order violations

Page 111: Grace : Safe Multithreaded Programming for C/C++

Grace

sequentialrace conditions

atomicity violations

deadlock

order violations

Page 112: Grace : Safe Multithreaded Programming for C/C++

Grace

sequentialrace conditions

atomicity violations

deadlock

order violations

Page 113: Grace : Safe Multithreaded Programming for C/C++

Grace

sequentialrace conditions

atomicity violations

deadlock

order violations

% g++ myprog.cpp –lgrace –o myprog

Page 114: Grace : Safe Multithreaded Programming for C/C++

“Moltes gràcies”

Page 115: Grace : Safe Multithreaded Programming for C/C++

UNIVERSITY OF MASSACHUSETTS , AMHERST • Department of Computer Science

?2.

Page 116: Grace : Safe Multithreaded Programming for C/C++

UNIVERSITY OF MASSACHUSETTS , AMHERST • Department of Computer Science

?2.

Page 117: Grace : Safe Multithreaded Programming for C/C++

UNIVERSITY OF MASSACHUSETTS , AMHERST • Department of Computer Science

?2.

+

Page 118: Grace : Safe Multithreaded Programming for C/C++

UNIVERSITY OF MASSACHUSETTS , AMHERST • Department of Computer Science

?2.

+ +