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.
|
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.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] # 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] # 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 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] # 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] # 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:
Posted: 25 Feb 2004 [GPGPU /High-Level Languages] # 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
|