Top Banner
Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick Yu Yang Ganesh Gopalakrishnan* Robert M. Kirby* * = presenters School of Computing, University of Utah, Salt Lake City, UT 84112, USA http:// www.cs.utah.edu / formal_verification / europvm09-tutorial- mpi-threading-fv Supported by NSF CNS 0509379, CCF 0811429, CCF 0903408, SRC tasks TJ 1847.001 and TJ 1993, and Microsoft 1
50

Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

Dec 16, 2015

Download

Documents

Esteban Brant
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

Practical Formal Verification ofMPI and Thread Programs

Sarvani VakkalankaAnh Vo*

Michael DeLisiSriram Aananthakrishnan

Alan HumphreyChristopher Derrick

Yu YangGanesh Gopalakrishnan*

Robert M. Kirby** = presenters

School of Computing, University of Utah,Salt Lake City, UT 84112, USA

http:// www.cs.utah.edu / formal_verification / europvm09-tutorial-mpi-threading-fvSupported by NSF CNS 0509379, CCF 0811429, CCF 0903408,

SRC tasks TJ 1847.001 and TJ 1993, and Microsoft 1

Page 2: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Other students involved:Salman Pervez, Robert Palmer, Guodong Li, Geof Sawaya, Subodh Sharma, Grzegorz Szubzda, Jason Williams, Simone Atzeni, Wei-Fan Chiang

• External Collaborators:ANL / UIUC : Rajeev Thakur, Bill Gropp, Rusty Lusk

IBM : Beth Tibbits LLNL : Bronis de Supinski, Martin Schulz, Dan Quinlan Microsoft : Robert Palmer, Dennis Crain, Shahrokh Mortazavi

Additional Acknowledgements for this tutorial

Page 3: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Overview of Formal Verification, especially Dynamic Verification • Overview of MPI • Demo of our tool ISP• Architecture of ISP• Presentation of Any_src_can_deadlock (from Umpire test suite)• Our algorithm POE (Partial Order avoiding Elusive interleavings)• Presentation of POE-Illustration• Present details of POE-Illustration: ISP’s Eclipse framework and

GUI• Boot into LiveDVD and practice on POE-Illustration

9:00 to 10:30

Page 4: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Coffee Break

• IMPORTANT : Please give feedback before it is too late

• Too fast ?

• Too slow ?

• Just right !! ?

• Assuming a lot ?

• Other suggestions ?

• We will TRY to take into account these valuable suggestions!

10:30 to 11:00

Page 5: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Illustration of Resource Dependent Deadlocks, and Detection• Illustration of Resource Leak, and Detection• Iprobe behavior, and illustration using GUI• Assertion Violation in Red/Blue Problem• Audience Participation in Above Exercises• ISP’s Theory : MPI Happens-before

• Also called “matches before, completes before” in the tool

11:00 to 12:00

Page 6: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Example of Matrix Multiplication: Four Variations• Analysis of these variations using ISP, with Audience

Participation

12:00 to 12:30

Page 7: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Assisted Problem Solving by Audience

14:00 to 15:00

Page 8: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Overview of Dynamic Verification of Shared Memory Thread Programs

15:00 to 15:30

Page 9: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Dynamic Verification of Thread Programs using Inspect• Concluding Remarks

16:00 to 17:30

Page 10: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

Overview of Formal Verification methods

for Validating Concurrent Systems

About 30 minutes – by Ganesh

10

Page 11: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

11

Problem: Engineering Reliable Concurrent Systems

Page 12: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Designers require a push-button debugger-like interface– But one that offers coverage guarantees and deeper

insights

For many important reasons, we advocate Dynamic Formal Verification methods

Page 13: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Testing methods suffer from bug omissions

13X

Bug Omissions

For many important reasons, we advocate Dynamic Formal Verification methods

Page 14: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Testing methods suffer from bug omissions• Static analysis methods generate many false alarms

14X X

Bug Omissions False Alarms

For many important reasons, we advocate Dynamic Formal Verification methods

Page 15: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Testing methods suffer from bug omissions• Static analysis methods generate many false alarms• Model based verification requires tedious model

building

15X X X

Bug Omissions False Alarms Tedious Modeling

For many important reasons, we advocate Dynamic Formal Verification methods

Page 16: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Testing methods suffer from bug omissions• Static analysis methods generate many false alarms• Model based verification requires tedious model

building• Dynamic verification methods are ideal for

designers!

16X X X √

Bug Omissions False Alarms Tedious Modeling • No omissions• No false alarms• No need for modeling

For many important reasons, we advocate Dynamic Formal Verification methods

Page 17: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

Code written using mature libraries (MPI, OpenMP, PThreads, …)

API calls made from real programming languages

(C, Fortran, C++)

Runtime semantics determined by realistic compilers and runtimes

Dynamic VerificationMethods are going to be very important for real engineers !

(static analysis and model based verification canplay importantsupportive roles)

17

Growing Importance of Dynamic Verification

Page 18: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Verisoft Project– Used for telephone switch software verification in Bell Labs– Available

A Brief Survey of Dynamic Verification tools

Page 19: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Verisoft Project– Used for telephone switch software verification in Bell Labs– Available

• The Java Pathfinder Project– Developed at NASA for Java Control Software– On SourceForge

A Brief Survey of Dynamic Verification tools

Page 20: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Verisoft Project– Used for telephone switch software verification in Bell Labs– Available

• The Java Pathfinder Project– Developed at NASA for Java Control Software– On SourceForge

• The CHESS Project– Microsoft Research ; available for academic institutions– In use within Microsoft product groups, and used by

academics

A Brief Survey of Dynamic Verification tools

Page 21: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Verisoft Project– Used for telephone switch software verification in Bell Labs– Available

• The Java Pathfinder Project– Developed at NASA for Java Control Software– On SourceForge

• The CHESS Project– Microsoft Research ; available for academic institutions– In use within Microsoft product groups, and used by

academics

• Inspect : Our fairly unique Pthread / C verifier– Discussed in this tutorial

A Brief Survey of Dynamic Verification tools

Page 22: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Verisoft Project– Used for telephone switch software verification in Bell Labs– Available

• The Java Pathfinder Project– Developed at NASA for Java Control Software– On SourceForge

• The CHESS Project– Microsoft Research ; available for academic institutions– In use within Microsoft product groups, and used by

academics

• Inspect : Our fairly unique Pthread / C verifier– Discussed in this tutorial

• ISP : Our very unique MPI / C program verifier– Main focus of THIS TUTORIAL !!

A Brief Survey of Dynamic Verification tools

Page 23: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

– Through PMPI

• Runs the code under a verification scheduler

– ‘Hijacks’ native scheduler• By interposing a profiler

– Exerts its own Interleaving Generation Control• Selective replay, Dynamic Instruction Rewriting

– TRIES HARD to generate only RELEVANT interleavings• Only replays around “non-determinism”

– Does ‘stateless’ (replay) verification• Restarts from MPI_Init for each new interleaving

Example : How ISP Effects Dynamic Verification

Page 24: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Somehow Instruments the Source / Binary– Through PMPI

• Runs the code under a verification scheduler

– ‘Hijacks’ native scheduler• By interposing a profiler

– Exerts its own Interleaving Generation Control• Selective replay, Dynamic Instruction Rewriting

– TRIES HARD to generate only RELEVANT interleavings• Only replays around “non-determinism”

– Does ‘stateless’ (replay) verification• Restarts from MPI_Init for each new interleaving

Example : How ISP Effects Dynamic Verification

Page 25: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Somehow Instruments the Source / Binary– Through PMPI at source level

• Runs the code under a verification scheduler

– ‘Hijacks’ native scheduler• By interposing a profiler

– Exerts its own Interleaving Generation Control• Selective replay, Dynamic Instruction Rewriting

– TRIES HARD to generate only RELEVANT interleavings• Only replays around “non-determinism”

– Does ‘stateless’ (replay) verification• Restarts from MPI_Init for each new interleaving

Example : How ISP Effects Dynamic Verification

Page 26: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Somehow Instruments the Source / Binary– Through PMPI

• Runs the code under a verification scheduler

– ‘Hijacks’ native scheduler• By interposing a profiler

– Exerts its own Interleaving Generation Control• Selective replay, Dynamic Instruction Rewriting

– TRIES HARD to generate only RELEVANT interleavings• Only replays around “non-determinism”

– Does ‘stateless’ (replay) verification• Restarts from MPI_Init for each new interleaving

Example : How ISP Effects Dynamic Verification

Page 27: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Somehow Instruments the Source / Binary– Through PMPI

• Runs the code under a verification scheduler

– ‘Hijacks’ MPI Function Calls• By interposing a profiler

– Exerts its own Interleaving Generation Control• Selective replay, Dynamic Instruction Rewriting

– TRIES HARD to generate only RELEVANT interleavings• Only replays around “non-determinism”

– Does ‘stateless’ (replay) verification• Restarts from MPI_Init for each new interleaving

Example : How ISP Effects Dynamic Verification

Page 28: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Somehow Instruments the Source / Binary– Through PMPI

• Runs the code under a verification scheduler

– ‘Hijacks’ MPI Function Calls• By interposing a profiler

– Exerts its own Interleaving Generation Control• Selective replay, Dynamic Instruction Rewriting

– TRIES HARD to generate only RELEVANT interleavings• Only replays around “non-determinism”

– Does ‘stateless’ (replay) verification• Restarts from MPI_Init for each new interleaving

Example : How ISP Effects Dynamic Verification

Page 29: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Somehow Instruments the Source / Binary– Through PMPI

• Runs the code under a verification scheduler

– ‘Hijacks’ MPI Function Calls• By interposing a profiler

– Exerts its own Interleaving Generation Control• Selective replay, Dynamic Instruction Rewriting

– TRIES HARD to generate only RELEVANT interleavings• Only replays around “non-determinism”

– Does ‘stateless’ (replay) verification• Restarts from MPI_Init for each new interleaving

Example : How ISP Effects Dynamic Verification

Page 30: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Somehow Instruments the Source / Binary– Through PMPI

• Runs the code under a verification scheduler

– ‘Hijacks’ MPI Function Calls• By interposing a profiler

– Exerts its own Interleaving Generation Control• Selective replay, Dynamic Instruction Rewriting

– TRIES HARD to generate only RELEVANT interleavings• Only replays around “non-determinism”

– Does ‘stateless’ (replay) verification• Restarts from MPI_Init for each new interleaving

Example : How ISP Effects Dynamic Verification

Page 31: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Somehow Instruments the Source / Binary– Through PMPI

• Runs the code under a verification scheduler

– ‘Hijacks’ MPI Function Calls• By interposing a profiler

– Exerts its own Interleaving Generation Control• Selective replay, Dynamic Instruction Rewriting

– TRIES HARD to generate only RELEVANT interleavings• Only replays around “non-determinism”

– Does ‘stateless’ (replay) verification• Restarts from MPI_Init for each new interleaving

Example : How ISP Effects Dynamic Verification

Page 32: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Somehow Instruments the Source / Binary– Through PMPI

• Runs the code under a verification scheduler

– ‘Hijacks’ MPI Function Calls• By interposing a profiler

– Exerts its own Interleaving Generation Control• Selective replay, Dynamic Instruction Rewriting

– TRIES HARD to generate only RELEVANT interleavings• Only replays around “non-determinism”

– Does ‘stateless’ (replay) verification• Restarts from MPI_Init for each new interleaving

Example : How ISP Effects Dynamic Verification

Page 33: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Somehow Instruments the Source / Binary– Through PMPI

• Runs the code under a verification scheduler

– ‘Hijacks’ MPI Function Calls• By interposing a profiler

– Exerts its own Interleaving Generation Control• Selective replay, Dynamic Instruction Rewriting

– TRIES HARD to generate only RELEVANT interleavings• Only replays around “non-determinism”

– Does ‘stateless’ (replay) verification• Restarts from MPI_Init for each new interleaving

Example : How ISP Effects Dynamic Verification

Page 34: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• Somehow Instruments the Source / Binary– Through PMPI

• Runs the code under a verification scheduler

– ‘Hijacks’ MPI Function Calls• By interposing a profiler

– Exerts its own Interleaving Generation Control• Selective replay, Dynamic Instruction Rewriting

– TRIES HARD to generate only RELEVANT interleavings• Only replays around “non-determinism”

– Does ‘stateless’ (replay) verification• Restarts from MPI_Init for each new interleaving

Example : How ISP Effects Dynamic Verification

Page 35: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

L0

U0

L1

L2

U1

U2

L0

U0

L2

U2

L1

U1

35

Sketch of Stateless / Replay Verification

Red, Green, and Blue movesBelong to different processes

Dotted arrow shows someDependency(e.g., runtime non-determinism)

Start systemIn Initial State

Page 36: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

Exponential number of TOTAL Interleavings – most are EQUIVALENT – generate only RELEVANT ones !!

36

P0 P1 P2 P3 P4

TOTAL > 10 Billion Interleavings !!

Page 37: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

Exponential number of TOTAL Interleavings – most are EQUIVALENT – generate only RELEVANT ones !!

37

P0 P1 P2 P3 P4

A B1

These are the only dependent actionsE.g. One ANY-SOURCE (wildcard) receiveAnd two of its MATCHING SENDS

Point-to-point actions can be issued in ANY order

TOTAL > 10 Billion Interleavings !!

B2

A

B2B1

Page 38: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

Exponential number of TOTAL Interleavings – most are EQUIVALENT – generate only RELEVANT ones !!

38

P0 P1 P2 P3 P4

A B1

These are the only dependent actionsE.g. One ANY-SOURCE (wildcard) receiveAnd two of its MATCHING SENDS

Point-to-point actions can be issued in ANY order

Only TWO RELEVANT

Interleavings !

TOTAL > 10 Billion Interleavings !!

B2

A

B2B1

Page 39: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

Executable

Proc1

Proc2

……Procn

Scheduler that generates ALL

RELEVANT schedules

(one per partial order)

Run

MPI Runtime

39

MPI Program

Interposition Layer

Workflow of ISP

Page 40: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

40

P0 P1 P2

Barrier

Isend(1, req)

Wait(req)

Scheduler

Irecv(*, req)

Barrier

Recv(2)

Wait(req)

Isend(1, req)

Wait(req)

Barrier

Isend(1)

sendNext Barrier

MPI Runtime

Hijack Calls, Generate Relevant Interleavings

Page 41: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

P0 P1 P2

Barrier

Isend(1, req)

Wait(req)

Scheduler

Irecv(*, req)

Barrier

Recv(2)

Wait(req)

Isend(1, req)

Wait(req)

Barrier

Isend(1)

sendNextBarrier

Irecv(*)

Barrier

41

MPI Runtime

Hijack Calls, Generate Relevant Interleavings

Page 42: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

P0 P1 P2

Barrier

Isend(1, req)

Wait(req)

Scheduler

Irecv(*, req)

Barrier

Recv(2)

Wait(req)

Isend(1, req)

Wait(req)

Barrier

Isend(1)

Barrier

Irecv(*)

Barrier

Barrier

Barrier

Barrier

Barrier

42

MPI Runtime

Hijack Calls, Generate Relevant Interleavings

Page 43: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

P0 P1 P2

Barrier

Isend(1, req)

Wait(req)

MPI Runtime

Scheduler

Irecv(*, req)

Barrier

Recv(2)

Wait(req)

Isend(1, req)

Wait(req)

Barrier

Isend(1)

Barrier

Irecv(*)

Barrier

Barrier

Wait (req)

Recv(2)

Isend(1)

SendNext

Wait (req)

Irecv(2)Isend

Wait

No Match-Set

43

Deadlock!

Hijack Calls, Generate Relevant Interleavings

Page 44: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• lucky.c has a deadlock that shows upon testing

• unlucky.c does not reveal a deadlock upon testing

• Testing is done using mpicc ; mpirun

• Verification is done using ispcc ; isp

Let us see ISP in action on ‘lucky.c’ and ‘unlucky.c’

Page 45: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

Process P0

R(from:*, r1) ;

R(from:2, r2);

S(to:2, r3);

R(from:*, r4);

All the Ws…

Process P1

Sleep(3);

S(to:0, r1);

All the Ws…

Process P2

//Sleep(3);

S(to:0, r1);

R(from:0, r2);

S(to:0, r3);

All the Ws…

45

Example MPI program ‘lucky.c’ (lucky for tester)

Page 46: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

Process P0

R(from:*, r1) ;

R(from:2, r2);

S(to:2, r3);

R(from:*, r4);

All the Ws…

Process P1

// Sleep(3);

S(to:0, r1);

All the Ws…

Process P2

Sleep(3);

S(to:0, r1);

R(from:0, r2);

S(to:0, r3);

All the Ws…

46

MPI program ‘unlucky.c’

Page 47: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

Runs of lucky.c and unlucky.c on mpich using “standard testing” (“lucky” for tester)

47

mpicc lucky.c -o lucky.outmpirun -np 3 ./lucky.out(0) is alive on ganesh-desktop(1) is alive on ganesh-desktop(2) is alive on ganesh-desktopRank 0 did IrecvRank 2 did SendSleep overRank 1 did Send

[.. hang ..]

mpicc unlucky.c -o unlucky.outmpirun -np 3 ./unlucky.out(0) is alive on ganesh-desktop(2) is alive on ganesh-desktop(1) is alive on ganesh-desktopRank 0 did IrecvRank 1 did SendRank 0 got 11Sleep overRank 2 did Send(2) Finished normally(1) Finished normally(0) Finished normally

[.. OK ..]

Page 48: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

Runs of lucky.c and unlucky.c on mpich using “standard testing” (“lucky” for tester)

48

mpicc lucky.c -o lucky.outmpirun -np 3 ./lucky.out(0) is alive on ganesh-desktop(1) is alive on ganesh-desktop(2) is alive on ganesh-desktopRank 0 did IrecvRank 2 did SendSleep overRank 1 did Send

[.. hang ..]

mpicc unlucky.c -o unlucky.outmpirun -np 3 ./unlucky.out(0) is alive on ganesh-desktop(2) is alive on ganesh-desktop(1) is alive on ganesh-desktopRank 0 did IrecvRank 1 did SendRank 0 got 11Sleep overRank 2 did Send(2) Finished normally(1) Finished normally(0) Finished normally

[.. OK ..]

ispcc ; isp will detect deadlock in both cases !!

Page 49: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

• With ISP at hand, WE ARE LUCKY IN BOTH CASES

• Not just ‘feeling lucky’ !!

• COMMANDS RUN :

• Ispcc lucky.c [ later try unlucky.c ]

• Isp -n 3 -log /tmp/log1 ./a.out

• ispUI /tmp/log1

Commands to verify lucky.c or unlucky.c

Page 50: Practical Formal Verification of MPI and Thread Programs Sarvani Vakkalanka Anh Vo* Michael DeLisi Sriram Aananthakrishnan Alan Humphrey Christopher Derrick.

End of A

50