BrookGPU

BrookGPU

BrookGPU is the Stanford University Graphics group's compiler and runtime implementation of the Brook stream programming language for using modern graphics hardware for non-graphical, or general purpose computations. Use of Graphics Processing Unit (or GPU) for doing non-graphical or general purpose calculations is also abbreviated as GPGPU, or General Purpose Graphics Processing Unit. It can be used to program a graphics processing unit such as those found on ATI or nVidia graphics cards or increasingly Intel's integrated graphics solutions, which are highly parallel in execution.

BrookGPU compiles programs written using Brook stream programming language, which is a variant of ANSI C. It can use OpenGL v1.3+, DirectX v9+ or AMD's Close to Metal for the computational backend and runs on both Microsoft Windows, Linux and possibly Mac OS X. It can also simulate a virtual graphics card by itself via a special CPU backend which is useful for debugging Brook kernels.

Unlike most increasingly proprietary GPGPU frameworks nowadays available, Brook is licensed under the BSD license (parts are under the GPL license) and is free software. This makes it ideal for students interested in GPGPU programming without having to delve into OpenGL or DirectX implementation details.

tatus

Brook has been in beta for a long time. The last major beta release (v0.4) was all the way back in October 2004 but renewed development has begun again in November 2007 with a v0.5 beta 1 release.

The new features of v0.5 include a much upgraded & faster OpenGL backend which uses framebuffer objects instead of PBuffers and harmonised the code around standard OpenGL interfaces instead of using proprietary vendor extensions. GLSL support was added which brings all the functionality (complex branching and loops) previously only supported by DX9 to OpenGL. In particular, this means that Brook is now just as capable on Linux as Windows.

Other improvements in the v0.5 series include multi-backend usage whereby different threads can run different Brook programs concurrently (this allows a multi-GPU setup to be maxed out) and SSE and OpenMP support for the CPU backend (this allows near maximal usage of modern CPU's).

Later versions will include Brook+, a version supporting integer and double precision processing for AMD (and possibly NVidia) GPU's, possibly with scatter support.

Performance Comparison

A like for like comparison between desktop CPUs and GPGPU's is problematic because of algorithmic & structural differences.

To explain, a 2.66 GHz Intel Core 2 Duo can perform a maximum of 25 GFLOPs (25 billion single precision floating point operations per second) if optimally using SSE and streaming memory access so the prefetcher works perfectly. However, traditionally (due to shader program length limits) most GPGPU kernels tend to perform relatively small amounts of work on large amounts of data in parallel, so the big problem with directly executing GPGPU algorithms on desktop CPUs is vastly lower memory bandwidth as generally speaking the CPU spends most of its time waiting on RAM. As an example, dual channel PC2-6400 DDR2 RAM can throughput about 11Gb/sec which is around 1.5 GFLOPs maximum given that there is a total of 3 GFLOPs total bandwidth and one must both read and write. As a result, if memory bandwidth constrained, Brook's CPU backend won't exceed 2 GFLOPs. In practice, it's even lower than that most especially for anything other than float4 which is the only data type which can be SSE accelerated.

On an ATI HD 2900 XT (740 MHz core 1000 MHz memory), Brook can perform a maximum of 410 GFLOPs via its DX9 backend. OpenGL is currently (due to driver and Cg compiler limitations) much less efficient as a GPGPU backend and Brook can only manage 210 GFLOPs via OpenGL. On paper, this looks like around twenty times faster, but as just explained it isn't as easy as that. GPU's currently have major branch and read/write access penalties so expect a reasonable maximum of one third of the peak maximum in real world code - this still leaves that ATI card at around 125 GFLOPs some five times faster than the Intel Core 2 Duo.

However this discounts the important part of transferring the data to be processed to and from the GPU. With a PCI Express 1.0 x8 interface, the memory of an ATI HD 2900 XT can be written to at about 730Mb/sec and read from at about 311Mb/sec which is significantly slower than normal PC memory. For large datasets, this can greatly diminish the speed increase of using a GPU over a well tuned CPU implementation. Of course, as GPU's become faster far more quickly than CPUs and the PCI Express interface improves, it will make more sense to offload large processing to GPU's.

Applications and games that use BrookGPU

* "Folding@home"

ee also

*GPGPU
*CUDA
*Close to Metal
*OpenCL
*Lib Sh

External links

* [http://graphics.stanford.edu/projects/brookgpu/ Official BrookGPU website] - Stanford University's BrookGPU website
* [http://www.sf.net/projects/brook/ Link to download BrookGPU package]
* [http://www.gpgpu.org/ GPGPU] General Purpose computation using GPUs, a common use of BrookGPU.
* [http://ati.amd.com/technology/streamcomputing/AMD-Brookplus.pdf] AMD Brook+ Presentation (.pdf).


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Look at other dictionaries:

  • BrookGPU — Saltar a navegación, búsqueda BrookGPU http://graphics.stanford.edu/projects/brookgpu/ Información general Última versión estable v0.5 Beta 1 Realase …   Wikipedia Español

  • GPGPU — o General Purpose Computing on Graphics Processing Units es un concepto reciente dentro de informática que trata de estudiar y aprovechar las capacidades de cómputo de una GPU. Una GPU es un procesador diseñado para los cómputos implicados en la… …   Wikipedia Español

  • Parallel computing — Programming paradigms Agent oriented Automata based Component based Flow based Pipelined Concatenative Concurrent computing …   Wikipedia

  • Brook — A brook is a small stream. The word may also refer to:Places*In the United Kingdom: **Brook, Carmarthenshire **Brook, Hampshire, to the north of Romsey **Brook, Isle of Wight **Brook, Kent **Brook, New Forest, Hampshire, in the New Forest **Brook …   Wikipedia

  • Folding@home — Original author(s) Vijay Pande Developer(s) Stanford University / Pande lab Initial release 2000 10 01 …   Wikipedia

  • GPGPU — General purpose computing on graphics processing units (GPGPU, also referred to as GPGP and to a lesser extent GP²) is the technique of using a GPU, which typically handles computation only for computer graphics, to perform computation in… …   Wikipedia

  • Lib Sh — is a metaprogramming language for programmable GPUs. Programmable GPUs are graphics processing units which allow almost arbitrary effects to be executed with extreme efficiency in the GPU rather than the CPU. In practice, this offloads a lot of… …   Wikipedia

  • CUDA — Developer(s) Nvidia Corporation Stable release 4.0 / May 17 2011; 6 months ago (May 17 2011) Operating system Windows XP and later Mac OS X Linux …   Wikipedia

  • Close to Metal — ( CTM in short, originally called Close to the Metal) is the name of a beta version of a low level programming interface developed by ATI (now AMD Graphics Products Group), aimed at enabling GPGPU computing. CTM was short lived, and the first… …   Wikipedia

  • OpenCL — This article is about the parallel computing library. For the cryptographic library formerly named OpenCL, see Botan (programming library). OpenCL Original author(s) Apple Inc. Developer(s) Khronos Group …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”