Skip to content
Shinpei Kato edited this page Aug 9, 2013 · 1 revision

Gdev is open-source software for GPU resource management in Linux. It consists of runtime libraries, device drivers, and utility tools. Currently we primarily support NVIDIA GPUs with CUDA, and OpenCL will also be supported soon. This project is managed by Shinpei Kato, an associate professor at Nagoya University, Japan.

Why You Want Gdev?

  • Gdev is open-source. GPUs are black-box devices. Vendor's compilers, runtime libraries, and device drivers are all binary software. If you are end users, this is not a big deal. However if you are researchers, scholars, or engineers, you may need access to details of GPU resource management. With binary software, it is almost impossible. Hence you want Gdev. You can study how GPUs work, how they interact with operating systems and user-space programs.

  • Gdev is compatible with multiple device drivers. GPU subsystems are often monolithic. Considering NVIDIA GPUs, NVIDIA CUDA/OpenGL sticks with NVIDIA Driver, Gallium3D sticks with Nouveau, and PathScale ENZO sticks with PSCNV. They don't have flexible choices at all. In contrast, Gdev works with NVIDIA Driver, Nouveau, and PSCNV. This is a great advantage for research and development. For example, if you just want to extend runtime libraries, you can use NVIDIA Driver providing the best performance and stability. No need to crash with Nouveau or PSCNV. On the other hand, if you want to add system-level extensions, you may want to use Nouveau or PSCNV, which give you access to operating systems and device drivers.

  • Gdev is configurable with the operating system as well as the user space. GPU programming is commonly a user-space matter. Only user-space programs are allowed to use GPUs through CUDA or OpenGL under current programming frameworks. Gdev allows the operating system to use GPUs as well as the user space. How? - it provides a kernel module as part of the operating system, which exposes CUDA APIs to other kernel modules. The performance of operating system functions such as the file system and network stack, hence, can be enhanced using Gdev.

Gdev Stack

Supported APIs

  • Gdev API: This is a low-level API managing details of the GPU. It can be used as a basis of high-level APIs such as CUDA and OpenCL, or can also be used by programmers directly.
  • CUDA Driver API: This is a high-level API advocated by NVIDIA. This API allows programmers to use the C language for the host program - hence you can use GCC or Clang alone.
  • CUDA Runtime API: This is a further high-level API advocated by NVIDIA. Most existing CUDA applications use this API. It requires programmers to use a CUDA compiler even for the host program.
  • OpenCL: Coming soon.

First-Class Resource Management

As described above, Gdev is configurable with the operating system as well as the user space. This is a unique feature of Gdev allowing the runtime system to run at the operating system level, whereas current GPU programming frameworks employ the runtime system in user-space aimed at only offloading computations when requested by programmers. Since the runtime system runs in the operating system, Gdev can manage GPUs as first-class citizens in the system, just like CPUs. Specifically Gdev provides the following resource management functions to support real-time, low-latency, power-aware, multi-tasking, and/or cloud-based computing.

  • Scheduling
  • Resource Reservation
  • Zero-Copy Transfer
  • Virtualization
  • Remote Device
  • Microcontroller Management
  • Power Management
  • Memory Management
Clone this wiki locally