When mapping C programs to hardware, high-level synthesis (HLS) tools seek to reorder instructions so they can be packed into as few clock cycles as possible. However, when synthesising multi-threaded C, instruction reordering is inhibited by the presence of atomic operations (‘atomics’), such as compare- and-swap. Atomics, the fundamental concurrency primitive in C, are the basis of more abstract concurrency mechanisms such as locks, and also of efficient lock-free data structures. Whether a particular atomic can be legally reordered within a thread can depend on the memory access patterns of other threads. Existing HLS tools that support atomics typically sched- ule each thread independently, and so must be conservative when optimising ar...
Shared-memory concurrency in C and C++ is pervasive in systems programming, but has long been poorly...
Despite the conceptual simplicity of sequential consistency (SC), the semantics of SC atomic operati...
Shared memory concurrency relies on synchronisation primitives: compare-and-swap, load-reserve/store...
When mapping C programs to hardware, high-level synthesis (HLS) tools reorder independent instructio...
Lock-free algorithms, in which threads synchronise not via coarse-grained mutual exclusion but via f...
Strictness analysis is crucial for the efficient implementation of the lazy functional languages. A ...
Hardware Synthesis of Weakly Consistency C Concurrency This webpage contains additional material fo...
This collection contains the companion material of "Concurrency-Aware Thread Scheduling for High-Lev...
Copyright is held by the owner/author(s). Despite much research on concurrent programming languages,...
With the introduction of multi-core CPUs, multi-threaded programming is becoming significantly more ...
Modern architectures implement relaxed memory models which may reorder memory operations or execute ...
While fixing concurrency bugs, program repair algorithms may introduce new concurrency bugs. We pres...
technical reportThis paper explores the practicality of conducting program analysis for multithread...
We present a computer-aided programming approach to concurrency. The approach allows programmers to ...
We develop program synthesis techniques that can help programmers fix concurrency-related bugs. We m...
Shared-memory concurrency in C and C++ is pervasive in systems programming, but has long been poorly...
Despite the conceptual simplicity of sequential consistency (SC), the semantics of SC atomic operati...
Shared memory concurrency relies on synchronisation primitives: compare-and-swap, load-reserve/store...
When mapping C programs to hardware, high-level synthesis (HLS) tools reorder independent instructio...
Lock-free algorithms, in which threads synchronise not via coarse-grained mutual exclusion but via f...
Strictness analysis is crucial for the efficient implementation of the lazy functional languages. A ...
Hardware Synthesis of Weakly Consistency C Concurrency This webpage contains additional material fo...
This collection contains the companion material of "Concurrency-Aware Thread Scheduling for High-Lev...
Copyright is held by the owner/author(s). Despite much research on concurrent programming languages,...
With the introduction of multi-core CPUs, multi-threaded programming is becoming significantly more ...
Modern architectures implement relaxed memory models which may reorder memory operations or execute ...
While fixing concurrency bugs, program repair algorithms may introduce new concurrency bugs. We pres...
technical reportThis paper explores the practicality of conducting program analysis for multithread...
We present a computer-aided programming approach to concurrency. The approach allows programmers to ...
We develop program synthesis techniques that can help programmers fix concurrency-related bugs. We m...
Shared-memory concurrency in C and C++ is pervasive in systems programming, but has long been poorly...
Despite the conceptual simplicity of sequential consistency (SC), the semantics of SC atomic operati...
Shared memory concurrency relies on synchronisation primitives: compare-and-swap, load-reserve/store...