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