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...

Full description

Bibliographic Details
Main Author: Isohanni, Jari
Other Authors: Informaatioteknologian tiedekunta, Faculty of Information Technology, Tietotekniikan laitos, Department of Mathematical Information Technology, University of Jyväskylä, Jyväskylän yliopisto
Format: Master's thesis
Language:fin
Published: 2013
Subjects:
Online Access: https://jyx.jyu.fi/handle/123456789/42521
_version_ 1826225744583327744
author Isohanni, Jari
author2 Informaatioteknologian tiedekunta Faculty of Information Technology Tietotekniikan laitos Department of Mathematical Information Technology University of Jyväskylä Jyväskylän yliopisto
author_facet Isohanni, Jari Informaatioteknologian tiedekunta Faculty of Information Technology Tietotekniikan laitos Department of Mathematical Information Technology University of Jyväskylä Jyväskylän yliopisto Isohanni, Jari Informaatioteknologian tiedekunta Faculty of Information Technology Tietotekniikan laitos Department of Mathematical Information Technology University of Jyväskylä Jyväskylän yliopisto
author_sort Isohanni, Jari
datasource_str_mv jyx
description 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.
first_indexed 2023-03-22T09:59:39Z
format Pro gradu
free_online_boolean 1
fullrecord [{"key": "dc.contributor.author", "value": "Isohanni, Jari", "language": null, "element": "contributor", "qualifier": "author", "schema": "dc"}, {"key": "dc.date.accessioned", "value": "2013-11-26T12:31:15Z", "language": null, "element": "date", "qualifier": "accessioned", "schema": "dc"}, {"key": "dc.date.available", "value": "2013-11-26T12:31:15Z", "language": null, "element": "date", "qualifier": "available", "schema": "dc"}, {"key": "dc.date.issued", "value": "2013", "language": null, "element": "date", "qualifier": "issued", "schema": "dc"}, {"key": "dc.identifier.other", "value": "oai:jykdok.linneanet.fi:1288006", "language": null, "element": "identifier", "qualifier": "other", "schema": "dc"}, {"key": "dc.identifier.uri", "value": "https://jyx.jyu.fi/handle/123456789/42521", "language": null, "element": "identifier", "qualifier": "uri", "schema": "dc"}, {"key": "dc.description.abstract", "value": "N\u00e4yt\u00f6nohjaimet, grafiikkasuorittimet, tarjoavat rinnakkaisen laskennan alustan,\njossa voidaan suorittaa ohjelmakoodia satojen ydinten toimesta. T\u00e4m\u00e4 alusta mahdollistaa\nmatemaattisesti ty\u00f6l\u00e4iden ongelmien ratkaisemisen tehokkaasti. Grafiikkasuorittimen\nrinnakkainen suoritusymp\u00e4rist\u00f6 kuitenkin eroaa suuresti tietokoneen suorittimen per\u00e4kk\u00e4isest\u00e4\nsuoritusymp\u00e4rist\u00f6st\u00e4. Ongelmien ratkaisemiseksi tehokkaasti rinnakkaisymp\u00e4rist\u00f6ss\u00e4\non noudettava ohjelmointimenetelmi\u00e4, jotka soveltuvat erityisesti rinnakkaisymp\u00e4rist\u00f6\u00f6n.\nT\u00e4ss\u00e4 ty\u00f6ss\u00e4 tarkastellaan rinnakkaisen laskennan perusteita, miten erilaiset ohjelmointimenetelm\u00e4t\nvaikuttavat ohjelman suoriutumiseen grafiikkasuorittimella sek\u00e4 miten voidaan\nsaavuttaa nopein mahdollinen suoritusaika ohjelmalle grafiikkasuorittimella. Ty\u00f6ss\u00e4 laadittiin\nteoreettinen parametroitu malli grafiikkasuorittimen laskenta-ajan arviointiin. Lis\u00e4ksi\ntoteutettiin kaksi erilaista matriisikertolaskuja suorittavaa rinnakkaisen laskennan ohjelmaa.\nTy\u00f6n tuloksissa verrataan teoreettista suoritusaika-arviota k\u00e4yt\u00e4nn\u00f6ss\u00e4 saavutettuihin\ntuloksiin sek\u00e4 esitet\u00e4\u00e4n grafiikkasuorittimella suoritettavilla ohjelmilla saavutettuja nopeutuksia\neri parametriarvoilla.", "language": "fi", "element": "description", "qualifier": "abstract", "schema": "dc"}, {"key": "dc.description.abstract", "value": "Graphics processing units offer platform that consist of hundreds of cores for\nprograms to use in parallel computing. This platform can be used to solve efficiently mathematically\nheavy 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.", "language": "en", "element": "description", "qualifier": "abstract", "schema": "dc"}, {"key": "dc.description.provenance", "value": "Submitted using Plone Publishing form by Jari Isohanni (jaanisoh) on 2013-11-26 12:31:14.734042. Form: Pro gradu -lomake (1 tekij\u00e4) (https://kirjasto.jyu.fi/julkaisut/julkaisulomakkeet/pro-gradu-lomake-1-tekijae). JyX data:", "language": "en", "element": "description", "qualifier": "provenance", "schema": "dc"}, {"key": "dc.description.provenance", "value": "Submitted by jyx lomake-julkaisija (jyx-julkaisija@noreply.fi) on 2013-11-26T12:31:15Z\nNo. of bitstreams: 2\nURN:NBN:fi:jyu-201311262661.pdf: 1668467 bytes, checksum: 43bb4f54e76be49adbc9360e5b599675 (MD5)\nlicense.html: 4861 bytes, checksum: 84d46527299e42f3530dfda5c30d8c81 (MD5)", "language": "en", "element": "description", "qualifier": "provenance", "schema": "dc"}, {"key": "dc.description.provenance", "value": "Made available in DSpace on 2013-11-26T12:31:15Z (GMT). No. of bitstreams: 2\nURN:NBN:fi:jyu-201311262661.pdf: 1668467 bytes, checksum: 43bb4f54e76be49adbc9360e5b599675 (MD5)\nlicense.html: 4861 bytes, checksum: 84d46527299e42f3530dfda5c30d8c81 (MD5)\n Previous issue date: 2013", "language": "en", "element": "description", "qualifier": "provenance", "schema": "dc"}, {"key": "dc.format.extent", "value": "1 verkkoaineisto.", "language": null, "element": "format", "qualifier": "extent", "schema": "dc"}, {"key": "dc.format.mimetype", "value": "application/pdf", "language": null, "element": "format", "qualifier": "mimetype", "schema": "dc"}, {"key": "dc.language.iso", "value": "fin", "language": null, "element": "language", "qualifier": "iso", "schema": "dc"}, {"key": "dc.rights", "value": "In Copyright", "language": "en", "element": "rights", "qualifier": null, "schema": "dc"}, {"key": "dc.subject.other", "value": "Grafiikkasuoritin", "language": "", "element": "subject", "qualifier": "other", "schema": "dc"}, {"key": "dc.subject.other", "value": "n\u00e4yt\u00f6nohjain", "language": "", "element": "subject", "qualifier": "other", "schema": "dc"}, {"key": "dc.subject.other", "value": "CUDA", "language": "", "element": "subject", "qualifier": "other", "schema": "dc"}, {"key": "dc.subject.other", "value": "GPU", "language": "", "element": "subject", "qualifier": "other", "schema": "dc"}, {"key": "dc.subject.other", "value": "optimointi", "language": "", "element": "subject", "qualifier": "other", "schema": "dc"}, {"key": "dc.subject.other", "value": "rinnakkainen laskenta", "language": "", "element": "subject", "qualifier": "other", "schema": "dc"}, {"key": "dc.subject.other", "value": "Graphics processing unit", "language": "", "element": "subject", "qualifier": "other", "schema": "dc"}, {"key": "dc.subject.other", "value": "GPU", "language": "", "element": "subject", "qualifier": "other", "schema": "dc"}, {"key": "dc.subject.other", "value": "CUDA", "language": "", "element": "subject", "qualifier": "other", "schema": "dc"}, {"key": "dc.subject.other", "value": "optimization", "language": "", "element": "subject", "qualifier": "other", "schema": "dc"}, {"key": "dc.subject.other", "value": "parallel computing", "language": "", "element": "subject", "qualifier": "other", "schema": "dc"}, {"key": "dc.title", "value": "GPU-laskennan optimointi", "language": null, "element": "title", "qualifier": null, "schema": "dc"}, {"key": "dc.type", "value": "master thesis", "language": null, "element": "type", "qualifier": null, "schema": "dc"}, {"key": "dc.identifier.urn", "value": "URN:NBN:fi:jyu-201311262661", "language": null, "element": "identifier", "qualifier": "urn", "schema": "dc"}, {"key": "dc.type.ontasot", "value": "Pro gradu -tutkielma", "language": "fi", "element": "type", "qualifier": "ontasot", "schema": "dc"}, {"key": "dc.type.ontasot", "value": "Master\u2019s thesis", "language": "en", "element": "type", "qualifier": "ontasot", "schema": "dc"}, {"key": "dc.contributor.faculty", "value": "Informaatioteknologian tiedekunta", "language": "fi", "element": "contributor", "qualifier": "faculty", "schema": "dc"}, {"key": "dc.contributor.faculty", "value": "Faculty of Information Technology", "language": "en", "element": "contributor", "qualifier": "faculty", "schema": "dc"}, {"key": "dc.contributor.department", "value": "Tietotekniikan laitos", "language": "fi", "element": "contributor", "qualifier": "department", "schema": "dc"}, {"key": "dc.contributor.department", "value": "Department of Mathematical Information Technology", "language": "en", "element": "contributor", "qualifier": "department", "schema": "dc"}, {"key": "dc.contributor.organization", "value": "University of Jyv\u00e4skyl\u00e4", "language": "en", "element": "contributor", "qualifier": "organization", "schema": "dc"}, {"key": "dc.contributor.organization", "value": "Jyv\u00e4skyl\u00e4n yliopisto", "language": "fi", "element": "contributor", "qualifier": "organization", "schema": "dc"}, {"key": "dc.subject.discipline", "value": "Tietotekniikka", "language": "fi", "element": "subject", "qualifier": "discipline", "schema": "dc"}, {"key": "dc.subject.discipline", "value": "Mathematical Information Technology", "language": "en", "element": "subject", "qualifier": "discipline", "schema": "dc"}, {"key": "dc.date.updated", "value": "2013-11-26T12:31:16Z", "language": null, "element": "date", "qualifier": "updated", "schema": "dc"}, {"key": "dc.type.coar", "value": "http://purl.org/coar/resource_type/c_bdcc", "language": null, "element": "type", "qualifier": "coar", "schema": "dc"}, {"key": "dc.rights.accesslevel", "value": "openAccess", "language": "fi", "element": "rights", "qualifier": "accesslevel", "schema": "dc"}, {"key": "dc.type.publication", "value": "masterThesis", "language": null, "element": "type", "qualifier": "publication", "schema": "dc"}, {"key": "dc.subject.oppiainekoodi", "value": "602", "language": null, "element": "subject", "qualifier": "oppiainekoodi", "schema": "dc"}, {"key": "dc.subject.yso", "value": "n\u00e4yt\u00f6nohjaimet", "language": null, "element": "subject", "qualifier": "yso", "schema": "dc"}, {"key": "dc.subject.yso", "value": "optimointi", "language": null, "element": "subject", "qualifier": "yso", "schema": "dc"}, {"key": "dc.subject.yso", "value": "ohjelmointi", "language": null, "element": "subject", "qualifier": "yso", "schema": "dc"}, {"key": "dc.format.content", "value": "fulltext", "language": null, "element": "format", "qualifier": "content", "schema": "dc"}, {"key": "dc.rights.url", "value": "https://rightsstatements.org/page/InC/1.0/", "language": null, "element": "rights", "qualifier": "url", "schema": "dc"}, {"key": "dc.type.okm", "value": "G2", "language": null, "element": "type", "qualifier": "okm", "schema": "dc"}]
id jyx.123456789_42521
language fin
last_indexed 2025-02-18T10:55:38Z
main_date 2013-01-01T00:00:00Z
main_date_str 2013
online_boolean 1
online_urls_str_mv {"url":"https:\/\/jyx.jyu.fi\/bitstreams\/19b0586d-0837-4ee5-ad96-f4a87cdf0623\/download","text":"URN:NBN:fi:jyu-201311262661.pdf","source":"jyx","mediaType":"application\/pdf"}
publishDate 2013
record_format qdc
source_str_mv jyx
spellingShingle Isohanni, Jari GPU-laskennan optimointi Grafiikkasuoritin näytönohjain CUDA GPU optimointi rinnakkainen laskenta Graphics processing unit optimization parallel computing Tietotekniikka Mathematical Information Technology 602 näytönohjaimet ohjelmointi
title GPU-laskennan optimointi
title_full GPU-laskennan optimointi
title_fullStr GPU-laskennan optimointi GPU-laskennan optimointi
title_full_unstemmed GPU-laskennan optimointi GPU-laskennan optimointi
title_short GPU-laskennan optimointi
title_sort gpu laskennan optimointi
title_txtP GPU-laskennan optimointi
topic Grafiikkasuoritin näytönohjain CUDA GPU optimointi rinnakkainen laskenta Graphics processing unit optimization parallel computing Tietotekniikka Mathematical Information Technology 602 näytönohjaimet ohjelmointi
topic_facet 602 CUDA GPU Grafiikkasuoritin Graphics processing unit Mathematical Information Technology Tietotekniikka näytönohjaimet näytönohjain ohjelmointi optimization optimointi parallel computing rinnakkainen laskenta
url https://jyx.jyu.fi/handle/123456789/42521 http://www.urn.fi/URN:NBN:fi:jyu-201311262661
work_keys_str_mv AT isohannijari gpulaskennanoptimointi