CUDPP Documentation

rel_gems3-2

Introduction

CUDPP is the CUDA Data Parallel Primitives Library. CUDPP is a library of data-parallel algorithm primitives such as parallel-prefix-sum ("scan"), parallel sorting and parallel reduction. Primitives such as these are important building blocks for a wide variety of data-parallel algorithms, including sorting, stream compaction, and building data structures such as trees and summed-area tables.

Homepage

Homepage for CUDPP: http://www.gpgpu.org/developer/cudpp/

Announcements and discussion of CUDPP are hosted on the CUDPP Google Group.

Getting Started with CUDPP

You may want to start by browsing the CUDPP public interface. For information on building CUDPP, see Building CUDPP.

The "apps" subdirectory included with CUDPP has a few source code samples that use CUDPP:

We have also provided a code walkthrough of the simpleCUDPP example.

Release Notes

For specific release details see the Change Log.

Note:
This release (rel_gems3-2) should be considered beta code. This release was made to support the GPU Gems 3 article "Parallel Prefix Sum (Scan) with CUDA" (see references). Because this is beta code, the interfaces in the CUDPP library may change in a future release. In fact, some of the interfaces will change (for the better). To see some discussion about what will change, see the todo page.
This release (rel_gems3) has been tested on 32-bit Windows XP and 64-bit Redhat Enterprise Linux 5 (RHEL 5 x86_64). We expect the code to compile and work correctly on other linux flavors, but it has not yet been tested.

CUDA

CUDPP is implemented in NVIDIA CUDA. It requires the CUDA Toolkit version 1.0 or later. Please see the NVIDIA CUDA homepage to download CUDA as well as the CUDA Programming Guide and CUDA SDK, which includes many CUDA code examples.

Design Goals

Design goals for CUDPP include:

Programmers may use any of the lower three CUDPP layers in their own programs by building the source directly into their application. However, the typical usage of CUDPP is to link to the library and invoke functions in the CUDPP Public Interface, as in the simpleCUDPP, satGL, and cudpp_testrig application examples included in the CUDPP distribution.

In the future, if and when CUDA supports building device-level libraries, we hope to enhance CUDPP to ease the use of CUDPP internal algorithms at all levels.

Use Cases

We expect the normal use of CUDPP will be in one of two ways:
  1. Linking the CUDPP library against another application.
  2. Running our "test" application, cudpp_testrig, that exercises CUDPP functionality.

References

The following publications describe work incorporated in CUDPP.

Credits

CUDPP Developers

Other CUDPP Contributors

Acknowledgments

Thanks to Jim Ahrens, Ian Buck, Guy Blelloch, Jeff Bolz, Jeff Inman, Eric Lengyel, David Luebke, Pat McCormick, and Richard Vuduc for their contributions during the development of this library.

Thanks also to our funding agencies:

CUDPP Copyright and Software License

CUDPP is copyright The Regents of the University of California, Davis campus and NVIDIA Corporation. The license is a modified version of the BSD license, designed to encourage reuse of this software in other projects, both commercial and non-commercial. For details, please see the CUDPP License page.
Generated on Tue Nov 20 11:43:59 2007 for CUDPP by  doxygen 1.5.3