General-Purpose Computation Using Graphics Hardware
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.
Have some GPGPU News to Contribute? Submit it!
This paper aims at bridging the gap between the lack of synchronization mechanisms in recent graphics processor (GPU) architectures and the need of synchronization mechanisms in parallel applications. Based on the intrinsic features of recent GPU architectures, the authors construct strong synchronization objects like wait-free and t-resilient read-modify-write objects for a general model of recent GPU architectures without strong hardware synchronization primitives like test-and-set and compare-and-swap. Accesses to the new wait-free objects have time complexity O(N), where N is the number of concurrent processes. The wait-free objects have space complexity O(N2), which is optimal. Our result demonstrates that it is possible to construct wait-free synchronization mechanisms for GPUs without the need of strong synchronization primitives in hardware and that wait-free programming is possible for GPUs. (Wait-free programming for general purpose computations on graphics processors. Phuong Hoai Ha, Philippas Tsigas, and Otto J. Anshus. ACM Symposium on Principles of Distributed Computing, 2008.)
This paper presents an application-oriented approach to block cipher processing on GPUs. A new block-based conventional implementation of AES on an Nvidia G80 is shown with 4-10x speed improvements over CPU implementations and 2-4x speed increase over the previous fastest AES GPU implementation. Presented also is a general purpose data structure for representing cryptographic client requests which is suitable for execution on a GPU. The issues related to the mapping of this general structure to the GPU are explored. Finally presented is the first analysis of the main encryption modes of operation on a GPU, showing the performance and behavioural implications of executing these modes under the outlined general-purpose data model. (Practical Symmetric Key Cryptography on Modern Graphics Hardware. Owen Harrison and John Waldron, 17th USENIX Security Symposium. 2008.)
This new report by Owens et al. is a comprehensive survey of the history and state of the art in GPGPU. It describes, summarizes and analyzes the latest research in mapping general-purpose computation to graphics hardware. The report begins with the technical motivations that underlie general-purpose computation on graphics processors (GPGPU) and describe the hardware and software developments that have led to the recent interest in this field. The authors describe the techniques used in mapping general-purpose computation to graphics hardware, and survey and categorize the latest developments in general-purpose application development on graphics hardware. (A Survey of General-Purpose Computation on Graphics Hardware, by John D. Owens, David Luebke, Naga Govindaraju, Mark Harris, Jens Krueger, Aaron E. Lefohn, Timothy J. Purcell. To appear in proceedings of Eurographics 2005, State of the Art Reports.)
According to an article on Extremetech.com , French company GPU-Tech has announced Ecolib, a series of C++ libraries for GPGPU which target both ATI and NVIDIA GPUs. A PDF describing the API is available. Their download page includes demo software with code samples and workstation CPU/GPU benchmarking tools.
The PGI 8.0 release from The Portland Group includes a technology preview of the PGI accelerator programming strategy. PGI 8.0 compilers accept new directives that allow users to select compute intensive regions of Linux x64 Fortran and C99 programs and automatically offload them to an NVIDIA GPU. Until now HPC developers targeting GPU accelerators have had to rely on libraries or language extensions, and use of GPUs from Fortran has been extremely limited. Using the provisional support in PGI Release 8.0, programmers can accelerate Linux applications on x64+NVIDIA platforms by adding OpenMP-like compiler directives to existing high-level standard- compliant Fortran and C99 programs. At Supercomputing 2008 you can see the PGI x64+GPU compilers in action, and learn about PGI's accelerator programming model and how you can use it to experiment with and embrace accelerated computing. You can also attend the PGI Vendor presentation by Michael Wolfe in room 19A/19B of the Austin convention center on Wednesday, November 19 from 10:30-11:00AM. Also, check out "Compilers and More: Programming GPUs Today" on HPCWire.
Typhoon Labs 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)
CAL.NET is an effort to create a library to allow existing .NET applications access ATI GPU hardware for computational and graphical purposes. Programmers are able to manage the GPU hardware and execute kernels on it transparently. It is currently supported on Windows and Linux platforms with the latest drivers. The latest release of CUDA.NET, 2.0.3, addresses issues with the previous release and adds many features including CUDA runtime API support and Direct3D/OpenGL interoperability. It is now possible to create hybrid applications with Tao and SlimDX, and an issue with copying vector data from device memory was fixed on Windows.
The OpenGL ARB and Graphic Remedy have crafted an Academic Program to make the full featured gDEBugger OpenGL debug toolkit available for use in your daily work and research - free of charge! gDEBugger is a powerful OpenGL and OpenGL ES debugger and profiler delivering one of the most intuitive OpenGL development toolkits available for graphics application developers. The ARB.Graphic Remedy Academic Program will run for one year during which time any OpenGL developer who is able to confirm they are in academia will receive an Academic gDEBugger License from Graphic Remedy at no cost. This license will be valid for one year and will include all gDEBugger software updates as they become available. Academic licensees may also optionally decide to purchase an annual support contract for the software at a reduced rate. For further information, visit: http://academic.gremedy.com and http://www.opengl.org/pipeline/article/vol001_3/".
The new gDEBugger V4.0 introduces gDEBugger Linux. This new exciting product adds 32-bit and 64-bit Linux Support, bringing all of gDEBugger's debugging and profiling abilities to the Linux OpenGL developers' world. A new Texture and Buffer Viewer has been added. This Viewer allows you to view textures, static buffers and pbuffers as images or raw data in its original format, including non-RGB data formats (float, depth, integer, luminance, etc). This version also includes significant performance improvements. gDEBugger, an OpenGL and OpenGL ES debugger and profiler, traces application activity on top of the OpenGL API to let programmers see what is happening within the graphics system implementation to find bugs and optimize OpenGL application performance. (http://www.gremedy.com)
Shader Maker is a simple, cross-platform GLSL editor. It works on Windows, Linux, and Mac OS X. Shader Maker provides the basics of a shader editor, such that students can get started with writing their own shaders as quickly as possible. This includes: syntax highlighting in the GLSL editors; vertex, fragment, and geometry shader editors; interactive editing of uniform variables; light source parameters; pre-defined simple shapes (e.g., torus); a simple OBJ loader; and more.( http://cg.in.tu-clausthal.de/publications.shtml#shader_maker )
GLIntercept is an OpenGL debugger/logger for shaders, images, and function calls. Version 0.42 adds improved support for runtime editing of GLSL shaders. This release also includes initial OpenGL 2.0 support for logging and creating frame buffer composition movies in order to visually inspect how a scene is created.
Graphic Remedy is proud to announce the upcoming release of gDEBugger for Mac OS X. This new product brings all of gDEBugger's Debugging and Profiling abilities to the Mac OpenGL developer's world. Using gDEBugger Mac will help OS X OpenGL developers optimize their application performance: find graphics pipeline bottlenecks, improve application graphics memory consumption, locate and remove redundant OpenGL calls and graphics memory leaks, and much more. Visit the gDebuggerMac home page to join the Beta Program, see screenshots and get more details.
gDEBugger, an OpenGL and OpenGL ES debugger and profiler, traces application activity on top of the OpenGL API, and lets programmers see what is happening within the graphics system implementation to find bugs and optimize OpenGL application performance. gDEBugger runs on Windows, Linux and Mac OS X operating systems.
CUDA.NET 2.1 has been released with support for the NVIDIA CUDA 2.1 API. This version supports DirectX 10 interoperability and the new JIT compilation API. The library is supported on Windows and Linux operating systems. (CUDA.NET)
The new gDEBugger V4.1 adds Geometry Shader Support and enables developers to view allocated geometry shader objects, shader source code and properties. It also allows the developer to Edit and Continue shaders “on the fly”. Support for the new ATI (AMD) driver performance metrics infrastructure has been added. This integration enables users to view ATI performance metrics such as hardware utilization, vertex wait for pixel, pixel wait for vertex, overdraw and more. These performance metrics together with gDEBugger’s Performance Analysis Toolbar provide a powerful solution for locating graphics system performance bottlenecks. gDEBugger, an OpenGL and OpenGL ES debugger and profiler, traces application activity on top of the OpenGL API, letting programmers see what is happening within the graphics system implementation to find bugs and optimize OpenGL application performance. gDEBugger runs on Microsoft Windows and Linux operating systems. (http://www.gremedy.com)
CUDA.NET is an effort by GASS to provide access to NVIDIA CUDA functionality through .NET applications. The library currently provides .NET bindings for CUDA functions, allowing programmers to use existing .NET applications as hosts for CUDA enabled devices, this way exposing a strong co-processor that can be used with .NET. The current distribution contains a .NET library that can be used from any .NET application and language, along with examples in C# and Python showing how to use the library. The API is very straightforward and compatible with the NVIDIA CUDA API available for C applications with few modifications to ease development and align with .NET standards. See the CUDA.NET home page for more details.
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.
Abstract: "The porting of two- and three-dimensional Euler solvers from a conventional CPU implementation to the novel target platform of the Graphics Processing Unit (GPU) is described. The motivation for such an effort is the impressive performance that GPUs offer: typically 10 times more floating point operations per second than a modern CPU, with over 100 processing cores and all at a very modest financial cost. Both codes were found to generate the same results on the GPU as the FORTRAN versions did on the CPU. The 2D solver ran up to 29 times quicker on the GPU than on the CPU; the 3D solver 16 times faster." (Tobias Brandvik and Graham Pullan, Acceleration of a 3D Euler Solver Using Commodity Graphics Hardware. 46th AIAA Aerospace Sciences Meeting and Exhibit. January, 2008.)
We almost didn't notice, but when the renewal notice for our domain arrived it pointed out that on August 1st, 2005 GPGPU.org turned 2 years old! To celebrate, we've added a wiki, and a few of the regulars on the forums have started The Official GPGPU FAQ. Give it a look. (Whadya know, the 1st was Phil Scott's birthday, too! Happy Birthday, Phil!)
The latest versions of Cycling '74s MAX/MSP/Jitter software packages provide a visual programming environment for new media with applications in GPU based stream processing, real-time video processing, volume visualization, and generic n-dimensional data analysis and signal processing. Jitter supports cascaded GLSL/Cg/ARB/NV shader programs with a streamlined render-to-texture interface, allowing fast prototyping of complex shader effects to be processed in a generic data flow network. (Jitter v1.5 Upgrade Info. Cycling '74.)
On November 14th, 2002 Mark Harris created a web page on his personal site at the University of North Carolina to track the nascent research area of general-purpose computation on GPUs, naming it "GPGPU". A year later that web page became GPGPU.org. GPGPU became an exciting research area, and GPUs are now being used in the "real world" of science, engineering, and business. You can see the original GPGPU web page (November 20, 2002) here, and an early version after it became GPGPU.org (August 6, 2003).
We'd like to thank everone who has contributed news, forum posts, and other content for GPGPU.org; this site would not exist without you. We encourage everyone to submit any and all GPGPU-related news using the "submit news" link in the sidebar. GPGPU.org depends on user-submitted news for its continued success!