GPGPU |
General-Purpose Computation Using Graphics Hardware
|
IntroductionGPGPU stands for General-Purpose computation on GPUs. With the increasing programmability of commodity graphics processing units (GPUs), these chips are capable of performing more than the specific graphics computations for which they were designed. They are now capable coprocessors, and their high speed makes them useful for a variety of applications. The goal of this page is to catalog the current and historical use of GPUs for general-purpose computation.
|
GPGPU DEVELOPER RESOURCESWelcome to the GPGPU.org Developer Resources page. Here you will find information about GPGPU programming, including links, sample code, tutorials, and more. All of the code here is open source, and most is available via SourceForge. GPGPU WikiThe GPGPU.org Wiki contains many resources useful for developers, such as:
Conference TutorialsOver the years several GPGPU Tutorial sessions have been hosted at various conferences.
Code TutorialsGPGPU programming can be tricky. The simple examples provided here should help new GPGPU programmers get started. Tutorial 0: "Hello GPGPU"
| |||||||||||
Fluid Dynamics SimulationThis sample from the NVIDIA SDK demonstrates fast, realistic fluid dynamics simulation on the GPU. The sample solves the Navier-Stokes equations for incompressible fluid flow using a technique originally presented at SIGGRAPH 1999 by Jos Stam. The sample allows the user to draw arbitrary obstacles and flow viscous or inviscid fluid around them. |
![]() |
Reaction-Diffusion: "Disease"This sample from the NVIDIA SDK creates a disturbing dynamic disease effect. It simulates a phenomenon known as chemical reaction-diffusion, by solving the governing partial differential equations in a fragment program. The result is an endless variety of changing patterns that are then used to generate bump and texture maps which are applied to a mesh with various shaders. |
![]() |
GPU ParticlesThis sample implements a large-scale particle system entirely on the GPU. The positions and velocities of each particle are stored in floating point textures. Fragment programs are used to update the velocities and positions of the particles by rendering to texture each time step. The particles also collide against a sphere object, and a terrain heightfield which is stored in a texture. If available, the multiple draw buffers extension (MRT) is used to update the position and velocities in a single pass. The particles are rendered as point sprites. The position texture is converted into a vertex array for rendering the particles using the vertex buffer and pixel buffer object extensions (VBO and PBO). On the GeForce 6800, this method can render a million particles at about 20 frames per second. This example is inspired by Lutz Latta's talk from GDC 2004, "Building a Million Particle System". http://www.2ld.de/gdc2004/ |
![]() |
If you have useful code you would like to share with the GPGPU community, use the "contact us" link at the left to tell the webmaster about it.
CUDPP is the CUDA Data Parallel Primitives Library. CUDPP is a library of data-parallel algorithm primitives such as parallel-prefix-sum ("scan"), parallel sort 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.
This class is a minimal abstraction of the OpenGL framebuffer object (FBO) specification. FBO enables flexible, efficient render-to-texture in OpenGL and obviates the use of pbuffers. Included with this distribution is an example application that uses the FBO class (a slightly modified version of the "Hello GPGPU" tutorial). This code is generously provided by Aaron Lefohn.
Please check SourceForge for updates to the FBO Class.
Note: RenderTexture uses pbuffers, which are being replaced in OpenGL by the new FBO extension. See above. RenderTexture is a wrapper class that abstracts the process of creating and rendering to off-screen color and depth buffers in OpenGL. It supports Windows and Linux on NVIDIA and ATI graphics processors.
RenderTexture 2.0
is the latest incarnation of RenderTexture.
RenderTexture 1.0
is an older version with fewer features that may be more stable on some configurations.
Please check SourceForge for updates to RenderTexture.
Conference Tutorials
Code Tutorials
Code Samples
Utility Code
NVIDIA CUDA
CUDPP
gpgpu.sourceforge.net
ShaderTech
The Cg Toolkit
GLUT