Protocol-based Verification of Message-passing Parallel Programs - - PowerPoint PPT Presentation

protocol based verification of message passing parallel
SMART_READER_LITE
LIVE PREVIEW

Protocol-based Verification of Message-passing Parallel Programs - - PowerPoint PPT Presentation

t i f a r c A t * C o m * p l * t e n t e A e t * A s i W s E n L e o l C l S C D P * o * c O e s u u m E O e R e n v o t t d e * y s * a a E d l u e a t Protocol-based


slide-1
SLIDE 1

C

  • n

s i s t e n t * C

  • m

p l e t e * W e l l D

  • c

u m e n t e d * E a s y t

  • R

e u s e *

*

E v a l u a t e d

* O O P S L A *

A r t i f a c t

* A E C

Protocol-based Verification of Message-passing Parallel Programs

Hugo A. L´

  • pez, Eduardo R. B. Marques, Francisco Martins,

C´ esar Santos, Vasco T. Vasconcelos Nicholas Ng, Nobuko Yoshida

University of Lisbon Imperial College London Technical University of Denmark

Advances in Programming Languages and Systems Frankfurt, December 16, 2015

C
  • n
s i s t e n t * C
  • m
p l e t e * W e l l D
  • c
u m e n t e d * E a s y t
  • R
e u s e *

*

E v a l u a t e d

* O O P S L A *

A r t i f a c t

* A E C

slide-2
SLIDE 2

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Motivation

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-3
SLIDE 3

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

High-performance parallel computing

  • Getting parallel programs right is not easy
  • Testing is expensive
  • We can speedup development, producing safer and cheaper

solutions

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-4
SLIDE 4

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Finite differences algorithm

Input data at rank 0

Scatter data for each participant Each participant computes its finite differences Send/recv boundary values to determine convergence Perform global reduction (AllReduce) to compute the max error; Loop if convergence criterion not met, up until to MAX_ITER Gather the solution data at rank 0, if there was convergence.

(0) (0) (1) (2) (0) (1) (2) (0) (2) (0)

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-5
SLIDE 5

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Is this program communication safe? Deadlock free?

MPI Init (&argc ,& argv ) ; . . . for ( i t e r = 1; i ≤ NUM ITER ; i t e r ++) { i f ( rank == 0) { MPI Send(& l o c a l [ 1 ] , 1 , MPI FLOAT , l e f t , . . . ) ; MPI Send(& l o c a l [ n/ s i z e ] , 1 , MPI FLOAT , r i g h t , . . . ) ; MPI Recv(& l o c a l [ n/ s i z e +1] ,1 ,MPI FLOAT , r i g h t , . . . ) ; MPI Recv(& l o c a l [ 0 ] , 1 , MPI FLOAT , l e f t , . . . ) ; } e l s e i f ( rank == s i z e − 1) { MPI Recv(& l o c a l [ n/ s i z e +1] ,2 ,MPI FLOAT , r i g h t , . . . ) ; MPI Send(& l o c a l [ 1 ] , 1 , MPI FLOAT , l e f t , . . . ) ; MPI Recv(& l o c a l [ 0 ] , 1 , MPI FLOAT , l e f t , . . . ) ; MPI Send(& l o c a l [ n/ s i z e ] , 1 , MPI FLOAT , r i g h t , . . . ) ; } e l s e { MPI Recv(& l o c a l [ 0 ] , 1 , MPI INT , l e f t , . . . ) ; MPI Send(& l o c a l [ 1 ] , 1 , MPI FLOAT , l e f t , . . . ) ; MPI Send(& l o c a l [ n/ s i z e ] , 1 , MPI FLOAT , r i g h t , . . . ) ; MPI Recv(& l o c a l [ n/ s i z e +1] ,1 ,MPI FLOAT , r i g h t , . . . ) ; } } . . . MPI Finalize () ;

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-6
SLIDE 6

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Array length mismatch

MPI Init (&argc ,& argv ) ; . . . for ( i t e r = 1; i ≤ NUM ITER ; i t e r ++) { i f ( rank == 0) { MPI Send(& l o c a l [ 1 ] , 1 , MPI FLOAT , l e f t , . . . ) ; MPI Send(& l o c a l [ n/ s i z e ] , 1 , MPI FLOAT , r i g h t , . . . ) ; MPI Recv(& l o c a l [ n/ s i z e +1] ,1 ,MPI FLOAT , r i g h t , . . . ) ; MPI Recv(& l o c a l [ 0 ] , 1 , MPI FLOAT , l e f t , . . . ) ; } e l s e i f ( rank == s i z e − 1) { MPI Recv(& l o c a l [ n/ s i z e +1] ,2 ,MPI FLOAT , r i g h t , . . . ) ; MPI Send(& l o c a l [ 1 ] , 1 , MPI FLOAT , l e f t , . . . ) ; MPI Recv(& l o c a l [ 0 ] , 1 , MPI FLOAT , l e f t , . . . ) ; MPI Send(& l o c a l [ n/ s i z e ] , 1 , MPI FLOAT , r i g h t , . . . ) ; } e l s e { MPI Recv(& l o c a l [ 0 ] , 1 , MPI INT , l e f t , . . . ) ; MPI Send(& l o c a l [ 1 ] , 1 , MPI FLOAT , l e f t , . . . ) ; MPI Send(& l o c a l [ n/ s i z e ] , 1 , MPI FLOAT , r i g h t , . . . ) ; MPI Recv(& l o c a l [ n/ s i z e +1] ,1 ,MPI FLOAT , r i g h t , . . . ) ; } } . . . MPI Finalize () ;

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-7
SLIDE 7

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Type mismatch

MPI Init (&argc ,& argv ) ; . . . for ( i t e r = 1; i ≤ NUM ITER ; i t e r ++) { i f ( rank == 0) { MPI Send(& l o c a l [ 1 ] , 1 , MPI FLOAT , l e f t , . . . ) ; MPI Send(& l o c a l [ n/ s i z e ] , 1 , MPI FLOAT , r i g h t , . . . ) ; MPI Recv(& l o c a l [ n/ s i z e +1] ,1 ,MPI FLOAT , r i g h t , . . . ) ; MPI Recv(& l o c a l [ 0 ] , 1 , MPI FLOAT , l e f t , . . . ) ; } e l s e i f ( rank == s i z e − 1) { MPI Recv(& l o c a l [ n/ s i z e +1] ,2 ,MPI FLOAT , r i g h t , . . . ) ; MPI Send(& l o c a l [ 1 ] , 1 , MPI FLOAT , l e f t , . . . ) ; MPI Recv(& l o c a l [ 0 ] , 1 , MPI FLOAT , l e f t , . . . ) ; MPI Send(& l o c a l [ n/ s i z e ] , 1 , MPI FLOAT , r i g h t , . . . ) ; } e l s e { MPI Recv(& l o c a l [ 0 ] , 1 , MPI INT , l e f t , . . . ) ; MPI Send(& l o c a l [ 1 ] , 1 , MPI FLOAT , l e f t , . . . ) ; MPI Send(& l o c a l [ n/ s i z e ] , 1 , MPI FLOAT , r i g h t , . . . ) ; MPI Recv(& l o c a l [ n/ s i z e +1] ,1 ,MPI FLOAT , r i g h t , . . . ) ; } } . . . MPI Finalize () ;

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-8
SLIDE 8

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Deadlock: wrong send/receive order

MPI Init (&argc ,& argv ) ; . . . for ( i t e r = 1; i ≤ NUM ITER ; i t e r ++) { i f ( rank == 0) { MPI Send(& l o c a l [ 1 ] , 1 , MPI FLOAT , l e f t , . . . ) ; MPI Send(& l o c a l [ n/ s i z e ] , 1 , MPI FLOAT , r i g h t , . . . ) ; MPI Recv(& l o c a l [ n/ s i z e +1] ,1 ,MPI FLOAT , r i g h t , . . . ) ; MPI Recv(& l o c a l [ 0 ] , 1 , MPI FLOAT , l e f t , . . . ) ; } e l s e i f ( rank == s i z e − 1) { MPI Recv(& l o c a l [ n/ s i z e +1] ,2 ,MPI FLOAT , r i g h t , . . . ) ; MPI Send(& l o c a l [ 1 ] , 1 , MPI FLOAT , l e f t , . . . ) ; MPI Recv(& l o c a l [ 0 ] , 1 , MPI FLOAT , l e f t , . . . ) ; MPI Send(& l o c a l [ n/ s i z e ] , 1 , MPI FLOAT , r i g h t , . . . ) ; } e l s e { MPI Recv(& l o c a l [ 0 ] , 1 , MPI INT , l e f t , . . . ) ; MPI Send(& l o c a l [ 1 ] , 1 , MPI FLOAT , l e f t , . . . ) ; MPI Send(& l o c a l [ n/ s i z e ] , 1 , MPI FLOAT , r i g h t , . . . ) ; MPI Recv(& l o c a l [ n/ s i z e +1] ,1 ,MPI FLOAT , r i g h t , . . . ) ; } } . . . MPI Finalize () ;

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-9
SLIDE 9

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Deadlock: a send operation is missing

MPI Init (&argc ,& argv ) ; . . . for ( i t e r = 1; i ≤ NUM ITER ; i t e r ++) { i f ( rank == 0) { MPI Send(& l o c a l [ 1 ] , 1 , MPI FLOAT , l e f t , . . . ) ; MPI Send(& l o c a l [ n/ s i z e ] , 1 , MPI FLOAT , r i g h t , . . . ) ; MPI Recv(& l o c a l [ n/ s i z e +1] ,1 ,MPI FLOAT , r i g h t , . . . ) ; MPI Recv(& l o c a l [ 0 ] , 1 , MPI FLOAT , l e f t , . . . ) ; } e l s e i f ( rank == s i z e − 1) { MPI Recv(& l o c a l [ n/ s i z e +1] ,2 ,MPI FLOAT , r i g h t , . . . ) ; MPI Send(& l o c a l [ 1 ] , 1 , MPI FLOAT , l e f t , . . . ) ; MPI Recv(& l o c a l [ 0 ] , 1 , MPI FLOAT , l e f t , . . . ) ; MPI Send(& l o c a l [ n/ s i z e ] , 1 , MPI FLOAT , r i g h t , . . . ) ; } e l s e { MPI Recv(& l o c a l [ 0 ] , 1 , MPI INT , l e f t , . . . ) ; MPI Send(& l o c a l [ 1 ] , 1 , MPI FLOAT , l e f t , . . . ) ; MPI Send(& l o c a l [ n/ s i z e ] , 1 , MPI FLOAT , r i g h t , . . . ) ; MPI Recv(& l o c a l [ n/ s i z e +1] ,1 ,MPI FLOAT , r i g h t , . . . ) ; } } . . . MPI Finalize () ;

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-10
SLIDE 10

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

State-of-the-art tools

  • Model checking and symbolic execution (e.g., TASS, CIVL)
  • Search space grows exponentially with the number of processes
  • Verification of real-world applications limits the number of

processes to less than a dozen

  • Runtime verification (e.g., ISP, MUST)
  • Cannot guarantee the absence of faults
  • Difficulty in producing meaningful test suites
  • Time to run the test suite
  • Tests need to be run on hardware similar to that of the

production environment

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-11
SLIDE 11

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Our approach

We attack the problem from a programming language angle:

  • propose a protocol (type) language suited for describing the

most common scenarios in the practice of parallel programming, and

  • statically check that programs conform to a given protocol,

thus

  • effectively guaranteeing the absence of deadlocks for

well-typed programs, regardless of the number of process involved

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-12
SLIDE 12

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Behavioural types

  • Behavioural types can improve the development of large scale

software systems

  • Appropriate for describing the interaction part of software

systems: modules, objects, message-passing, . . .

  • Narrate the details, the order, the choices, . . . , of the different

individual interactions

  • Talk about all partners in a computation

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-13
SLIDE 13

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Benefits

  • Provide for an abstract view of the global interaction of

applications’ components

  • Suitable to discuss the (communication) behaviour of

applications

  • Are by construction exempt from deadlocks

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-14
SLIDE 14

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

The types

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-15
SLIDE 15

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Types for individual processes

  • Values exchanged among processes influence the rest of the

protocol → dependent types

  • Type checking dependent types is undecidable in general
  • We use a restricted form of dependent types, where types

depend on objects of a separate domain (Xi&Pfenning, POPL’99)

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-16
SLIDE 16

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

The type for the finite differences algorithm

// problem dimension val n : {x : integer | x ≥ 0 && x % size =0}. // number of i t e r a t i o n s broadcast 1 numIter : integer . // d i s t r i b u t e input array scatter 1 {a : f l o a t [ ] | len ( a ) ∗ size=n }; f o r a l l k ≤ numIter . f o r a l l i ≤ size . // message to r i g h t neighbour message i ( i % size +1) f l o a t ; // message to l e f t neighbour message i (( i −2+size ) % size +1) f l o a t ; reduce 1; // gather the s o l u t i o n gather 1 {b : f l o a t [ ] | len (b) ∗ size=n}

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-17
SLIDE 17

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Type equivalence

  • Central to dependent type systems
  • Caters for the semantics of primitive recursion:

Γ ⊢ i < 1 true (. . . ) Γ ⊢ foreach x ≤ i.T ≡ skip Γ ⊢ i ≥ 1 true (. . . ) Γ ⊢ foreach x ≤ i.T ≡ (T{i/x}; foreach x ≤ i − 1.T)

  • Projects types into ranks:

Γ ⊢ i1, i2 = rank true (. . . ) Γ ⊢ message i1 i2 D ≡ skip

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-18
SLIDE 18

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Type equivalence in action

size: {x : int | x = 3}, rank: {y : int | y = 1} ⊢ foreach j ≤ size. msg j (j%size + 1); msg j ((j − 2 + size)%size + 1)

msg 3 1; msg 3 2; msg 2 3; msg 2 1; msg 1 2; msg 1 3; skip

msg 3 1; skip; skip; msg 2 1; msg 1 2; msg 1 3; skip

msg 3 1; msg 2 1; msg 1 2; msg 1 3

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-19
SLIDE 19

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Program types

  • Process types describe individual processes
  • Program types
  • describe programs (vectors of processes)
  • are vector of types; one type per process
  • all types in the vector are equivalent; the only program type

formation rule: size = n, rank = k ⊢ Tk ≡ T : type

(1 ≤ k ≤ n) T1, . . . , Tn : ptype

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-20
SLIDE 20

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Examples of non program types

(msg 1 2), (msg 2 1) (scatter 1), (reduce 1) (msg 1 3; scatter 1), (msg 1 3; reduce 1), (msg 1 3; scatter 1) (msg 3 1; msg 1 2), (msg 1 2; msg 2 3), (msg 2 3; msg 3 1) All these types are either deadlocked or lead to a deadlock

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-21
SLIDE 21

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

The programs

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-22
SLIDE 22

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Our programming language

  • A small imperative while-language equipped with

communication primitives

  • Processes are store-expression pairs
  • Programs are vectors of processes
  • Main judgement: P is a program (behaving as program type

S) P : S

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-23
SLIDE 23

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Main results

Theorem (Agreement for reduction; cf. subject reduction)

If P1 → P2 then P1 : S1 and P2 : S2

Theorem (Progress for programs)

If P1 : S then P1 halted or P1 → P2 A program his halted when all its processes are halted.

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-24
SLIDE 24

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Deductive verification of C+MPI code

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-25
SLIDE 25

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Message Passing Interface

  • For programs written in C or Fortran
  • The MPI 3.0 specification is 822 pages long written in good
  • ld english
  • There are hundreds of MPI primitives
  • Includes a multitude of concepts: synchronous vs.

asynchronous, immediate vs. blocking, direct vs. broadcast vs.

  • ne-sided communication, message tags, communicators,

reception from any source of messages with any tag, . . .

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-26
SLIDE 26

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Method to verify C+MPI source code against a protocol

1 Write a protocol for the program (the protocol serves as

further documentation for the program)

2 Convert it to VCC, a deductive software verifier for C 3 Introduce the required annotations in the C+MPI source

code, and

4 Use VCC to check conformance to the protocol

If VCC runs successfully, then the program is guaranteed to follow the protocol and to be exempt from deadlocks, regardless of the number of processes, problem dimension, number of iterations, or any other parameters.

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-27
SLIDE 27

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Verification Flow

1 The contract for MPI Init initializes a ghost variable p with the

protocol the program must follow

2 Contracts for MPI communication primitives match p against

source code, while advancing p

3 Each occurrence of a C control structure that is related to the

protocol is checked against p, relying on adequate annotations

4 The contract for MPI Finalize asserts that p is be equivalent to

skip

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-28
SLIDE 28

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Evaluation

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-29
SLIDE 29

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Tools under test

We performed a comparative analysis of ParTypes against state-of-the-art MPI verifiers with similar safety guarantees TASS A model checker which uses symbolic execution ISP A dynamic verifier that employs dynamic partial order reduction to select the relevant process schedules MUST A dynamic verifier that employs a graph-based deadlock detection approach

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-30
SLIDE 30

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Benchmark suite

  • Programs taken from text books (e.g., I. Foster; P. Pacheco)

and from the FEVS suite

  • The analysis include
  • 1-D heat diffusion simulation
  • finite differences
  • N-body simulation
  • parallel Jacobi equation solver
  • parallel dot product
  • pi approximation

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-31
SLIDE 31

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Results for the experiments varying the number of processes (log scale)

2 4 8 16 32

Number of parallel processes

2−3 2−2 2−1 20 21 22 23 24 25 26 27 28

Time (s) Diffusion1D

2 4 8 16 32

Number of parallel processes

2−2 20 22 24 26 28 210 212 214

Time (s) ParallelJacobi

2 4 8 16 32

Number of parallel processes

2−1 20 21 22 23 24 25 26 27 28 29

Time (s) FDiff

2 4 8 16 32

Number of parallel processes

2−1 20 21 22 23 24 25 26 27 28 29

Time (s) ParallelDot ParTypes TASS ISP MUST

2 4 8 16 32

Number of parallel processes

2−3 2−2 2−1 20 21 22 23 24 25 26 27 28

Time (s) NbodySimulation

2 4 8 16 32

Number of parallel processes

2−3 2−2 2−1 20 21 22 23 24 25 26

Time (s) Pi

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-32
SLIDE 32

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Results for the experiments varying the number of loop iterations (log scale)

03 4 5 6 7 8

Number of iterations (2x for ISP ,TASS; 4x for MUST)

2−1 20 21 22 23 24 25 26 27 28

Time (s) Diffusion1D

03 4 5 6 7 8

Number of iterations (2x for ISP ,TASS; 4x for MUST)

2−1 21 23 25 27 29 211 213

Time (s) ParallelJacobi

03 4 5 6 7 8

Number of iterations (2x for ISP ,TASS; 4x for MUST)

2−2 2−1 20 21 22 23 24 25 26 27 28 29

Time (s) FDiff

03 4 5 6 7 8

Number of iterations (2x for ISP ,TASS; 4x for MUST)

2−2 2−1 20 21 22 23 24 25 26 27 28 29

Time (s) ParallelDot ParTypes TASS ISP MUST

03 4 5 6 7 8

Number of iterations (2x for ISP ,TASS; 4x for MUST)

2−2 2−1 20 21 22 23 24 25 26 27 28

Time (s) NbodySimulation

03 4 5 6 7 8

Number of iterations (2x for ISP ,TASS; 4x for MUST)

2−1 20 21 22 23 24 25 26

Time (s) Pi

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-33
SLIDE 33

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Conclusion

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-34
SLIDE 34

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Conclusion

  • We presented a type-based methodology for checking

message-passing parallel programs

  • By checking that a program follows a given protocol, we

guarantee a set of safety properties for the program, in particular that it does not run into deadlocks

  • In contrast to other state-of-the-art approaches that suffer

from scalability issues, our approach is insensitive to parameters such as the number of processes, problem size, or the number of iterations of a program

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-35
SLIDE 35

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Future work

  • Address further MPI primitives, e.g., non-blocking operations

and wildcard receive (the ability to receive from any source)

  • Our VCC methodology is sound but not complete with respect

to the core programming language. Try accepting more programs

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-36
SLIDE 36

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Google “partypes”

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos

slide-37
SLIDE 37

Motivation The types The programs Deductive verification of C+MPI code Evaluation Conclusion

Try it online at http://gloss.di.fc.ul.pt/tryit/ParTypes

Protocol-based Verification of Message-passing Parallel Programs Vasco T. Vasconcelos