Armada: Low-Effort Verification of High-Performance Concurrent Programs
- Jay Lorch ,
- Yixuan Chen ,
- Manos Kapritsos ,
- Bryan Parno ,
- Shaz Qadeer ,
- Upamanyu Sharma ,
- James R. Wilcox ,
- Xueyuan Zhao
International Conference on Programming Language Design and Implementation (PLDI) |
Published by ACM
Related File | Related File | Related File | Presentation (ppt)
Distinguished Paper Award
Download BibTexSafely writing high-performance concurrent programs is notoriously difficult. To aid developers, we introduce Armada, a language and tool designed to formally verify such programs with relatively little effort. Via a C-like language and a small-step, state-machine-based semantics, Armada gives developers the flexibility to choose arbitrary memory layout and synchronization primitives so they are never constrained in their pursuit of performance. To reduce developer effort, Armada leverages SMT-powered automation and a library of powerful reasoning techniques, including rely-guarantee, TSO elimination, reduction, and alias analysis. All these techniques are proven sound, and Armada can be soundly extended with additional strategies over time. Using Armada, we verify four concurrent case studies and show that we can achieve performance equivalent to that of unverified code.
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from permissions@acm.org. PLDI ’20, June 15-20, 2020, London, UK © 2020 Copyright held by the owner/author(s). Publication rights licensed to ACM.