Ohjelmankehitys Murskassa
Murskan ohjelmankehitysympäristö perustuu Portland Groupin (PGI) Cluster Development Kitiin. Murskaan on asennettu myös GNU Compiler Collectioniin (GCC) kuuluvat kääntäjät.
Portland Groupin (PGI) Cluster Development Kit sisältää mm. seuraavat työkalut:
- FORTRAN 77 -ja Fortran 90/95 -sekä C- ja C++-kääntäjät
- Tuki MPI-, OpenMP- ja HPF-rinnakkaisohjelmoinnille
- Graafisen debuggerin PGDBG ja profilointityökalun PGPROF.
PGDBG:llä voi kuitenkin toistaiseksi tutkia vain yhtä säiettä tai MPI- tehtävää kerrallaan. Kaikkien säikeiden tai tehtävien samanaikainen tutkiminen ei ole vielä mahdollista.
- Numeerisen lineaarialgebran BLAS- ja LAPACK-kirjastot.
PGI CDK:n mukana tullutta ScaLAPACK:ia ei ole asennettu Murskaan. Se kirjasto löytyy muualta Murskasta.
Tuettu MPI-kirjasto on HP-MPI, mutta myös MPICH on käytettävissä
Murskaan asennetut PGI:n Fortran- ja C/C++-kääntäjät ovat versionumeroltaan 7.0-3, joka on oletusversio Murskaan kirjauduttaessa. Myös version 6.2-5 PGI-kääntäjät löytyvät Murskasta. Rinnakkaista datan käsittelyä tukeva HPF-kääntäjä sisältyy asennukseen.
Seuraavassa taulukossa on lueteltu PGI--kääntäjien komennot ja käännettävän ohjelmakoodin tiedoston nimen tarkenneosa.
Ohjelmointikieli | Komento | Tiedoston tarkenne |
Fortran 90/95 | pgf95 | .f90, .f95, .F90, .F95 |
Fortran 77 | pgf77 | .f, .F, .FOR |
High Performance Fortran (HPF) | pghpf | .hpf |
ANSI C99 ja K&R C | pgcc | .c, .i |
ANSI C++ | pgCC | .C, .cc, .i |
Huomautettakoon että HPF-ohjelmoinnin vaatimaa kääntäjää ei kaikissa koneissa ole, mikä vaikeuttaa ohjelmien siirrettävyyttä. MPI:llä saavutetaan tyypillisesti myös parempi suorituskyky.
Kääntäjän valitseminen
Käytettävä kääntäjä valitaan lataamalla vastaava moduuli. Ladatut moduulit saa selville komennolla
module list
ja kaikki käytettävissä olevat moduulit selviävät komennolla
module avail
Oletusarvona on PGI-ympäristön moduuli eli PrgEnv-pgi. Tämän voi vaihtaa GCC-moduuliin komennolla
module swap PrgEnv-pgi PrgEnv-gnu
Vastaavasti voi suorittaa vaihdon toiseen suuntaan. Suositeltavaa on aina ennen ohjelmien kääntämistä tarkistaa mikä ympäristö on käytössä.
MPI-ohjelmien kääntäminen
MPI-ohjelmien kääntämistä varten on valmiit wrapperit, jotka huolehtivat tarvittavien kirjastojen linkityksestä. Komennot ovat mpif77 (Fortran 77), mpif90 (Fortran 90), mpicc (C) ja mpiCC (C++). MPICH-kirjaston saa tarvittaessa käyttöön lisäämällä komennolla loppuun tarkenteen .mpich, esim. mpif90.mpich.
Kääntäjäoptiot
Seuraavassa taulukossa on joitakin kääntäjäoptioita, jotka ovat yhteisiä sekä PGI- että GCC-kääntäjille:
Optio | Kuvaus |
-c | Pelkkä käännös. Tuottaa linkkaamattoman objektin filename.o |
-o filename | Nimeää filename-tiedoston suoritettavaksi ohjelmaksi. Oletuksena: a.out |
-g | Mahdollistaa debuggauksen lähdekooditasolla |
-Idirname | Etsii hakemistosta dirname include- tai module -tiedostoja |
-Ldirname | Etsii hakemistosta dirname kirjastotiedostoja jotka on märitelty optiolla -l |
-llibname | Etsii kirjastotiedostoa nimeltä liblibname.a |
-pg | Kirjoittaa profilointitietoa gprof-työkalua varten |
-O[level] | Määrittelee optimointitason |
-Wl,-M | Generoi ns. loader mapin näytölle (stdout) |
Ohjelmien ajaminen
Murska on tarkoitettu pääasiallisesti eräajotöiden suorittamiseen. Käytössä oleva eräajojärjestelmä on LSF-SLURM, jota käsitellään tässä lehdessä toisaalla. Töiden lähettämiseen käytetään komentoa bsub.
Lisätietoa
Tarkempaa tietoa PGI- and GCC-kääntäjien optioista löytyy ohjelmien manuaalisivuilta komennoilla: man pgf90 tai man gcc. Sekä PGI:n että GCC:n manuaalit ovat käytettävissä web-sivuilla tai paikallisesti Murskassa polussa /opt/pgi/linux86-64/<versio>/doc,
esim. /opt/pgi/linux86-64/7.0-3/doc (avautuu acroread-ohjelmassa) sekä vastaavasti info gcc.
Koneen käyttöopas on luettavissa osoitteessa http://www.csc.fi/english/pages/murska_guide.