Rinnakkaislaskenta MPI-ympäristössä
Katajisto, Juha (2009)
Katajisto, Juha
Metropolia Ammattikorkeakoulu
2009
All rights reserved
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-200912036906
https://urn.fi/URN:NBN:fi:amk-200912036906
Tiivistelmä
Tämän Metropolia Ammattikorkeakoululle tehdyn insinöörityön tavoitteena oli tutkia rinnakkaisia arkkitehtuureja ja viestinvälitykseen perustuvaa rinnakkaisohjelmointia, rakentaa testiympäristöksi korkean suorituskyvyn klusteri ja rinnakkaistaa alun perin sarjamuotoinen algoritmi.
Työ aloitettiin perehtymällä rinnakkaisohjelmien suorituksen mahdollistaviin laitteistoarkkitehtuureihin. Seuraavaksi syvennyttiin tarkemmin yhteen käyttöjärjestelmään (Rocks Cluster) ja rakennettiin sen avulla korkean suorituskyvyn klusteri. Klusterin tarkoituksena oli toimia rinnakkaisohjelmien testiympäristönä. Klusterin avulla voidaan rinnakkaisia ohjelmia suorittaa helposti useiden tietokoneiden avulla. Seuraavaksi perehdyttiin erityisesti viestinvälitysmallin mukaiseen rinnakkaisohjelmointiin ja MPI-standardiin. MPI-kirjastosta esitellään useimmin tarvittavat operaatiot. Lopuksi suunniteltiin ja toteutettiin sarjamuotoisesta lajittelualgoritmista neljä rinnakkaista versiota. Työssä toteutettujen algoritmien suorituskykyä vertailtiin keskenään erilaisissa tilanteissa.
Työn tuloksena saatiin toimiva korkean suorituskyvyn klusteri ja neljä toimivaa rinnakkaista versiota alun perin sarjamuotoisesta algoritmista. Tehtyjen testien perusteella huomattiin, että rinnakkaisohjelmoinnin avulla voidaan saada suuria parannuksia ohjelman suorituskykyyn, kunhan ohjelmassa esiintyvät laskennalliset ongelmat ovat luonteeltaan rinnakkaistuvia. Työn aikana huomattiin suuria eroja myös rinnakkaisten algoritmien suorituskyvyssä ja havaittiin niiden suorituskykyyn oleellisesti vaikuttavia seikkoja, kuten työmäärien jakautuminen laskentatehtävien välillä. Myös datan siirtäminen laskentatehtävien välillä on hidasta, joten on sitä parempi, mitä vähemmän sitä tarvitsee tehdä. Tähän toki vaikuttaa myös klusterin solmujen välillä käytetyn tietoliikenneverkon nopeus.
Työ aloitettiin perehtymällä rinnakkaisohjelmien suorituksen mahdollistaviin laitteistoarkkitehtuureihin. Seuraavaksi syvennyttiin tarkemmin yhteen käyttöjärjestelmään (Rocks Cluster) ja rakennettiin sen avulla korkean suorituskyvyn klusteri. Klusterin tarkoituksena oli toimia rinnakkaisohjelmien testiympäristönä. Klusterin avulla voidaan rinnakkaisia ohjelmia suorittaa helposti useiden tietokoneiden avulla. Seuraavaksi perehdyttiin erityisesti viestinvälitysmallin mukaiseen rinnakkaisohjelmointiin ja MPI-standardiin. MPI-kirjastosta esitellään useimmin tarvittavat operaatiot. Lopuksi suunniteltiin ja toteutettiin sarjamuotoisesta lajittelualgoritmista neljä rinnakkaista versiota. Työssä toteutettujen algoritmien suorituskykyä vertailtiin keskenään erilaisissa tilanteissa.
Työn tuloksena saatiin toimiva korkean suorituskyvyn klusteri ja neljä toimivaa rinnakkaista versiota alun perin sarjamuotoisesta algoritmista. Tehtyjen testien perusteella huomattiin, että rinnakkaisohjelmoinnin avulla voidaan saada suuria parannuksia ohjelman suorituskykyyn, kunhan ohjelmassa esiintyvät laskennalliset ongelmat ovat luonteeltaan rinnakkaistuvia. Työn aikana huomattiin suuria eroja myös rinnakkaisten algoritmien suorituskyvyssä ja havaittiin niiden suorituskykyyn oleellisesti vaikuttavia seikkoja, kuten työmäärien jakautuminen laskentatehtävien välillä. Myös datan siirtäminen laskentatehtävien välillä on hidasta, joten on sitä parempi, mitä vähemmän sitä tarvitsee tehdä. Tähän toki vaikuttaa myös klusterin solmujen välillä käytetyn tietoliikenneverkon nopeus.