practical formal verification of mpi and thread...

50
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

Upload: others

Post on 07-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

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

Page 2: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  Assisted Problem Solving by Audience

14:00 to 15:00

Page 8: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  Overview of Dynamic Verification of Shared Memory Thread Programs

15:00 to 15:30

Page 9: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  Dynamic Verification of Thread Programs using Inspect •  Concluding Remarks

16:00 to 17:30

Page 10: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

Overview of Formal Verification methods

for Validating Concurrent Systems

About 30 minutes – by Ganesh

10

Page 11: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

11

Problem: Engineering Reliable Concurrent Systems

Page 12: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  Testing methods suffer from bug omissions

13X

BugOmissions

For many important reasons, we advocate Dynamic Formal Verification methods

Page 14: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

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

14X X

BugOmissions FalseAlarms

For many important reasons, we advocate Dynamic Formal Verification methods

Page 15: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

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

15X X X

BugOmissions FalseAlarms TediousModeling

For many important reasons, we advocate Dynamic Formal Verification methods

Page 16: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 √

BugOmissions FalseAlarms TediousModeling • Noomissions• Nofalsealarms• Noneedformodeling

For many important reasons, we advocate Dynamic Formal Verification methods

Page 17: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

Codewri9enusingmaturelibraries(MPI,OpenMP,PThreads,…)

APIcallsmadefromrealprogramminglanguages

(C,Fortran,C++)

RunMmesemanMcsdeterminedbyrealisMccompilersandrunMmes

DynamicVerifica-onMethodsaregoingtobeveryimportantforrealengineers!

(sta-canalysisandmodelbasedverifica-oncanplayimportantsuppor-veroles)

17

Growing Importance of Dynamic Verification

Page 18: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

–  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

L0

U0

L1

L2

U1

U2

L0

U0

L2

U2

L1

U1

35

Sketch of Stateless / Replay Verification

Red,Green,andBluemovesBelongtodifferentprocesses

Do9edarrowshowssomeDependency(e.g.,runMmenon‐determinism)

StartsystemInIniMalState

Page 36: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

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

36

P0P1P2P3P4TOTAL>10BillionInterleavings!!

Page 37: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

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

37

P0P1P2P3P4

A B1

ThesearetheonlydependentacMonsE.g.OneANY‐SOURCE(wildcard)receiveAndtwoofitsMATCHINGSENDS

Point‐to‐pointacMonscanbeissuedinANYorder

TOTAL>10BillionInterleavings!!

B2

A

B2B1

Page 38: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

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

38

P0P1P2P3P4

A B1

ThesearetheonlydependentacMonsE.g.OneANY‐SOURCE(wildcard)receiveAndtwoofitsMATCHINGSENDS

Point‐to‐pointacMonscanbeissuedinANYorder

OnlyTWORELEVANT

Interleavings!

TOTAL>10BillionInterleavings!!

B2

A

B2B1

Page 39: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

Executable

Proc1Proc2……Procn

SchedulerthatgeneratesALLRELEVANTschedules

(oneperparMalorder)

Run

MPIRunMme

39

MPIProgram

InterposiMonLayer

Workflow of ISP

Page 40: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

40

P0P1P2

Barrier

Isend(1,req)

Wait(req)

Scheduler

Irecv(*,req)

Barrier

Recv(2)

Wait(req)

Isend(1,req)

Wait(req)

Barrier

Isend(1)

sendNext Barrier

MPIRunMme

Hijack Calls, Generate Relevant Interleavings

Page 41: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

P0P1P2

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

MPIRunMme

Hijack Calls, Generate Relevant Interleavings

Page 42: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

P0P1P2

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

MPIRunMme

Hijack Calls, Generate Relevant Interleavings

Page 43: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

P0P1P2

Barrier

Isend(1,req)

Wait(req)

MPIRunMme

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

NoMatch‐Set

43

Deadlock!

Hijack Calls, Generate Relevant Interleavings

Page 44: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

ProcessP0

R(from:*,r1);

R(from:2,r2);

S(to:2,r3);

R(from:*,r4);

AlltheWs…

ProcessP1

Sleep(3);

S(to:0,r1);

AlltheWs…

ProcessP2

//Sleep(3);

S(to:0,r1);

R(from:0,r2);

S(to:0,r3);

AlltheWs…

45

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

Page 46: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

ProcessP0

R(from:*,r1);

R(from:2,r2);

S(to:2,r3);

R(from:*,r4);

AlltheWs…

ProcessP1

//Sleep(3);

S(to:0,r1);

AlltheWs…

ProcessP2

Sleep(3);

S(to:0,r1);

R(from:0,r2);

S(to:0,r3);

AlltheWs…

46

MPI program ‘unlucky.c’

Page 47: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

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

47

mpicclucky.c‐olucky.outmpirun‐np3./lucky.out(0)isaliveonganesh‐desktop(1)isaliveonganesh‐desktop(2)isaliveonganesh‐desktopRank0didIrecvRank2didSendSleepoverRank1didSend

[..hang..]

mpiccunlucky.c‐ounlucky.outmpirun‐np3./unlucky.out(0)isaliveonganesh‐desktop(2)isaliveonganesh‐desktop(1)isaliveonganesh‐desktopRank0didIrecvRank1didSendRank0got11SleepoverRank2didSend(2)Finishednormally(1)Finishednormally(0)Finishednormally

[..OK..]

Page 48: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

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

48

mpicclucky.c‐olucky.outmpirun‐np3./lucky.out(0)isaliveonganesh‐desktop(1)isaliveonganesh‐desktop(2)isaliveonganesh‐desktopRank0didIrecvRank2didSendSleepoverRank1didSend

[..hang..]

mpiccunlucky.c‐ounlucky.outmpirun‐np3./unlucky.out(0)isaliveonganesh‐desktop(2)isaliveonganesh‐desktop(1)isaliveonganesh‐desktopRank0didIrecvRank1didSendRank0got11SleepoverRank2didSend(2)Finishednormally(1)Finishednormally(0)Finishednormally

[..OK..]

ispcc;ispwilldetectdeadlockinbothcases!!

Page 49: Practical Formal Verification of MPI and Thread Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

•  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 Programsformalverification.cs.utah.edu/ISP-Tutorial/A-Overview... · 2019-01-15 · Practical Formal Verification of MPI and Thread

End of A

50