-
Julia-kieli
Julia-kieli
Julia-kieli on suorituskykyinen, dynaaminen ohjelmointikieli. Julia soveltuu erinomaisesti tieteelliseen laskentaan, koska se voi kääntää tehokasta natiivikoodia LLVM:n avulla ja sisältää standardikirjastossa matemaattisia funktioita, rinnakkaislaskentaominaisuuksia sekä paketinhallinnan. Lisäksi Julian syntaksi on intuitiivinen ja helppo oppia, monimenetelmävälityksen paradigma mahdollistaa yhdisteltävän koodin kirjoittamisen, mikä lisää olemassa olevan koodin uudelleenkäytettävyyttä, ja ympäristöt mahdollistavat koodin suorittamisen toistettavalla tavalla.
Lisenssi
Julia-kieli on lisensoitu vapaalla ja avoimen lähdekoodin MIT-lisenssillä.
Saatavuus
Julia-kieli on saatavilla Puhdissa, Mahdissa ja LUMIssa komentoriviltä moduulijärjestelmän kautta. Se on saatavilla myös selainkäyttöliittymässä Jupyterin ja VSCoden kautta.
Jos kohtaat ongelmia Julian käytössä klusterissa, sinun kannattaa ottaa yhteyttä servicedeskiin.
Käyttö
Julia-moduulin käyttö
Julia-kieli on saatavilla julia-moduulista.
Julia-moduulin lataamisen jälkeen Juliaa voidaan käyttää julia-komennolla.
Ilman argumentteja se käynnistää interaktiivisen Julia REPL:n.
Saatavilla olevat komentorivivalinnat näet suorittamalla julia --help tai lukemalla manuaalisivun man julia.
Jos sinulla on kysymyksiä Julia-kielen ominaisuuksista, suosittelemme tutustumaan viralliseen dokumentaatioon ja Discourse -kanavaan.
Paketinhallinnan käyttö
Julia-pakettien asentamisen vakiotapa on käyttää standardikirjastoon kuuluvaa paketinhallintaa Pkg.
Juliassa se voidaan tuoda käyttöön seuraavasti:
Yleisiä käyttämiämme toimintoja ovat Pkg.add pakettien lisäämiseen, Pkg.activate ympäristöjen aktivointiin ja Pkg.instantiate kaikkien aktiivisessa ympäristössä määriteltyjen pakettien asentamiseen.
Pdokumentaatio sisältää lisätietoja Julian paketinhallinnan käytöstä.
Julia depot -hakemiston sijoittaminen
Julia depot -polun ensimmäinen hakemisto määrittää, minne Julia tallentaa asennetut paketit, käännetyt tiedostot, lokitiedostot ja muut depotit.
Oletusarvoisesti se on $HOME/.julia.
Kotihakemistolla on suhteellisen pieni kiintiö Puhdissa, Mahdissa ja LUMIssa.
Jos asennat suuria paketteja, suosittelemme sijoittamaan depot-hakemiston Projappliin, jotta kiintiö ei lopu kesken.
Depot-hakemistoa voidaan muuttaa lisäämällä uusi hakemisto JULIA_DEPOT_PATH-ympäristömuuttujan alkuun.
Voit esimerkiksi käyttää seuraavaa korvaamalla <project> CSC-projektilla.
Tämän jälkeen voit turvallisesti poistaa oletus-depot-hakemiston komennolla rm -r $HOME/.julia.
Lisätietoja löytyy depot path -dokumentaatiosta.
Monisäikeisyys
Julia tarjoaa Threads-kirjaston monisäikeisyyteen.
Se sisältyy peruskirjastoon ja tuodaan oletuksena käyttöön Julia-istunnossa.
Julia voidaan käynnistää usealla säikeellä asettamalla JULIA_NUM_THREADS-ympäristömuuttuja tai käynnistämällä Julia --threads-valinnalla, joka ohittaa ympäristömuuttujan arvon.
Jos Julia-moduuli on ladattu Slurm-työssä eikä ympäristömuuttujaa ole asetettu, sen arvoksi asetetaan pyydettyjen CPU-ytimien määrä (--cpus-per-task).
Säikeiden oletusmäärä on yksi.
Suosittelemme lukemaan lisätietoja Julian manuaalin monisäikeisyys -osiosta.
Moniprosessointi ja hajautettu laskenta
Distributed ja ClusterManagers.jl
Moniprosessointiin ja hajautettuun laskentaan Julia tarjoaa Distributed-standardikirjaston.
Käytämme sitä moniprosessointiin paikallisella solmulla.
Distributed-kirjastoa voidaan laajentaa asentamalla ClusterManagers.jl-paketti, jonka avulla voidaan lisätä työprosessit useille solmuille Slurmin kautta käyttäen SlurmManager-toimintoa.
Suosittelemme lukemaan lisätietoja Julian manuaalin moniprosessointi ja hajautettu laskenta -osiosta.
MPI.jl
MPI:tä voidaan käyttää hajautettuun laskentaan, erityisesti useilla solmuilla, Juliassa Puhdissa, Mahdissa ja LUMIssa MPI.jl-paketin avulla.
Se voidaan asentaa paketinhallinnalla seuraavasti:
Voimme ladata julia-mpi-moduulin, joka asettaa ympäristöön globaalit asetukset niin, että MPI.jl käyttää järjestelmän MPI-asennusta ja oikeaa komentoa MPI-prosessien käynnistämiseen.
Lisätietoja löytyy MPI.jl-dokumentaatiosta.
GPU-ohjelmointi
CUDA.jl
Puhdin ja Mahdin GPU-solmut sisältävät NVidia-GPU:ita, joita voidaan ohjelmoida CUDA:lla.
CUDA.jl-paketti CUDA-ohjelmointiin Juliassa voidaan asentaa paketinhallinnalla seuraavasti:
Voimme ladata julia-cuda-moduulin, joka asettaa ympäristöön globaalit asetukset niin, että CUDA.jl käyttää järjestelmän CUDA-asennusta.
Lisätietoja löytyy CUDA.jl-dokumentaatiosta.
AMDGPU.jl
LUMIn GPU-solmut sisältävät AMD-GPU:ita.
AMDGPU.jl-paketti AMD-GPU:iden ohjelmointiin Juliassa voidaan asentaa paketinhallinnalla seuraavasti:
Voimme ladata julia-amdgpu-moduulin, joka asettaa ympäristöön globaalit asetukset niin, että AMDGPU.jl käyttää järjestelmän ROCm-asennusta.
Lisätietoja löytyy AMDGPU.jl-dokumentaatiosta.
Julia-eräajojen suorittaminen CSC:n klustereissa
Osio Julia-eräajojen suorittaminen CSC:n klustereissa selittää, miten Juliaa käytetään sarja-, rinnakkais- ja GPU-eräajoihin Puhdissa, Mahdissa ja LUMIssa.
Lisälukemista
Jos haluat lukea lisää rinnakkais- ja suorituskykyisestä laskennasta Julialla, suosittelemme ENCCS:n materiaalia Julia for high-performance scientific computing sekä Kjartan Thor Wikfeldtin kirjoitusta A brief tour of Julia for high-performance computing. HLRS:n koulutusmateriaali kurssille Julia for High-Performance Computing tarjoaa syvällisen katsauksen suorituskykyisen koodin ohjelmointiin Julialla. Lopuksi Julia on HPC Clusters sisältää yleisiä huomioita Julian käytöstä ja asentamisesta HPC-klusterissa.