GPU-laskennan optimointi

Näytönohjaimet, grafiikkasuorittimet, tarjoavat rinnakkaisen laskennan alustan, jossa voidaan suorittaa ohjelmakoodia satojen ydinten toimesta. Tämä alusta mahdollistaa matemaattisesti työläiden ongelmien ratkaisemisen tehokkaasti. Grafiikkasuorittimen rinnakkainen suoritusympäristö kuitenkin eroaa...

Täydet tiedot

Bibliografiset tiedot
Päätekijä: Isohanni, Jari
Muut tekijät: Informaatioteknologian tiedekunta, Faculty of Information Technology, Tietotekniikan laitos, Department of Mathematical Information Technology, University of Jyväskylä, Jyväskylän yliopisto
Aineistotyyppi: Pro gradu
Kieli:fin
Julkaistu: 2013
Aiheet:
Linkit: https://jyx.jyu.fi/handle/123456789/42521
Kuvaus
Yhteenveto:Näytönohjaimet, grafiikkasuorittimet, tarjoavat rinnakkaisen laskennan alustan, jossa voidaan suorittaa ohjelmakoodia satojen ydinten toimesta. Tämä alusta mahdollistaa matemaattisesti työläiden ongelmien ratkaisemisen tehokkaasti. Grafiikkasuorittimen rinnakkainen suoritusympäristö kuitenkin eroaa suuresti tietokoneen suorittimen peräkkäisestä suoritusympäristöstä. Ongelmien ratkaisemiseksi tehokkaasti rinnakkaisympäristössä on noudettava ohjelmointimenetelmiä, jotka soveltuvat erityisesti rinnakkaisympäristöön. Tässä työssä tarkastellaan rinnakkaisen laskennan perusteita, miten erilaiset ohjelmointimenetelmät vaikuttavat ohjelman suoriutumiseen grafiikkasuorittimella sekä miten voidaan saavuttaa nopein mahdollinen suoritusaika ohjelmalle grafiikkasuorittimella. Työssä laadittiin teoreettinen parametroitu malli grafiikkasuorittimen laskenta-ajan arviointiin. Lisäksi toteutettiin kaksi erilaista matriisikertolaskuja suorittavaa rinnakkaisen laskennan ohjelmaa. Työn tuloksissa verrataan teoreettista suoritusaika-arviota käytännössä saavutettuihin tuloksiin sekä esitetään grafiikkasuorittimella suoritettavilla ohjelmilla saavutettuja nopeutuksia eri parametriarvoilla. Graphics processing units offer platform that consist of hundreds of cores for programs to use in parallel computing. This platform can be used to solve efficiently mathematically heavy problems. Running programs in parallel computing environment differs from running programs in serial environment. In order to achieve speedup from parallel environment, programmer must use programming methods suitable to parallel environment. In this work we explain some basics of parallel computing and examine how pro-gramming and optimization practices affect programs running in graphics processing unit. We also created our own theoretical parameterized model which is used to estimate performance of our GPU-programs. Our model is used to estimate performance of two different matrix multiplication programs, which are run in parallel environment. In results we compare theoretical performance values, calculated by using our own model, to ones measured in real run environment. Also we present how different parameters affect to gained speedup when using our GPU-programs.