Mattias Svanström <msvan@kth.se>
Simon Hössjer <shossjer@kth.se>

Algoritmkonstruktion för GPGPU

Sammanfattning

Idag har alla persondatorer och nästan alla arbetsrelaterade datorer en GPU kraftig nog att utnyttjas som en extra beräkningsenhet. Ett ramverk som möjliggör utnyttjandet av detta kallas OpenCL. Vi ställde oss frågan hur man skriver effektiva algoritmer till dessa GPGPU-enheter. Vi fann att det finns två sätt i huvudsak att köra kod parallellt på, data- samt uppgiftsparallellt. Körtiden av en algoritm beror snarare på andelen kod som kan köras parallellt än antalet processorelemet som finns tillgängliga på enheten. Vi bestämde oss för att testa teorin genom att implementera parallella algoritmer för matrismultiplikation och sortering av heltal med radix sort. Resultaten av testerna kan summeras till både bra och dåliga. Trots att det finns lovande vinst i prestanda så finns också faktorer som minnesåtkomster som inte alltid är lätt att kontrollera.