Jeff A. Stuart, and John D. Owens
We present GPU-to-CPU callbacks, a new mechanism and abstraction for GPUs that
offers them more independence in a heterogeneous computing environment.
Specifically, we provide a method for GPUs to issue callback requests to the
CPU. These requests serve as a tool for ease-of-use, future proofing of code,
and new functionality. We classify the types of these requests into three
categories: System calls (e.g. network and file I/O), device/host memory
transfers, and CPU compute, and provide motivation as to why all are important.
We show how to implement such a mechanism in CUDA using pinned system memory. We
analyze the latency involved for each implementation on both discrete and
integrated GPUs, as well as discuss possible features for the GPU driver to
alleviate the need for polling, thus making callbacks more efficient with CPU
usage and power consumption. We implement several examples demonstrating the use
of callbacks for file I/O, network I/O, memory allocation, and debugging.
- John D. Owens,
Jeff A. Stuart,
in: UCHPC 2010: Proceedings of the Third Workshop on UnConventional High Performance Computing (Euro-Par 2010 Workshops), 2010.