General purpose computing on graphics processing units using OpenCL - Motion detection using NVIDIA Fermi and the OpenCL programming framework

Typ
Examensarbete för masterexamen
Master Thesis
Program
Publicerad
2010
Författare
Johansson, Mats
Winter, Oscar
Modellbyggare
Tidskriftstitel
ISSN
Volymtitel
Utgivare
Sammanfattning
Generella beräkningar med hjälp av grafikprocessorer (General-Purpose computation using Graphics Processing Units, GPGPU) har varit ett aktivt forskningsområde under många år. Stora framsteg har gjorts under 2009 och 2010 i och med lanseringen av programmeringsramverket Open Computing Language (OpenCL) och NVIDIAs nya GPU-arkitektur Fermi. Denna tes utforskar hårdvaruarkitekturen hos tre grafikprocessorer och hur väl de är anpassade för generella beräkningar; NVIDIA Geforce 8800 (G80-arkitekturen) utgivet 2006, AMD Radeon 4870 (RV700-arkitekturen) utgivet 2008 och NVIDIA Geforce GTX 480 (Fermi-arkitekturen) utgivet 2010. Stort fokus läggs på Fermi och de GPGPU-relaterade förbättringar som gjorts på denna arkitektur jämfört med tidigare generationer. Ramverket OpenCL och den relativa påverkan hos flertalet olika optimeringar av en parallell applikation har utvärderats genom att implementera Lukas-Kanades algoritm för uppskattning av optiskt flöde. RV700-arkitekturen är ej lämpad för generella beräkningar. Prestandan hos G80-arkitekturen är utmärkt trots dess relativa ålder. Mycket möda måste dock tillägnas G80-specifika optimeringar av den parallella applikationen för att kunna uppnå högsta möjliga prestanda. Fermi är överlägsen i alla aspekter av GPGPU. Fermis nya minneshierarki tillåter att generella beräkningar utförs både lättare och snabbare än tidigare. På samma gång är Fermis prestanda mycket högre än hos de två andra arkitekturerna och detta redan innan några hårdvaruspecifika optimeringar gjorts. Programmeringsramverket OpenCL är ett stabilt och kompetent ramverk väl anpassat för GPGPU-projekt som kan dra nytta av den ökade flexibiliteten av mjuk- och hårdvaruoberoende. Om prestanda är viktigare än flexibilitet kan dock NVIDIAs Compute Unified Device Architecture (CUDA) eller AMDs ATI Stream vara bättre alternativ. Abstract: General-Purpose computing using Graphics Processing Units (GPGPU) has been an area of active research for many years. During 2009 and 2010 much has happened in the GPGPU research field with the release of the Open Computing Language (OpenCL) programming framework and the new NVIDIA Fermi Graphics Processing Unit (GPU) architecture. This thesis explores the hardware architectures of three GPUs and how well they support general computations; the NVIDIA Geforce 8800 GTS (the G80 architecture) from 2006, the AMD Radeon 4870 (the RV700 architecture) from 2008 and the NVIDIA Geforce GTX 480 (the Fermi architecture) from 2010. Special concern is given to the new Fermi architecture and the GPGPU related improvements implemented in this architecture. The Lukas-Kanade algorithm for optical flow estimation has been implemented in OpenCL to evaluate the framework and the impact of several different parallel application optimizations. The RV700 architecture is not well suited for GPGPU. The performance of the G80 architecture is very good taking its relative age into account. However, much effort must be spent optimizing a parallel application for the G80 before full performance is obtained, a task that can be quite tedious. Fermi excels in all aspects of GPGPU programming. Fermi’s performance is much higher than that of the RV700 and the G80 architectures and its new memory hierarchy makes GPGPU programming easier than ever before. OpenCL is a stable and competent framework well suited for any GPGPU project that would benefit from the increased flexibility of software and hardware platform independence. However, if performance is more important than flexibility, NVIDIA’s Compute Unified Device Architecture (CUDA) or AMD’s ATI Stream might be better alternatives.
Beskrivning
Ämne/nyckelord
Datalogi , Datorteknik , Computer science , Computer Engineering
Citation
Arkitekt (konstruktör)
Geografisk plats
Byggnad (typ)
Byggår
Modelltyp
Skala
Teknik / material
Index