AAU Student Projects - visit Aalborg University's student projects portal
A master's thesis from Aalborg University
Book cover


The Art of GPGPU

Authors

; ;

Term

3. term

Education

Publication year

2011

Submitted on

Pages

117

Abstract

Denne afhandling undersøger generel beregning på grafikkort (GPGPU) og formidler de praktiske erfaringer, vi har gjort os. Først gennemgår vi forskellene mellem GPU'er og CPU'er og beskriver G80-chiparkitekturen på de Tesla-kort, vi havde til rådighed. Vi ser dernæst nærmere på tre GPGPU-programmeringssprog—CUDA, OpenCL og BrookGPU—bemærker, at vores Tesla-hardware understøtter CUDA og OpenCL, og identificerer værktøjer, der kan hjælpe udviklingen. I udviklingsdelen implementerer vi to GPU-accelererede applikationer: en raytracer i CUDA og en Boids-flokningssimulation ved hjælp af OpenCL og Brook+. Vi udfører benchmarks og diskuterer resultaterne. Overordnet finder vi, at GPU'er er stærke medprocessorer, men at høj ydeevne kræver omhyggelig programmering og hensyn til flere faktorer. Til sidst sammenligner vi de tre sprog ud fra en række kriterier. Sammenligningen peger på, at CUDA er det mest fleksible og mest modne miljø, mens OpenCL hurtigt vinder udbredelse inden for GPGPU.

This thesis examines general-purpose computing on graphics processing units (GPGPU) and reports on the practical insights we gained. We first outline how GPUs differ from CPUs and describe the G80 chip architecture used in the Tesla cards available to us. We then take a closer look at three GPGPU programming languages—CUDA, OpenCL, and BrookGPU—note that our Tesla hardware supports CUDA and OpenCL, and identify tools that assist development with them. In the development part, we implement two GPU-accelerated applications: a ray tracer in CUDA and a Boids flocking simulation using OpenCL and Brook+. We run benchmarks and discuss the results. Overall, we find that GPUs are powerful co-processors, but achieving high performance requires careful programming and attention to several factors. Finally, we compare the three languages against multiple criteria. Our comparison indicates that CUDA offers the most expressive and mature environment, while OpenCL is rapidly gaining popularity in the GPGPU field.

[This abstract was generated with the help of AI]

Keywords