🤖 AI Summary
This work proposes CoVer-Dynamic, a novel approach that unifies contract-based verification across both static and dynamic analysis for parallel programs—a first in the field. Existing verification tools are often restricted to a single parallel programming model and struggle with runtime dependencies such as pointer aliasing and indirect control flow, which static analysis alone cannot reliably resolve. CoVer-Dynamic extends the static verifier CoVer by reusing its contract language at runtime to support multiple parallel models, including MPI and OpenSHMEM. This integration substantially reduces false positives inherent in purely static methods and enhances the detection of genuine runtime errors. Empirical evaluation on standard benchmarks demonstrates that CoVer-Dynamic achieves, on average, a 2× speedup over the state-of-the-art tool MUST while uncovering additional real-world bugs.
📝 Abstract
Parallel programming in high-performance computing depends on low-level APIs such as MPI, requiring users to manage synchronization and resources manually. Several correctness checking tools exist to help bug-free code development, though most target a single programming model, limiting their applicability. Our previous work, the static analysis tool CoVer, leverages a contract-based approach enabling users to specify custom error-checking rules and support emerging or unconventional programming models without requiring extensive new tooling. However, static analysis cannot fully reason about runtime-dependent behavior such as pointer aliasing or indirect control flow. To address this, we present CoVer-Dynamic, a dynamic analysis extension that reuses CoVer's contract language to provide a unified static-dynamic verification framework. By enforcing the same contracts at runtime, CoVer-Dynamic improves classification accuracy and eliminates false positives on standardized MPI and OpenSHMEM benchmarks, while detecting errors beyond static analysis only. Our evaluation shows that CoVer-Dynamic consistently outperforms the state-of-the-art correctness checker MUST, averaging a 2x speedup. Finally, our results show limitations in the expressiveness of the contract language, motivating future work to support more error classes.