Sandia National Laboratories
GERYON
Introduction
Documentation
. Powerpoint
. Doxygen

Download
. Download Source
. Changelog
. License
. Known Issues
Add Example
. Host Code
. Device Code
. Compiling
Performance
Authors

Introduction

There are 3 Low-level APIs for Nvidia GPGPU Computing

  • CUDA Runtime API
  • CUDA Driver API
  • OpenCL


OpenCL offers a general API that is supported by many vendors and allows the potential to run kernels efficiently on the CPU in addition to coprocessor devices. CUDA Driver is a more mature GPGPU programming API with stable compilers, freedom in the choice of host compilers, and can potentially generate the most efficient code for Nvidia devices. CUDA Runtime offers a more succinct API and support for GPU code integrated with host code.

Unfortunately, all 3 APIs have different function names and data types. Memory management is complicated:

  • Host, Host Pinned, Host Pinned Write-Combined, Host Portable, Device, Device 2D with Padding, Constant Device, Texture 2D, Texture 3D, etc.
  • CUDA-RT has 20 memory copy functions requiring up to 8 parameters
  • CUDA-Driver has 17 memory copy functions
  • OpenCL has 8 memory copy functions requiring up to 11 parameters


Geryon


Geryon is intended to be a simple library for managing all three APIs with a consistent interface

  • Change from one API to another by simply changing the namespace
  • Use multiple APIs in the same code
  • Lightweight (only include files – no build required)
  • Manage device query and selection
  • Simple vector and matrix containers
  • Simple routines for data copy and type casting
  • Simple routines for data I/O
  • Simple classes for managing device timing
  • Simple classes for managing kernel compilation and execution

Top of page


Geryon
W. Michael Brown
wmbrown@sandia.gov

Related Links
Home Page