confronting race conditions intel software college introduction to parallel programming – part 4

48
Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Upload: gabriel-dougherty

Post on 26-Mar-2015

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Confronting Race Conditions

Intel Software College

Introduction to Parallel Programming – Part 4

Page 2: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

2Congronting Race Conditions

Intel® Software College

Objectives

At the end of this module you should be able to:

Give practical examples of ways that threads may contend for shared resources

Write an OpenMP program that contains a reduction

Describe what race conditions are and explain how to eliminate them

Define deadlock and explain ways to prevent it

Page 3: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

3Congronting Race Conditions

Intel® Software College

Motivating Example

double area, pi, x;int i, n;...area = 0.0;for (i = 0; i < n; i++) { x = (i + 0.5)/n; area += 4.0/(1.0 + x*x);}pi = area / n;

What happens when we make the for loop parallel?

Page 4: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

4Congronting Race Conditions

Intel® Software College

Race Condition

A race condition is nondeterministic behavior caused by the times at which two or more threads access a shared variable

For example, suppose both Thread A and Thread B are executing the statement

area += 4.0 / (1.0 + x*x);

Page 5: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

5Congronting Race Conditions

Intel® Software College

Value of area Thread A Thread B

11.667

One Timing Correct Sum

+3.765

15.432

15.432

+ 3.563

18.995

Page 6: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

6Congronting Race Conditions

Intel® Software College

Value of area Thread A Thread B

11.667

Another Timing Incorrect Sum

+3.765

11.667

15.432

+ 3.563

15.230

Page 7: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

7Congronting Race Conditions

Intel® Software College

Another Race Condition Example

struct Node { struct Node *next; int data; };

struct List { struct Node *head; }

void AddHead (struct List *list, struct Node *node) { node->next = list->head; list->head = node;}

Page 8: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

8Congronting Race Conditions

Intel® Software College

Original Singly-Linked List

headdata

next

listnode_a

Page 9: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

9Congronting Race Conditions

Intel® Software College

Thread 1 after Stmt. 1 of AddHead

headdata

next

listnode_a

data

next

node_b

Page 10: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

10Congronting Race Conditions

Intel® Software College

Thread 2 Executes AddHead

headdata

next

listnode_a

data

next

node_b

data

next

node_c

Page 11: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

11Congronting Race Conditions

Intel® Software College

Thread 1 After Stmt. 2 of AddHead

headdata

next

listnode_a

data

next

node_b

data

next

node_c

Page 12: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

12Congronting Race Conditions

Intel® Software College

Why Race Conditions Are Nasty

Programs with race conditions exhibit nondeterministic behavior

Sometimes give correct result

Sometimes give erroneous result

Programs often work correctly on trivial data sets and small number of threads

Errors more likely to occur when number of threads and/or execution time increases

Hence debugging race conditions can be difficult

Page 13: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

13Congronting Race Conditions

Intel® Software College

Mutual Exclusion

We can prevent the race conditions described earlier by ensuring that only one thread at a time references and updates shared variable or data structure

Mutual exclusion refers to a kind of synchronizationthat allows only a single thread or process at a time to have access to a shared resource

Mutual exclusion is implemented using some form of locking

Page 14: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

14Congronting Race Conditions

Intel® Software College

Flags Don’t Guarantee Mutual Exclusion

int flag = 0;

void AddHead (struct List *list, struct Node *node) { while (flag != 0) /* wait */ ; flag = 1; node->next = list->head; list->head = node; flag = 0;}

Page 15: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

15Congronting Race Conditions

Intel® Software College

Flags Don’t Guarantee Mutual Exclusion

int flag = 0;

void AddHead (struct List *list, struct Node *node) { while (flag != 0) /* wait */ ; flag = 1; node->next = list->head; list->head = node; flag = 0;}

Thread 1

0

flag

Page 16: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

16Congronting Race Conditions

Intel® Software College

Flags Don’t Guarantee Mutual Exclusion

int flag = 0;

void AddHead (struct List *list, struct Node *node) { while (flag != 0) /* wait */ ; flag = 1; node->next = list->head; list->head = node; flag = 0;}

Thread 1

0

flag Thread 2

Page 17: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

17Congronting Race Conditions

Intel® Software College

Flags Don’t Guarantee Mutual Exclusion

int flag = 0;

void AddHead (struct List *list, struct Node *node) { while (flag != 0) /* wait */ ; flag = 1; node->next = list->head; list->head = node; flag = 0;}

Thread 1

1

flag Thread 2

Page 18: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

18Congronting Race Conditions

Intel® Software College

Flags Don’t Guarantee Mutual Exclusion

int flag = 0;

void AddHead (struct List *list, struct Node *node) { while (flag != 0) /* wait */ ; flag = 1; node->next = list->head; list->head = node; flag = 0;}

Thread 1

1

flag Thread 2

Page 19: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

19Congronting Race Conditions

Intel® Software College

Flags Don’t Guarantee Mutual Exclusion

int flag = 0;

void AddHead (struct List *list, struct Node *node) { while (flag != 0) /* wait */ ; flag = 1; node->next = list->head; list->head = node; flag = 0;}

Thread 1

0

flag Thread 2

Page 20: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

20Congronting Race Conditions

Intel® Software College

Flags Don’t Guarantee Mutual Exclusion

int flag = 0;

void AddHead (struct List *list, struct Node *node) { while (flag != 0) /* wait */ ; flag = 1; node->next = list->head; list->head = node; flag = 0;}

Thread 1

0

flag Thread 2

Page 21: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

21Congronting Race Conditions

Intel® Software College

Locking Mechanism

The previous method failed because checking the value of flag and setting its value were two distinct operations

We need some sort of atomic test-and-set

Operating system provides functions to do this

The generic term “lock” refers to a synchronization mechanism used to control access to shared resources

Page 22: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

22Congronting Race Conditions

Intel® Software College

Critical Sections

A critical section is a portion of code that threads execute in a mutually exclusive fashion

The critical pragma in OpenMP immediately precedes a statement or block representing a critical section

Good news: critical sections eliminate race conditions

Bad news: critical sections are executed sequentially

More bad news: you have to identify critical sections yourself

Page 23: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

23Congronting Race Conditions

Intel® Software College

Reminder: Motivating Example

double area, pi, x;int i, n;...area = 0.0;for (i = 0; i < n; i++) { x = (i + 0.5)/n; area += 4.0/(1.0 + x*x);}pi = area / n;

Where is the critical section?

Page 24: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

24Congronting Race Conditions

Intel® Software College

Solution #1double area, pi, x;int i, n;...area = 0.0;#pragma omp parallel for private(x)for (i = 0; i < n; i++) { x = (i + 0.5)/n;#pragma omp critical area += 4.0 / (1.0 + x*x);}pi = area / n;

This ensures area will end up with the correct value.How can we do better?

Page 25: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

25Congronting Race Conditions

Intel® Software College

Solution #2

double area, pi, tmp, x;int i, n;...area = 0.0;#pragma omp parallel for private(x,tmp)for (i = 0; i < n; i++) { x = (i + 0.5)/n; tmp = 4.0/(1.0 + x*x);#pragma omp critical area += tmp;}pi = area / n;

This reduces amount of time spent in critical section.How can we do better?

Page 26: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

26Congronting Race Conditions

Intel® Software College

Solution #3double area, pi, tmp, x;int i, n;...area = 0.0;#pragma omp parallel private(tmp){ tmp = 0.0;#pragma omp for private (x) for (i = 0; i < n; i++) { x = (i + 0.5)/n; tmp += 4.0/(1.0 + x*x); }#pragma omp critical area += tmp;}pi = area / n;

Why is this better?

Page 27: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

27Congronting Race Conditions

Intel® Software College

Reductions

Given associative binary operator the expression

a1 a2 a3 ... an

is called a reduction

The -finding program performs a sum-reduction

Page 28: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

28Congronting Race Conditions

Intel® Software College

OpenMP reduction Clause

Reductions are so common that OpenMP provides a reduction clause for the parallel for pragma

Eliminates need for

Creating private variable

Dividing computation into accumulation of local answers that contribute to global result

Page 29: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

29Congronting Race Conditions

Intel® Software College

Solution #4

double area, pi, x;int i, n;...area = 0.0;#pragma omp parallel for private(x) \

reduction(+:area)for (i = 0; i < n; i++) { x = (i + 0.5)/n; area += 4.0/(1.0 + x*x);}pi = area / n;

Page 30: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

30Congronting Race Conditions

Intel® Software College

Important: Lock Data, Not Code

Locks should be associated with data objects

Different data objects should have different locks

Suppose lock associated with critical section of code instead of data object

Mutual exclusion can be lost if same object manipulated by two different functions

Performance can be lost if two threads manipulating different objects attempt to execute same function

Page 31: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

31Congronting Race Conditions

Intel® Software College

Example: Hash Table Creation

...

NULL

NULL

NULL

NULL

NULL

Page 32: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

32Congronting Race Conditions

Intel® Software College

Locking Code: Inefficient

#pragma omp parallel for private (index)for (i = 0; i < elements; i++) { index = hash(element[i]); #pragma omp critical insert_element (element[i], index);}

Page 33: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

33Congronting Race Conditions

Intel® Software College

Locking Data: Efficient

/* Static variable */omp_lock_t hash_lock[HASH_TABLE_SIZE];

/* Inside function ‘main’ */for (i = 0; i < HASH_TABLE_SIZE; i++) omp_init_lock(&hash_lock[i]);

void insert_element (ELEMENT e, int i){ omp_set_lock (&hash_lock[i]); /* Code to insert element e */ omp_unset_lock (&hash_lock[i]);}

Declaration

Initialization

Use

Page 34: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

34Congronting Race Conditions

Intel® Software College

Locks in General Threads Model

If access to a shared resource is controlled by a synchronization mechanism, we say the resource is “protected by a lock”

Examples of locks are semaphores, signals, mutexes, and monitors

We’ll use generic terms “lock” and “unlock”

Different thread models have different functions/methods

Page 35: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

35Congronting Race Conditions

Intel® Software College

Win32 Synchronization Primitives

SemaphoreMost general and slowestCan synchronize two or more threads from

multiple processes

MutexBinary semaphoreFaster than more general semaphore

Critical sectionSynchronizes threads within same processMuch faster than semaphore and mutex

Page 36: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

36Congronting Race Conditions

Intel® Software College

Critical Sections with Pthreads

/* Create mutex, a static variable */

pthread_mutex_t mutex_name = PTHREAD_MUTEX_INITIALIZER;

/* Use mutex in program */

pthread_mutex_lock (&mutex_name);

/* Crtical section operations */

pthread_mutex_unlock (&mutex_name);

Page 37: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

37Congronting Race Conditions

Intel® Software College

Locks Are Dangerous

Suppose a lock is used to guarantee mutually exclusive access to a shared variable

Imagine two threads, each with its own critical section

Thread A Thread B

a += 5; b += 5;

b += 7; a += 7;

a += b; a += b;

a += 11; b += 11;

Page 38: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

38Congronting Race Conditions

Intel® Software College

Faulty Implementation

Thread A Thread B

lock (lock_a); lock (lock_b);

a += 5; b += 5;

lock (lock_b); lock (lock_a);

b += 7; a += 7;

a += b; a += b;

unlock (lock_b); unlock (lock_a);

a += 11; b += 11;

unlock (lock_a); unlock (lock_b);

What happens ifthreads are at

this point at thesame time?

Page 39: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

39Congronting Race Conditions

Intel® Software College

Deadlock

A situation involving two or more threads (processes) in which no thread may proceed because each

is waiting for a resource held by another

Can be represented by a resource allocation graph

A graph of deadlock contains a cycle

Thread A Thread A

sem_b

sem_a

wants

wants

held by

held by

Page 40: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

40Congronting Race Conditions

Intel® Software College

More on Deadlocks

A program exhibits a global deadlock if every thread is blocked

A program exhibits local deadlock if only some of the threads in the program are blocked

A deadlock is another example of a nondeterministic behavior exhibited by a parallel program

Adding debugging output to detect source of deadlock can change timing and reduce chance of deadlock occurring

Page 41: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

41Congronting Race Conditions

Intel® Software College

Four Conditions for Deadlock

Mutually exclusive access to a resource

Threads hold onto resources they have while they wait for additional resources

Resources cannot be taken away from threads

Cycle in resource allocation graph

Page 42: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

42Congronting Race Conditions

Intel® Software College

Preventing Deadlock

Eliminate one of four necessary conditions

Don’t allow mutually exclusive access to resource

Don’t allow threads to wait while holding resources

Allow resources to be taken away from threads

Make sure request allocation graph cannot have a cycle

Page 43: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

43Congronting Race Conditions

Intel® Software College

Deadlock Prevention Strategies

Don’t allow mutually exclusive access to resource

Make resource shareable

Don’t allow threads to wait while holding resources

Only request resources when have none. That means only hold one resource at a time or request all resources at once.

Allow resources to be taken away from threads.

Allow preemption. Works for CPU and memory. Doesn’t work for locks.

Ensure no cycle in request allocation graph.

Rank resources. Threads must acquire resources in order.

Page 44: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

44Congronting Race Conditions

Intel® Software College

Correct Implementation

Thread A Thread B

lock (lock_a); lock (lock_a);

a += 5; lock (lock_b);

lock (lock_b); b += 5;

b += 7; a += 7;

a += b; a += b;

unlock (lock_b); unlock (lock_a);

a += 11; b += 11;

unlock (lock_a); unlock (lock_b);

Threads must locklock_a before lock_b

Page 45: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

45Congronting Race Conditions

Intel® Software College

Another Problem with Locks

Every call to function lock should be matched with a call to unlock, representing the start and the end of the critical section

A program may be syntactically correct (i.e., may compile) without having matching calls

A programmer may forget the unlock call or may pass the wrong argument to unlock

A thread that never releases a shared resource creates a deadlock

Page 46: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

46Congronting Race Conditions

Intel® Software College

Deadlock Detection

By keeping track of blocked threads, a run-time system can often detect global and local deadlocks

Intel Thread Checker does lock-cycle analysis to detect the potential for deadlock

Windows Vista has a “wait chain traversal” mechanism that can help debuggers diagnose deadlocks

Java HotSpot VM has a deadlock detection utility

Page 47: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

47Congronting Race Conditions

Intel® Software College

References

Andrea C. Arpaci-Dusseau and Remzi H. Arpaci-Dusseau, “Deadlock”, CS 537, Introduction to Operating Systems, Computer Sciences Department, University of Wisconsin-Madison.

Jim Beveridge and Robert Wiener, Multithreading Applications in Win32®, Addison-Wesley (1997).

Richard H. Carver and Kuo-Chung Tai, Modern Multithreading: Implementing, Testing, and Debugging Java and C++/Pthreads/ Win32 Programs, Wiley-Interscience (2006).

Michael J. Quinn, Parallel Programming in C with MPI and OpenMP, McGraw-Hill (2004).

Brent E. Rector and Joseph M. Newcomer, Win32 Programming, Addison-Wesley (1997).

N. Wirth, Programming in Modula-2, Springer (1985).

Page 48: Confronting Race Conditions Intel Software College Introduction to Parallel Programming – Part 4

Copyright © 2006, Intel Corporation. All rights reserved.

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States or other countries. *Other brands and names are the property of their respective owners.

48Congronting Race Conditions

Intel® Software College