Fri 17 Jun 2022 14:10 - 14:30 at Macaw - Melange Chair(s): Rachit Nigam

Heterogeneous CPU/FPGA devices, in which a CPU and an FPGA can execute together while sharing memory, are becoming popular in several computing sectors. In this paper, we study the shared-memory semantics of these devices, with a view to providing a firm foundation for reasoning about the programs that run on them. Our focus is on Intel platforms that combine an Intel FPGA with a multicore Xeon CPU. We describe the weak-memory behaviours that are allowed (and observable) on these devices when CPU threads and an FPGA thread access common memory locations in a fine-grained manner through multiple channels. Some of these behaviours are familiar from well-studied CPU and GPU concurrency; others are weaker still. We encode these behaviours in two formal memory models: one operational, one axiomatic. We develop executable implementations of both models, using the CBMC bounded model-checking tool for our operational model and the Alloy modelling language for our axiomatic model. Using these, we cross-check our models against each other via a translator that converts Alloy-generated executions into queries for the CBMC model. We also validate our models against actual hardware by translating 583 Alloy-generated executions into litmus tests that we run on CPU/FPGA devices; when doing this, we avoid the prohibitive cost of synthesising a hardware design per litmus test by creating our own ‘litmus-test processor’ in hardware. We expect that our models will be useful for low-level programmers, compiler writers, and designers of analysis tools. Indeed, as a demonstration of the utility of our work, we use our operational model to reason about a producer/consumer buffer implemented across the CPU and the FPGA. When the buffer uses insufficient synchronisation – a situation that our model is able to detect – we observe that its performance improves at the cost of occasional data corruption.

https://dl.acm.org/doi/abs/10.1145/3485497
this URL might only work when visiting from a https://dl.acm.org/doi/abs/10.1145/3485497 URL.

Fri 17 Jun

Displayed time zone: Pacific Time (US & Canada) change

13:30 - 14:50
MelangeSIGPLAN Track at Macaw
Chair(s): Rachit Nigam Cornell University
13:30
20m
Talk
(OOPSLA 2020) Automatic and Efficient Variability-Aware Lifting of Functional Programs
SIGPLAN Track
Ramy Shahin University of Toronto, Marsha Chechik University of Toronto
13:50
20m
Talk
(OOPSLA 2021) Safer at Any Speed: Automatic Context-Aware Safety Enhancement for Rust
SIGPLAN Track
Natalie Popescu Princeton University, Ziyang Xu Princeton University, Sotiris Apostolakis Google, David I. August Princeton University, Amit Levy
Link to publication DOI Authorizer link Pre-print
14:10
20m
Talk
(OOPSLA 2021) The semantics of shared memory in Intel CPU/FPGA systems
SIGPLAN Track
Dan Iorga Imperial College London, Alastair F. Donaldson Imperial College London, Tyler Sorensen University of California at Santa Cruz, John Wickerson Imperial College London
Link to publication DOI Authorizer link Pre-print
14:30
20m
Talk
(PLDI 2020) Efficient Handling of String-Number Conversion
SIGPLAN Track
Parosh Aziz Abdulla Uppsala University, Sweden, Mohamed Faouzi Atig Uppsala University, Sweden, Yu-Fang Chen Academia Sinica, Taiwan, Bui Phi Diep Uppsala University, Sweden, Julian Dolby IBM Research, USA, Petr Janků Brno University of Technology, Czechia, Hsin-Hung Lin Academia Sinica, Taiwan, Lukáš Holík Brno University of Technology, Wei-Cheng Wu University of Southern California, USA