Download GPU computations in heterogeneous grid

Transcript
2.2
Frameworks
At the end of 1990s graphics cards had fixed vertex shader and pixel shader pipelines
that could not be programmed [1]. This changed however with the release of DirectX 8 and the OpenGL vertex shader extension in 2001. Pixel shader programming
capabilities followed a year later with DirectX 9. Programmers could now write their
own vertex shader, geometry shader and pixel shader programs. The vertex shader
programs mapped vertices, i.e. points, into a two dimensional or three dimensional
space, while geometry shader programs operated on geometric objects defined by several vertices. The pixel shader programs calculate the color or shade of the pixels. At
this time programmers that wanted to utilize the massively parallel processing power
of their graphics cards to express their general purpose computations in terms of textures, vertices and shader programs . This was not particularly easy nor flexible and in
November 2006 both Nvidia and ATI released their proprietary frameworks specifically aimed for GPU computing. Nvidia named its framework Compute Unified Device
Architecture (CUDA) [13]. The CUDA framework is still today under active development and used in the majority of GPU computations. Besides the OpenCL API,
CUDA supports four other APIs: CUDA C, CUDA driver API, DirectCompute and
CUDA Fortran. CUDA C and CUDA driver APIs are based upon the C programming
language. DirectCompute is an extension of graphics API DirectX and CUDA Fortran
is a Fortran based API developed as a joint effort by Nvidia and the Portland Group.
ATI’s framework was called Close-to-the-metal (CTM) which gave low-level access
to the graphics card hardware [14]. The CTM framework later became the Compute
Abstract Layer (CAL). In 2007 ATI introduced a high-level C-based framework called
ATI Brook+ which was based upon the BrookGPU framework developed by Stanford
University. The BrookGPU framework was a layer built on top of graphics APIs such
as OpenGL and DirectX, to provide the programmers high-level access to the graphics hardware and was thus the first none-proprietary GPU computing framework. ATI
Brook+ however used CTM to access the underlying hardware.
In 2008 both Nvidia and AMD joined the Khronos group in order to participate
in the development of an industry standard for hybrid computing. The proposal for
the royalty free Open Computing Language (OpenCL) standard was made by Apple
Inc. and version 1.0 of the OpenCL standard was ratified in December 2008 and is
the only industry standard for hybrid computing to date. OpenCL version 1.1 was
released in August 2010. In this thesis GPU Computing is discussed from the OpenCL
6