This SIGGRAPH 2004 paper by Buck et al. presents Brook for GPUs, a system for general-purpose computation on programmable graphics hardware. Brook extends C to include simple data-parallel constructs, enabling the use of the GPU as a streaming coprocessor. The paper presents a compiler and runtime system that abstracts and virtualizes many aspects of graphics hardware. In addition, the paper provides analysis of the effectiveness of the GPU as a compute engine compared to the CPU, to determine when the GPU can outperform the CPU for a particular algorithm. The paper evaluates the system with five applications, the SAXPY and SGEMV BLAS operators, image segmentation, FFT, and ray tracing. For these applications, the Brook implementations perform comparably to hand-written GPU code and up to seven times faster than their CPU counterparts. (Brook for GPUs: Stream Computing on Graphics Hardware. Ian Buck, Tim Foley, Daniel Horn, Jeremy Sugerman, Kayvon Fatahalian, Mike Houston, and Pat Hanrahan. To appear at SIGGRAPH 2004.)
The OpenVIDIA project is a GPL’d Free/Open Source project which implements computer vision algorithms on the GPU using OpenGL and Cg. These papers describe the GPU implementation of a projective image registration algorithm in OpenVIDIA. The current release includes a hand-tracking program used for a gesture recognition interfaces, some simple programming examples, and firewire video input support. OpenVIDIA explores the use of GPU hardware accelerated computer vision in the context of creating Computer Mediated Reality. (James Fung, Felix Tang, Steve Mann, “Mediated Reality Using Computer Graphics Hardware for Computer Vision“, Proceedings of the International Symposium on Wearable Computing 2002 (ISWC2002), Seattle, Washington, USA, Oct 7-10, 2002, pp. 83-89.
James Fung, Steve Mann, “Computer Vision Signal Processing on Graphics Processing Units“, Proceedings of the IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP 2004), Montreal, Quebec, Canada, May 17-21, 2004.)
TyphoonLabs has released version 1.3 of the OpenGL Shader Designer, an integrated development environment for GPU fragment and vertex shaders in GLSL (the OpenGL shading language). Key features include plugins for vertex attributes (tangents, binormals, etc.), textures (noise, volumes, etc.), real-time preview with multiple light sources, full syntax highlighting and “intellisense” for GLSL, and much more! (OpenGL Shader Designer 1.3)
Given the increasing power and usage of commodity GPUs, many researchers are using them for general-purpose computation. The ACM Workshop on General-Purpose Computation on Graphics Processors (GP2), to be held the Saturday and Sunday before SIGGRAPH 2004 at one of the SIGGRAPH hotels, will explore current issues in general-purpose computing using graphics hardware. These issues include:
- Do GPUs have the potential of being a useful co-processor for a wide variety of applications?
What are their algorithmic and architectural niches and can these be broadened?
- What are the major issues in terms of programmability, language and compiler support and software environments for GPUs?
- What are some of the future technology trends that can lead to more widespread use of GPUs?
This workshop will bring together leading researchers and practitioners from academia, research labs and industry working in computer graphics, scientific computation, high performance computing,
omputer architecture and related areas. The program will consist of invited talks, panels and poster presentations. (ACM GP2 Workshop. Call for Posters.)
We are proud to announce an entirely new developer page here at GPGPU.org. On this page you will find a growing number of programming and GPGPU development resources. Content on the page will include tutorials, sample code, utilities, and more. Check back often for updates! In addition, most source code resources posted on the developer page will be made available as open source software hosted at our new SourceForge site, gpgpu.sourceforge.net. There you will be able to download the latest releases, and check out code from the CVS repository.
ShaderTech.com is a new site that’s focused on real-time shader development, providing numerous resources such as articles, forums, books, tools, and more. Because there are now several very capable high-level shading languages in active use by developers, ShaderTech aims to support the entire GPU development community regardless of shader language.
NVIDIA Corporation recently introduced its new GeForce 6800 GPU (codename NV40). Among the new features of this GPU are 64-bit floating point texture filtering and blending and support for the D3D vertex and pixel shader 3.0 standard, enabling full dynamic branching and looping in programmable shaders. The GeForce 6800 features 16 pixel pipelines. The improved pixel shader performance of the GeForce 6800 architecture should provide excellent performance for GPGPU applications. NVIDIA report that they have seen over a 3x speedup on a GPU-based Navier-Stokes fluid flow simulation (compared to an NVIDIA GeForce FX 5950).
ATI Technologies recently introduced its new RADEON X800 line of graphics cards (codename R420). Among the new features of these cards are 3Dc, a new compression scheme for normal maps, and support for the D3D ps_2_b pixel shader specification. The ps_2_b shader model allows for pixel shaders up to 512 instructions long with 32 temporary registers. The RADEON X800 XT Platinum Edition features 16 pixel pipelines while the RADEON X800 PRO has 12 pixel pipelines. The improved pixel shader performance of the RADEON X800 architecture should provide excellent performance for GPGPU applications. ATI report they have seen up to a 2.5x speedup on an implementation of GPU-based fluid flow simulation (compared to an ATI RADEON 9800 XT).
Isosurface Computation Made Simple: Hardware Acceleration, Adaptive Refinement and Tetrahedral StrippingMay 4th, 2004
This paper by Valerio Pascucci describes a simple technique to compute isosurfaces on programmable GPUs. Given the vertices of a tetrahedron a simple vertex program computes the position of the vertices, normal and connectivity of the potential portion of an isosurface contained in the tetrahedron (a marching tet approach). One main advantage of this technique is to offload the CPU of the task of computing the isosurface and more importantly to avoid storing the surface in main memory. Interestingly, one could compile a display list for a tetrahedral mesh and display different isosurfaces by changing an OpenGL parameter and always rendering the same list. The paper presents and comments in detail all the source code of the vertex program. (Isosurface Computation Made Simple: Hardware Acceleration, Adaptive Refinement and Tetrahedral Stripping. V. Pascucci, Proceedings of VisSym 2004)
This paper by Sud et al. at UNC-Chapel Hill, describes an algorithm for fast computation of discretized 3D distance fields using graphics hardware. It uses bounds on the spatial extent of the Voronoi region of each primitive to cull away many distance functions for each 2D slice. A combination of culling and clamping techniques results in rendering relatively few distance functions to reduce the load on the graphics pipeline. The algorithm is applicable to all geometric models and does not make any assumptions about connectivity or a manifold representation. The application is demonstrated for medial axis evaluation and proximity computations. As compared to earlier approaches, this GPU implementation achieves an order of magnitude improvement in the running time. (DiFi: Fast 3D Distance Field Computation Using Graphics Hardware. Avneesh Sud, Miguel A. Otaduy and Dinesh Manocha in Proc. Eurographics 2004, to appear, 2004.)