1) Overview of the UV Group 2) Gauss: A Framework for Verifying Scientific Computing Software 3) Random things (perhaps more useful than 1 or 2) presented by Ganesh Gopalakrishnan at the 2 nd annual Utah Regional Verification Workshop School of Computing, University of Utah, Salt Lake City, UT * Past work supported in part by SRC Contract , NSF Award and an equipment grant from Intel Corporation
1) Overview of the UV Group
3 People affiliated with the UV group: Recent alumni : Yue Yang (PhD, Microsoft), Ali Sezgin (PhD, Atilim, Turkey), Hemanthkumar Sivaraj (MS, Intel, Bangalore), Sudhindra Pandav (MS, Intel, Hillsboro) Updates on alumni: Ravi Hosabettu now at Juniper Networks, Robert Palmer going to Intel Hillsboro for a 6-month internship, Ritwik Bhattacharya (finishing up fast), (Ratan, Prosenjit, Mike, Annette still where they were.) New members: Yu Yang (Jason took the “e”), PhD Xiaofang Chen, PhD Steve Barrus (BS/MS) Geof Sawaya (BS) Eun Yong Kang (BS/MS) Igor Melatti (potential 6-month postdoc) Collaborations with faculty: Konrad Slind, Gary Lindstrom, Mike Kirby, John Regehr, Priyank Kalla, Chris Myers (during SRC meetings ) Industrial collaborators: Ching Tsun Chou and SeungJoon Park (Intel), Steven German (IBM)
4 Things we’ve dabbled in of late… … dir mem Distributed model-checking Verifying hierarchical cache coherence protocols (abstraction methods) SAT methods for shared memory consistency model conformance testing Verifying distributed memory programs (such as MPI) Verifying shared thread programs (e.g. Posix)
2) Gauss: A Framework for Verifying Scientific Computing Software
6 Environment Model Model Extractor MC Server MC Client … #include int main(int argc, char** argv){ int myid; int numprocs; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); MPI_Comm_rank(MPI_COMM_WORLD, &myid); if(myid == 0){ int i; for(i = 1; i < numprocs; ++i){ MPI_Send(&i, 1, MPI_INT, i, 0, MPI_COMM_WORLD); } printf("%d Value: %d\n", myid, myid); } else { int val; MPI_Status s; MPI_Recv(&val, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &s); printf("%d Value: %d\n", myid, val); } MPI_Finalize(); return 0; } MPI Program int y; active proctype T1(){ int x; x = 1; if :: x = 0; :: x = 2; fi; y = x; } active proctype T2(){ int x; x = 2; if :: y = x + 1; :: y = 0; fi; assert( y == 0 ); } Program Model CIL / MPICC MPI Binary Error Visualization & Simulation Result Analyzer OK proctype MPI_Send(chan out, int c){ out!c; } proctype MPI_Bsend(chan out, int c){ out!c; } proctype MPI_Isend(chan out, int c){ out!c; } typedef MPI_Status{ int MPI_SOURCE; int MPI_TAG; int MPI_ERROR; } … MPI Library Model + Zing Abstraction Refinement Gauss: A framework for verifying scientific computing software
3) Random things (perhaps more useful than 1 or 2)
8 Tools you can download from the UV page: Distributed BFS Murphi and Parallel Random-walk Murphi MPEC (MP Execution Checker – currently for Itanium) POeM (Partial Order enabled Murphi)
9 Recent “trends” seen / heard : Considerable emphasis on Requirements Engineering for embedded systems - Avrunin’s PROPEL Language (also “Lil-Jill”) for modeling and verifying workflow during blood transfusions - Modeling requirements for cardiac pacemakers and defibrillators (work sponsored by Guidant Inc. – Jeff Thompson - Minnesota) - Garlan’s model-driven architectures work (CMU) – connectors…. Nebraska / Kansas powerhouse on many things (Java slicer, Bogor, …) Hybrid / dynamical system verification - Bruce Kroge, Goran Frehse - precision “on demand” Testing! - Rance Cleveland and Scott Smolka’s “Reactis” company (test automation that saves 10x effort for auto companies…) Positions for PhDs still available (e.g. Intel)
10 “Cool papers” read recently A Survey of Recent Advances in SAT-based Formal Verification Prasad, Biere, Gupta Concrete Model Checking with Abstract Matching and Refinement Pasareanu, Pelanek, Visser
11 Education Resources Patrick Cousot’s notes on abstract interpretation (with code) from MIT Daniel Jackson’s “Alloy” Bogor Esterel / SCADE
12 Conclusion: Doing just one or two things would have been smarter (but *very* risky in today’s funding climate – hence forced to dip many fingers in many pies … not very conducive to obtaining really deep results…
3) Projects in “backburner”
14 Projects in “back-burner” : Conformance Testing based on Limited Observations Specification Validation Design Verification Testing for Fabrication Faults Post-Silicon Verification product Does functionality match designed behavior ? (conformance testing) Pre-manufacture Post-manufacture Spec
15 Post-Si Verification for Cache Protocol Execution Future CANNOT Assume there is a “front-side bus” CANNOT Record all link traffic CAN ONLY Generate sets of possible cache states HOW BEST can one match against designed behavior? cpu Invisible “miss” traffic Visible “miss” traffic
16 Back to our specific problem domain... Verify the operation of systems at runtime when we can’t see all transactions Could also be offline analysis of a partial log of activities a b x y c d a x c d y b …
17 Required Constraint-Solving Approaches Constraint Solving in the context of Coupled Reactive Processes a b c d e a b c d e a b c d e a b c d e Observed event Likely cause