Veracity: declarative multicore programming with commutativity
Adam Chen, Parisa Fathololumi, Eric Koskinen, Jared Pincus
摘要
There is an ongoing effort to provide programming abstractions that ease the burden of exploiting multicore hardware. Many programming abstractions ( e.g. , concurrent objects, transactional memory, etc.) simplify matters, but still involve intricate engineering. We argue that some difficulty of multicore programming can be meliorated through a declarative programming style in which programmers directly express the independence of fragments of sequential programs. In our proposed paradigm, programmers write programs in a familiar, sequential manner, with the added ability to explicitly express the conditions under which code fragments sequentially commute. Putting such commutativity conditions into source code offers a new entry point for a compiler to exploit the known connection between commutativity and parallelism. We give a semantics for the programmer’s sequential perspective and, under a correctness condition, find that a compiler-transformed parallel execution is equivalent to the sequential semantics. Serializability/linearizability are not the right fit for this condition, so we introduce scoped serializability and show how it can be enforced with lock synthesis techniques. We next describe a technique for automatically verifying and synthesizing commute conditions via a new reduction from our commute blocks to logical specifications, upon which symbolic commutativity reasoning can be performed. We implemented our work in a new language called Veracity, implemented in Multicore OCaml. We show that commutativity conditions can be automatically generated across a variety of new benchmark programs, confirm the expectation that concurrency speedups can be seen as the computation increases, and apply our work to a small in-memory filesystem and an adaptation of a crowdfund blockchain smart contract.
问问这篇 Paper
智能体会读完全文。
Lune 把这篇 Paper 索引到了每一个公式,引用它的顶会 Paper 也一样。你提问,回答直接引用原文。
引用它的顶会 Paper1
问问它们各自怎么用它它引用的顶会 Paper1
相关 Paper
- VeyMont: Parallelising Verified Programs Instead of Verifying Parallel ProgramsPetra van den Bos, Sung-Shik JongmansFM 2023 · 被引用 6 次
- The anchor verifier for blocking and non-blocking concurrent softwareCormac Flanagan, Stephen N. FreundOOPSLA 2020 · 被引用 7 次
- Commutativity Simplifies Proofs of Parameterized ProgramsAzadeh Farzan, Dominik Klumpp, Andreas PodelskiPOPL 2024 · 被引用 11 次
- Choreographic Quick Changes: First-Class Location (Set) PolymorphismAshley Samuelson, Andrew K. Hirsch, Ethan CecchettiOOPSLA 2025
- Repairing serializability bugs in distributed database programs via automated schema refactoringKia Rahmani, Kartik Nagar, Benjamin Delaware, Suresh JagannathanPLDI 2021 · 被引用 4 次
