Stephen F. Siegel, Manchun Zheng, Ziqing Luo, Timothy K. Zirkel, Andre
V. Marianiello, John G. Edenhofner, Matthew B. Dwyer, Michael S.
Rogers, CIVL: The Concurrency Intermediate Verification Language. SC15:
International Conference for High Performance Computing, Networking,
Storage and Analysis, Austin TX, USA, Nov 15–20, 2015, pages
61:1-61:12.
There are many ways to express parallel
programs: message-passing libraries (MPI) and multithreading/GPU
language extensions such as OpenMP, Pthreads, and CUDA, are but a few.
This multitude creates a serious challenge for developers of software
verification tools: it takes enormous effort to develop such tools,
but each development effort typically targets one small part of the
concurrency landscape, with little sharing of techniques and code
among efforts. To address this problem, we present CIVL: the
Concurrency Intermediate Verification Language. CIVL provides a
general concurrency model capable of representing programs in a
variety of concurrency dialects, including those listed above. The
CIVL framework currently includes front-ends for the four dialects,
and a back-end verifier which uses model checking and symbolic
execution to check a number of properties, including the absence of
deadlocks, race conditions, assertion violations, illegal pointer
dereferences and arithmetic, memory leaks, divisions by zero, and
out-of- bound array indexing; it can also check that two programs are
functionally equivalent.
@Inproceedings{siegel-etal:2015:civl_sc,
author = {Stephen F.\ Siegel and Manchun Zheng and Ziqing Luo and
Timothy K.\ Zirkel and Andre V.\ Marianiello and John G.\ Edenhofner
and Matthew B.\ Dwyer and Michael S.\ Rogers},
title = {{CIVL}: The Concurrency Intermediate Verification Language},
booktitle = {SC15: International Conference for High Performance
Computing, Networking, Storage and Analysis, Proceedings},
series = {SC '15},
year = {2015},
month = {Nov},
publisher = {IEEE Press},
address = {Piscataway, NJ, USA},
pages = {61:1-61:12}
}