Despite the growing popularity of GPGPU programming, there is not yet
a portable and formally-specified barrier that one can use to
synchronise across workgroups. Moreover, the occupancy-bound execution
model of GPUs breaks assumptions inherent in traditional software
execution barriers, exposing them to deadlock. We present an
occupancy discovery protocol that dynamically discovers a safe
estimate of the occupancy for a given GPU and kernel, allowing for a
starvation-free (and hence, deadlock-free) inter-workgroup barrier by
restricting the number of workgroups according to this estimate. We
implement this idea by adapting an existing, previously non-portable,
GPU inter-workgroup barrier to use OpenCL 2.0 atomic operations, and
prove that the barrier meets its natural specification in terms of
synchronisation.
We assess the portability of our approach over eight GPUs spanning
four vendors, comparing the performance of our method against
alternative methods. Our key findings include: (1)~the recall of our
discovery protocol is nearly 100%; (2)~runtime comparisons vary
substantially across GPUs and applications; and (3)~our method
provides portable and safe inter-workgroup synchronisation across the
applications we study.
Wed 2 NovDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
10:30 - 12:10 | |||
10:30 25mTalk | A Compiler for Throughput Optimization of Graph Algorithms on GPUs OOPSLA DOI Pre-print | ||
10:55 25mTalk | Automatic Parallelization of Pure Method Calls via Conditional Future Synthesis OOPSLA DOI | ||
11:20 25mTalk | Portable Inter-workgroup Barrier Synchronisation for GPUs OOPSLA Tyler Sorensen Imperial College London, Alastair F. Donaldson Imperial College London, Mark Batty University of Kent, Ganesh Gopalakrishnan University of Utah, Zvonimir Rakamaric University of Utah DOI Pre-print | ||
11:45 25mTalk | Parallel Incremental Whole-Program Optimizations for Scala.js OOPSLA DOI Pre-print |