John Karlsson, Lars Löfquist

Användande av GPU med OpenCL för simulering av flockbeteende

Sammanfattning

Dagens datorer går mot allt fler processorkärnor både i CPU och GPU. Användning av GPU:n för annat än grafikberäkningar benämns med GPGPU. För att utnyttja denna krävs ett GPGPU-språk där denna rapport visar användandet av OpenCL. Detta kopplas samman med Java genom biblioteket JavaCL. I rapporten tas även skillnader med att skriva en Boids-algoritm i Java och att att utnyttja OpenCL via JavaCL för samma Boids-algoritm, och vilka prestandavinster detta ger vid olika populationsmängder. Testresultaten visar att på den aktuella testmaskinen var renderingshastigheten vid 512 Boids cirka 2,5 gånger högre för GPU:n än för CPU:n, och vid 1024 Boids är den cirka 10 gånger högre. Slutsaten är att GPU-implementeringen kan hantera cirka 4 gånger fler Boids. Utvärdering görs även av hur pass komplicerat det är för en programmerare, utan tidigare erfarenhet av GPGPU-programmering, att implementera JavaCL-lösningen. Detta visade sig inte ha någon stor instegströskel för programmeringen, och det gick lätt att skriva kod, tack vare att OpenCL ligger på en lagom abstraktionsnivå.