GPGPU
General-Purpose Computation Using Graphics Hardware

Introduction

GPGPU 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.

Contribute
Have some GPGPU News to Contribute? Submit it!

Contact Us


Subscribe to a syndicated RSS feed of GPGPU.
Subscribe to a syndicated RSS feed of GPGPU.

Powered by Blosxom.

Hosted by ibiblio.org

GPU++: An Embedded GPU Development System for General-Purpose Computations

This Ph.D. thesis by Jansen describes a GPGPU development system that is embedded in the C++ programming language using ad-hoc polymorphism (i.e. operator overloading). While this technique is already known from the Sh library and the RapidMind Development Platform, GPU++ uses a more generic class interface and requires no knowledge of GPU programming at all. Furthermore, there is no separation between the different computation units of the CPU and GPU - the appropriate computation frequency is automatically chosen by the GPU++ system using several optimization algorithms. ("GPU++: An Embedded GPU Development System for General-Purpose Computations". Thomas Jansen. Ph.D. Thesis, University of Munich, Germany.

Posted: 14 Jan 2008 [GPGPU /High-Level Languages] #

Intel Ct Tera-Scale White paper

From the introduction: "Processors architecture is evolving towards more software-exposed parallelism through two features: more cores and wider SIMD ISA. At the same time, graphics processors (GPUs) are gradually adding more general purpose programming features. Several software development challenges arise from these trends. First, how do we mitigate the increased software development complexity that comes with exposing parallelism to the developer? Second, how do we provide portability across (increasing) core counts and SIMD ISA? Ct is a deterministic parallel programming model intended to leverage the best features of emerging general-purpose GPU (GPGPU) programming models while fully exploiting CPU flexibility. A key distinction of Ct is that it comprises a top-down design of a complete data parallel programming model, rather than being driven bottomup by architectural limitations, a flaw in many GPGPU programming models." (Flexible Parallel Programming for Terascale Architectures with Ct)

Posted: 05 Nov 2007 [GPGPU /High-Level Languages] #

NVIDIA Releases CUDA for GPU Computing

A beta of NVIDIA's CUDA development environment, NVIDIA's new technology for computing with GPUs, is now posted on developer.nvidia.com. This beta release of CUDA contains a C-compiler for the GPU and an SDK with examples to get you started coding for the GPU. From the press release: "GPU Computing with CUDA is a new approach to computing where hundreds of on-chip processors simultaneously communicate and cooperate to solve complex computing problems. Applications that require mathematically intensive computing on large amounts of data are ideal targets for GPU Computing. NVIDIA’s CUDA technology is available in GeForce® 8800 graphics products and future NVIDIA Quadro® Professional Graphics solutions based on 8-series (G8X) GPUs. Developers are invited to download the beta version of the CUDA Software Developers Kit (SDK) and C compiler for Windows XP and Linux (RedHat Release 4 Update 3) from the NVIDIA Developer Web site at developer.nvidia.com/cuda. GPU Computing Forums for news, discussion and programming tips are also available at forums.nvidia.com."

Posted: 16 Feb 2007 [GPGPU /High-Level Languages] #

Brahma: Shader meta-programming framework for GPUs

Brahma is an open source shader meta-programming framework for the .NET platform that generates shader code from IL at runtime, enabling developers to write GPU code in C# (or any NET language). The library is primarily meant to handle GPU-based rendering and computational tasks, and eliminates a great deal of glue code that is often required in GPU programming. Since Brahma is a set of interfaces and base classes, it can be implemented for any combination of API and shading language. At this time there is a working shader generation path for Managed DirectX/HLSL. (http://brahma.ananthonline.net)

Posted: 13 Dec 2006 [GPGPU /High-Level Languages] #

NVIDIA Announces CUDA GPU Computing Architecture

NVIDIA Corporation today unveiled NVIDIA CUDA technology, a new architecture for computing on NVIDIA GPUs, and the industry's first C-compiler development environment for the GPU. From the NVIDIA Press Release: "GPU computing with CUDA is a new approach to computing where hundreds of on-chip processor cores simultaneously communicate and cooperate to solve complex computing problems up to 100 times faster than traditional approaches. This breakthrough architecture is complemented by another first: the NVIDIA C-compiler for the GPU. This complete development environment gives developers the tools they need to solve new problems in computation-intensive applications such as product design, data analysis, technical computing, and game physics. CUDA-enabled GPUs offer dedicated features for computing, including the Parallel Data Cache, which allows 128, 1.35GHz processor cores in newest generation NVIDIA GPUs to cooperate with each other while performing intricate computations. Developers access these new features through a separate computing driver that communicates with DirectX and OpenGL, and the new NVIDIA C compiler for the GPU, which obsoletes streaming languages for GPU computing." CUDA website: http://www.nvidia.com/cuda

Posted: 09 Nov 2006 [GPGPU /High-Level Languages] #

Performance Evaluation of GPUs Using the RapidMind Development Platform

This white paper from RapidMind and HP compares the performance of BLAS dense linear algebra operations, the FFT, and European option pricing on the GPU against highly tuned CPU implementations on the fastest available CPUs. All of the GPU implementations were made using the RapidMind Development Platform, which allows the use of standard C++ programming to create high-performance parallel applications that run on the GPU. The full source for the samples is available in conjunction with a new beta version of the RapidMind development platform. The results will also be presented as a poster at SC06. (http://rapidmind.net/sc06_hp_rapidmind_cpugpu_summary.php)

Posted: 03 Nov 2006 [GPGPU /High-Level Languages] #

PeakStream launches software platform to harness the power of next-generation multi-core processors

PeakStream, Inc., a leading software application platform provider for the high performance computing (HPC) market, today unveiled the PeakStream Platform. Available immediately, the PeakStream Platform makes it possible to easily program new high performance processors such as multi-core CPUs, graphics processing units (GPUs) and Cell processors, converting them into radically powerful computing engines for exponentially increased application performance and decreased time-to-solution at reduced cost. The company also a nnounced the completion of equity financing totaling $17 million from Kleiner Perkins Caufield & Byers, Sequoia Capital and Foundation Capital. (www.peakstreaminc.com)

Posted: 30 Oct 2006 [GPGPU /High-Level Languages] #

TyphoonLabs OpenGL Shader Designer source code released

TyphoonLabs has released the OpenGL Shader Designer source code, in response to many requests, and in gratitude to the OpenGL community. The source code is released under the LGPL license and can be downloaded from http://www.typhoonlabs.com in the downloads section. Linux binaries will be released later this month.

Posted: 21 Jun 2006 [GPGPU /High-Level Languages] #

MSR Accelerator Now Available for Download

The Accelerator GPGPU programming system from Microsoft Research is now available for download. The system was mentioned previously here on gpgpu.org. A key purpose in releasing the software is to get feedback from the gpgpu community about the programming model and the API. Microsoft Research are also interested in building higher level libraries using the system. (http://research.microsoft.com/downloads. Also see the Accelerator Project Wiki.)

Posted: 21 Jun 2006 [GPGPU /High-Level Languages] #

Glift: Generic, Efficient, Random-Access GPU Data Structures

This paper presents Glift, an abstraction and generic template library for defining complex, random-access graphics processor (GPU) data structures. Like modern CPU data structure libraries, Glift enables GPU programmers to separate algorithms from data structure definitions; thereby greatly simplifying algorithmic development and enabling reusable and interchangeable data structures. We characterize a large body of previously published GPU data structures in terms of our abstraction and present several new GPU data structures. The structures, a stack, quadtree, and octree, are explained using simple Glift concepts and implemented using reusable Glift components. We also describe two applications of these structures not previously demonstrated on GPUs: adaptive shadow maps and octree 3D paint. Lastly, we show that our example Glift data structures perform comparably to handwritten implementations while requiring only a fraction of the programming effort. (Glift: Generic, Efficient, Random-Access GPU Data Structures. Aaron E. Lefohn, Joe Kniss, Robert Strzodka, Shubhabrata Sengupta, John D. Owens. ACM Transactions on Graphics, 25(1), Jan. 2006.)

Posted: 09 Feb 2006 [GPGPU /High-Level Languages] #

Accelerator: A GPGPU system from Microsoft Research

This paper describes Accelerator, a system that simplifies the programming of GPUs for general-purpose uses. Accelerator provides a high-level data-parallel programming model as a library that is available from a conventional imperative programming language (C#). The library translates the data-parallel operations on-the-fly to optimized GPU pixel shader code and API calls. The authors describe the compilation techniques used to produce optimized pixel shader code, and demonstrate the effectiveness of the approach by providing results for a set of compute-intensive benchmarks drawn from image processing and computer vision. The speeds of the Accelerator versions of the benchmarks are typically within 50% of the speeds of hand-written pixel shader code. Some benchmarks significantly outperform C versions running on a CPU by up to 18x. (Accelerator: simplified programming of graphics processing units for general-purpose uses via data-parallelism David Tarditi, Sidd Puri, Jose Oglesby. Microsoft Research Technical Report MSR-TR-2005-184. December 2005.)

Posted: 17 Jan 2006 [GPGPU /High-Level Languages] #

Sh Version 0.8rc0 Released

Sh Version 0.8.0rc0, the first release candidate for the upcoming Sh 0.8, is now available. There are plenty of new features and bug fixes, but most importantly this release has an API that completely matches the book Metaprogramming GPUs with Sh, which the 0.8.x series of releases will stick to. (http://libsh.org)

Posted: 10 Nov 2005 [GPGPU /High-Level Languages] #

Sh Version 0.7.8 Released

A new version of the Sh language for GPU programming in C++ has been released. This version features a new backend infrastructure implementation allowing such things as running part of a stream application on the GPU and part on the CPU at the same time. Many other fixes as well as platform compatability enhancements were also added. (http://libsh.org)

Posted: 01 Jul 2005 [GPGPU /High-Level Languages] #

Sh Version 0.7.7 released

Version 0.7.7 of the Sh GPU Metaprogramming Language is now released. Sh allows GPUs to be programmed directly using C++. This version features a back end for the OpenGL Shading Language, Mac OS X support, and major speed improvements for stream programs (the GPGPU subset of Sh). (http://libsh.org)

Posted: 26 Apr 2005 [GPGPU /High-Level Languages] #

Scout: A Hardware-Accelerated System for Quantitatively Driven Visualization and Analysis

This IEEE Visualization 2004 paper by McCormick et al. describes the Scout System and Language that allow the GPU to be programmed for scientific visualization. Scout uses a data parallel language that allows the user to program visual mappings from data values to the final rendered result. These techniques can be used to replace standard user interface components, such as the transfer function editor commonly used in volume rendering. ("Scout: A Hardware-Accelerated System for Quantitatively Driven Visualization and Analysis", Patrick S. McCormick, Jeff Inman, James P. Ahrens, Chuck Hansen and Greg Roth, In Proceedings IEEE Visualization 2004, pages 171-178, October 2004.)

Posted: 19 Oct 2004 [GPGPU /High-Level Languages] #

Brook for GPUs: Stream Computing on Graphics Hardware

Abstract 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.)

Posted: 23 May 2004 [GPGPU /High-Level Languages] #

ShaderTech.com Launched

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.

Posted: 05 May 2004 [GPGPU /High-Level Languages] #

Shader Algebra

This SIGGRAPH 2004 paper by McCool et al. describes a "Shader Algebra", Sh's system for manipulating shaders (functional composition, specialization, etc.) and doing stream programming. Sh has recently added operators to combine shaders and to apply shaders to streams. Sh now also manages buffers, enabling more convenient general-purpose stream processing. Stream processing is supported on both the GPU and on the CPU (using just-in-time compilation in both cases). The operators, in conjunction with the optimizer, glue shaders, and special "manipulator" support functions, can support a variety of useful operations including shader specialization, redundancy elimination, and I/O adaptation. (Shader Algebra preprint and talk preview.)

Posted: 08 Apr 2004 [GPGPU /High-Level Languages] #

Cg Toolkit 1.2 released

The Cg Toolkit allows developers to write and run shader programs using a wide variety of hardware platforms and graphics APIs. This release introduces several significant new features:
  • Interfaces, a language construct that facilitates the creation of general, reconfigurable Cg programs
  • Unsized arrays
  • Parameter instances may be created and shared between multiple programs
  • Parameters may be marked as compile-time constants, leading to more efficient compiled code
  • Support for x86 Linux (Red Hat 7.1 or later etc) and Mac OS X Panther
Be sure to check out the CgReleaseNotes and CgManualAddendum in the documents package for full details. (NVIDIA Cg Toolkit 1.2)

Posted: 25 Feb 2004 [GPGPU /High-Level Languages] #

Brook for GPUs

Brook for GPUs is an active research project at the Stanford University Computer Graphics Lab to explore general purpose computing on modern programmable graphics hardware. BrookGPU is a compiler and runtime implementation of the Brook stream programming language which provides an easy, C-like programming environment for today's GPU. The Beta version of Brook for GPUs is now available for download at the link below. Brook requires no graphics or GPU programming experience, and supports both ATI Radeon 9500+ and NVIDIA GeForceFX /QuadroFX hardware, using both DirectX and OpenGL APIs. BrookGPU has a complete fallback CPU implementation. (Brook for GPUs.)

Posted: 21 Dec 2003 [GPGPU /High-Level Languages] #

Categories