Cooperative Kernels: GPU Multitasking for Blocking Algorithms (Extended Version)
Tyler Sorensen, Hugues Evrard, Alastair F. Donaldson

TL;DR
This paper introduces cooperative kernels, an extension to GPU programming models that enables fair scheduling and multitasking for blocking algorithms, demonstrated through a vendor-neutral prototype in OpenCL 2.0.
Contribution
It proposes cooperative kernels with language extensions for fair scheduling and multitasking on GPUs, addressing limitations of current GPU schedulers.
Findings
Fair scheduling of blocking algorithms is achievable with cooperative kernels.
Prototype implementation in OpenCL 2.0 demonstrates practical feasibility.
Performance evaluation shows potential for efficient multitasking without vendor-specific support.
Abstract
There is growing interest in accelerating irregular data-parallel algorithms on GPUs. These algorithms are typically blocking, so they require fair scheduling. But GPU programming models (e.g.\ OpenCL) do not mandate fair scheduling, and GPU schedulers are unfair in practice. Current approaches avoid this issue by exploiting scheduling quirks of today's GPUs in a manner that does not allow the GPU to be shared with other workloads (such as graphics rendering tasks). We propose cooperative kernels, an extension to the traditional GPU programming model geared towards writing blocking algorithms. Workgroups of a cooperative kernel are fairly scheduled, and multitasking is supported via a small set of language extensions through which the kernel and scheduler cooperate. We describe a prototype implementation of a cooperative kernel framework implemented in OpenCL 2.0 and evaluate our…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Advanced Data Storage Technologies · Distributed and Parallel Computing Systems
