Matlab-ohjelmakoodin vektorisointi ja rinnakkaistaminen Python-toteutuksena

dc.contributor.authorJärvinen, Jarkko
dc.contributor.departmentfi=Tietotekniikan laitos|en=Department of Computing|
dc.contributor.facultyfi=Teknillinen tiedekunta|en=Faculty of Technology|
dc.contributor.studysubjectfi=Tietotekniikka|en=Information and Communication Technology|
dc.date.accessioned2022-10-03T21:01:55Z
dc.date.available2022-10-03T21:01:55Z
dc.date.issued2022-09-19
dc.description.abstractTutkimus käsittelee Matlab-ohjelmointikielellä toteutetun konseptitoteutuksen ohjelmointikielen vaihtoprosessia Python-kielelle. Toteutuksen avulla tutkitaan maanpinnan muotoja pienessä mittakaavassa. Tavoitteena on tarjota toteutus palveluna tai yleiskäyttöisenä kirjastona helposti ylläpidettävänä kokonaisuutena, nopeampana ja skaalautuvana käyttäen vektorisointia, rinnakkaistamista ja moniydinprosessointia. Tutkimuskysymyksinä käsitellään ohjelmistokielten numeeristen ja operationaalisten erojen huomiointia toteutuksessa, rinnakkaistamisen ratkaisumalleja ja ohjelmistokielen vaihtoprosessin onnistumisen validointia. Taustatutkimuksen aikana esitellään prosessit ja säikeet sekä niiden luomiseen liittyviä yleisiä käytänteitä, rinnakkaisuuteen liittyviä tekniikoita, haasteita ja niihin liittyviä kommunikointi- ja synkronointiratkaisumalleja, silmukoiden yleisiä vektorisointikäytäntöjä, matriisien indeksointi-, viipalointi- ja ikkunointitapoja Python-koodissa. Toteutusosiossa kuvataan ohjelmointikielen vaihtoprosessi käyttäen yksikkötestejä Matlab-toteutuksesta kerätyn testitiedon avulla, vaihtoprosessissa kohdattuja toteutushaasteita ja niissä käytettyjä ratkaisuja, ohjelmakoodin optimointikeinoja ja lopputuloksen koostamista. Konseptitoteutuksen ohjelmointikieli vaihdettiin Python-kieleen käyttäen C/C++ -kielellä toteutettuja kirjastoja. Rinnakkaistamisella saavutettiin nopeutusta ja ratkaisuarkkitehtuuriehdotuksen mukaisesti toteutus voidaan tarjota pilvilaskentaparadigmaa hyödyntäen korkeasti saavutettavana skaalautuvana palveluna. Tutkimuksen tuloksien perusteella vektorisointi on tehokas keino saavuttaa nopeutusta. Vektorisointi edellyttää vektoritietoisuutta ja kehittäjän tulee ymmärtää käytetyt algoritmit täydellisesti, jotta vektorisoinnilla saavutetaan oikeanlainen tulos.
dc.description.abstractThe research will focus on the process of changing the programming language of the proof-of-concept Matlab implementation to the Python language. The software helps to study the small-scale forms of the earth’s surface. The goal is to offer the implementation as a service or a maintainable general-purpose library, also make the software faster and scalable by using vectorization, parallelization, and multi-core processing. The research questions include consideration of the numerical and operational differences of software languages in the implementation, parallelization solution models and validation of the software language exchange process. During the research, processes and threads are presented with general creation practices. Also described parallelism-related techniques and challenges, parallelism communication and synchronization solution models, general vectorization practices for loops, matrix indexing, slicing and windowing methods with practical Python code fragments. The implementation section describes the process of changing the programming language using unit tests with the test data collected from the Matlab implementation. Including the implementation challenges encountered during the programming language exchange process and the solutions used to solve challenges. Code optimization solutions and gathering the results of the calculations will be covered. The programming language exchange process completed successfully by using Python libraries implemented in C/C++ language. The implementation can be offered as a highly accessible and scalable service by following the solution architecture proposal utilizing the cloud computing paradigm. Based on the research results vectorization is an effective solution to achieve performance improvement. Vectorization requires vector awareness and the full understanding of the algorithms used to achieve the optimal result.
dc.format.extent74
dc.identifier.olddbid171651
dc.identifier.oldhandle10024/154750
dc.identifier.urihttps://www.utupub.fi/handle/11111/15200
dc.identifier.urnURN:NBN:fi-fe2022100360952
dc.language.isofin
dc.rightsfi=Julkaisu on tekijänoikeussäännösten alainen. Teosta voi lukea ja tulostaa henkilökohtaista käyttöä varten. Käyttö kaupallisiin tarkoituksiin on kielletty.|en=This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.|
dc.rights.accessrightsavoin
dc.source.identifierhttps://www.utupub.fi/handle/10024/154750
dc.subjectrinnakkaisohjelmointi, ohjelmointikielet, pilvipalvelut, optimointi
dc.titleMatlab-ohjelmakoodin vektorisointi ja rinnakkaistaminen Python-toteutuksena
dc.type.ontasotfi=Pro gradu -tutkielma|en=Master's thesis|

Tiedostot

Näytetään 1 - 1 / 1
Ladataan...
Name:
Jarvinen_Jarkko_opinnayte.pdf
Size:
1.23 MB
Format:
Adobe Portable Document Format