tags: - Academic system: - www-puhti - www-lumi
MATLAB
MATLAB on korkean tason tekninen laskentakieli ja interaktiivinen ympäristö algoritmien kehittämiseen, tiedon visualisointiin, tiedon analysointiin ja numeeriseen laskentaan.
Lisenssi
MATLAB on suljettu ohjelmisto.
Saatavilla
Puhti - Interaktiivinen MATLAB
Puhtissa on MATLAB-asennuksia interaktiiviseen käyttöön ja eräajotöihin. Interaktiivinen MATLAB on tarkoitettu väliaikaiseen, kevyeseen datan esikäsittelyyn ja jälkikäsittelyyn. Se on saatavilla seuraavasti:
- Lisenssi: Akateeminen
- Versiot: R2023a:sta R2024b:hen
- Työkalupakit: Parallel Computing Toolbox. Käytössä on 2 lisenssiä jokaista työkalupakkia kohden.
Puhti - MATLAB Parallel Server
MATLAB Parallel Server (MPS) mahdollistaa työn lähettämisen eräajotyönä paikallisesta MATLAB-asennuksesta Puhtiin. Se on saatavilla seuraavasti:
- Lisenssi: Akateeminen
- Versiot: R2021a:sta R2024b:hen
- Työkalupakit: MATLAB Parallel Server. Käytössä on lisenssi enintään 500 laskentaytimen samanaikaiseen käyttöön. Lisäksi työkalupakkeja, joihin sinulla on lisenssi paikallisella MATLAB-lisenssilläsi, voidaan käyttää MATLAB Parallel Serverin kanssa.
Akateeminen lisenssi sallii käytön vain suomalaisten korkeakoulujen henkilökunnalle ja opiskelijoille. Jos olet kaupallisen yrityksen tai suomalaisen tutkimuslaitoksen käyttäjä, pyydä CSC:n asiakaspalvelua ohjeiden saamiseksi.
LUMI - Interaktiivinen MATLAB
LUMI:ssa on MATLAB-asennus interaktiiviseen käyttöön.
- Lisenssi: Akateeminen
- Versiot: R2023b:stä R2024a:han
- Työkalupakit: Simulink, Control System Toolbox, Curve Fitting Toolbox, Deep Learning Toolbox, Global Optimization Toolbox, Image Processing Toolbox, Optimization Toolbox, Parallel Computing Toolbox, Signal Processing Toolbox, Statistics and Machine Learning Toolbox, Wavelet Toolbox. Käytössä on 25 lisenssiä jokaista työkalupakkia kohden.
Akateeminen lisenssi sallii käytön vain opetus- ja tutkimuskäyttöön tutkintoa myöntävässä oppilaitoksessa.
Interaktiivisen MATLABin käyttäminen Puhtilla ja LUMIlla
Komentoriviliittymä
Voimme suorittaa interaktiivisen MATLAB-istunnon komentoriviltä. Aluksi meidän on tehtävä varaus käyttämällä Slurmia:
srun --account=project_id --partition=small --time=0:15:00 --cpus-per-task=1 --mem-per-cpu=4g --pty bash
Korvaa project_id
projektitunnisteellasi, muuten skripti epäonnistuu.
Nyt matlab
, mbuild
, mex
ja mcc
komennot ovat käytettävissä.
Esimerkiksi, voimme avata MATLAB-komentoriviliittymän seuraavasti:
Voimme myös suorittaa MATLAB-skriptejä erätilassa seuraavasti:
Web-käyttöliittymä
Voimme myös käyttää web-käyttöliittymää interaktiivisiin MATLAB-istuntoihin. Ensinnäkin, meidän on kirjauduttava sisään www.puhti.csc.fi tai www.lumi.csc.fi. Tämän jälkeen meillä on kaksi vaihtoehtoa:
-
Voimme käyttää MATLAB web -sovellusta, joka avaa MATLAB-graafisen käyttöliittymän web-version.
-
Voimme käyttää Työpöytäsovellusta ja klikata MATLAB-ikonia avataksesi MATLAB-graafisen käyttöliittymän työpöytäversion.
LUMI-työpöytäsovelluksessa Matlab löytyy vasemman alakulman valikkopainikkeen kautta. Etsi yksinkertaisesti matlab ja klikkaa kuvaketta / raahaa se työpöydälle löytääksesi sen helposti uudelleen.
Meidän on asetettava vähintään 4 GB muistia ennen MATLAB-sovelluksen käynnistämistä.
Rinnakkaislaskenta MATLABissa
MATLABissa voimme rinnakkaistaa koodia korkeatasoisilla Parallel Computing Toolbox -rakenteilla.
Harkitse seuraavaa sarjallista koodia, joka on kirjoitettu funcSerial.m
-tiedostoon ja joka pysähtyy sekunniksi n
kertaa ja mittaa suoritusajan:
Seuraavan sarjallisen suorituksen pitäisi kestää noin kaksi sekuntia:
Voimme rinnakkaista funktiota käyttämällä rinnakkaista for-silmukkarakennetta, parfor
, joka on kirjoitettu funcParallel.m
-tiedostoon seuraavasti:
Rinnakkaiskoodin suorittamiseksi meidän on luotava rinnakkaisallas prosesseista tai säikeistä ja sitten suoritettava rinnakkaiskoodi. Voimme luoda rinnakkaisaltaan kahdella prosessilla ja suorittaa rinnakkaiskoodia samalla argumentilla kuin sarjallinen, mutta sen pitäisi kestää vain noin sekunti:
Sama säikeillä varustetulla rinnakkaisaltaalla:
MATLAB Parallel Serverilla voimme myös luoda rinnakkaisaltaita Puhtiin ja suorittaa rinnakkaiskoodia siellä.
Työn lähettäminen paikallisesta MATLABista Puhtiin MATLAB Parallel Serverin avulla
MPS:n konfigurointi paikallisessa MATLABissa
Puhtin MATLAB Parallel Server (MPS) mahdollistaa käyttäjille eräajotöiden lähettämisen paikallisesta MATLAB-istunnosta Puhti-klusteriin. Puhtin MPS:n käyttö edellyttää paikallista MATLAB-asennusta tuetulla MATLAB-versiolla ja Parallel Computing Toolboxilla sekä pääsyä Puhti-klusteriin. Voimme konfiguroida MPS:n paikallisessa tietokoneessa seuraavilla ohjeilla.
- Kirjaudu ulos ja sisään Puhtiin SSH-asiakasohjelman kautta varmistaaksesi, että sinulla on kotihakemisto.
- Lataa konfiguraatioskriptin arkisto mps_puhti.zip Puhtille.
- Luo paikallinen MATLAB-konfiguraatiohakemisto.
- Pura konfiguraatiot konfiguraatiohakemistoon.
- Lisää hakemisto purettuihin konfiguraatiotiedostoihin MATLABin polkuun käyttämällä
addpath
jasavepath
funktioita MATLABissa. - Määritä MATLABisi lähettämään töitä Puhtiin kutsumalla
configCluster
MATLABissa ja anna käyttäjätunnuksesi kehotteeseen.
Linux ja MacOS
Vaihe 1: Suorita komentorivillä:
Vaihe 2: Suorita komentorivillä:
curl --location --output "$HOME/Downloads/mps_puhti.zip" https://github.com/CSCfi/csc-env-matlab/raw/refs/heads/main/config/mps_puhti.zip
Vaihe 3: Suorita komentorivillä:
Vaihe 4: Suorita komentorivillä:
Vaihe 5: Suorita MATLABissa:
Vaihe 6: Suorita MATLABissa:
Windows
Vaihe 1: Suorita Windows Powershellissä:
Vaihe 2: Suorita Windows Powershellissä:
Invoke-WebRequest -Uri "https://github.com/CSCfi/csc-env-matlab/raw/refs/heads/main/config/mps_puhti.zip" -OutFile "$env:USERPROFILE\Downloads\mps_puhti.zip"
Vaihe 3: Suorita Windows Powershellissä:
Vaihe 4: Suorita Windows Powershellissä:
Expand-Archive -Path "$env:USERPROFILE\Downloads\mps_puhti.zip" -DestinationPath "$env:APPDATA\Mathworks\MATLAB\mps_puhti"
Vaihe 5: Suorita MATLABissa:
Vaihe 6: Suorita MATLABissa:
Sarjatöiden lähettäminen
Ennen eräajotyön lähettämistä meidän on määritettävä resurssivaraus käyttämällä parcluster
.
Koska parcluster
on tilallinen, on turvallisinta tyhjentää eksplisiittisesti käyttämättömät ominaisuudet asettamalla ne tyhjäksi '
.
Lisäksi CPUsPerNode
asetetaan automaattisesti batch
-komennolla, joten me tyhjennämme sen.
Esimerkiksi, yksinkertainen CPU-varaus näyttää seuraavalta:
c = parcluster;
% Korvaa 'project_id' projektitunnisteellasi, muuten skripti epäonnistuu.
c.AdditionalProperties.ComputingProject = 'project_id';
c.AdditionalProperties.Partition = 'small';
c.AdditionalProperties.WallTime = '00:15:00';
c.AdditionalProperties.CPUsPerNode = '';
c.AdditionalProperties.MemPerCPU = '4g';
c.AdditionalProperties.GpuCard = '';
c.AdditionalProperties.GPUsPerNode = '';
c.AdditionalProperties.EmailAddress = '';
Nyt voimme käyttää batch
-funktiota lähettääksemme työn Puhtiin.
Se palauttaa työobjektin, jota voimme käyttää lähetetyn työn tulosten tarkasteluun.
Kun lähetät työn ensimmäisen kerran, MATLAB kehottaa sinua valitsemaan salasana- tai SSH-avainautentikoinnin välillä. Salasanasautentikointia ei enää tueta Puhtissa, joten sinun on valittava SSH-avainautentikointi. Anna polku yksityiseen avainavaimeesi ja syötä yksityiselle avaimelle oleva salasana, jos sellainen on. MATLAB tallentaa avainavaimesi polun eikä pyydä sitä uudelleen tulevissa istunnoissa.
Voimme lähettää yksinkertaisen testityön, joka palauttaa nykyisen työhakemiston seuraavasti:
Esimerkissä asetamme työhakemistoksi kotihakemiston asettamalla 'CurrentFolder'
arvoksi '.'
.
Lisäksi meidän tulisi poistaa MATLABin paikallinen hakupolku käytöstä etätyöntekijöillä asettamalla 'AutoAddClientPath'
arvoksi false
.
Rinnakkaistöiden lähettäminen
Tehdään varaus:
c = parcluster;
% Korvaa 'project_id' projektitunnisteellasi, muuten skripti epäonnistuu.
c.AdditionalProperties.ComputingProject = 'project_id';
c.AdditionalProperties.Partition = 'small';
c.AdditionalProperties.WallTime = '00:15:00';
c.AdditionalProperties.CPUsPerNode = '';
c.AdditionalProperties.MemPerCPU = '4g';
c.AdditionalProperties.GpuCard = '';
c.AdditionalProperties.GPUsPerNode = '';
c.AdditionalProperties.EmailAddress = '';
Nyt voimme käyttää batch-komentoa luodaksemme rinnakkaisaltaan työntekijöille asettamalla 'Pool'
-parametriksi varattavien ytimen määrä.
Esimerkiksi, voimme lähettää rinnakkaistyön kahdeksalle ytimelle seuraavasti:
Huomaa, että rinnakkaisallas pyytää aina yhden lisä-CPU-ytimen hallitakseen eräajotyötä ja ydinpoolia. Esimerkiksi, työ, joka tarvitsee kahdeksan ydintä, kuluttaa yhdeksän CPU-ydintä.
Sarja-GPU-töiden lähettäminen
Voimme luoda GPU-varauksen asettamalla sopivat arvot Partition
, GpuCard
, ja GPUsPerNode
-ominaisuuksille.
Esimerkiksi, yhden GPU:n varaus näyttää seuraavalta:
c = parcluster;
% Korvaa 'project_id' projektitunnisteellasi, muuten skripti epäonnistuu.
c.AdditionalProperties.ComputingProject = 'project_id';
c.AdditionalProperties.Partition = 'gpu';
c.AdditionalProperties.WallTime = '00:15:00';
c.AdditionalProperties.CPUsPerNode = 1;
c.AdditionalProperties.MemPerCPU = '4g';
c.AdditionalProperties.GpuCard = 'v100';
c.AdditionalProperties.GPUsPerNode = 1;
c.AdditionalProperties.EmailAddress = '';
Nyt voimme lähettää yksinkertaisen GPU-työn, joka kysyy saatavilla olevan GPU-laitteen seuraavasti:
Töiden ja tulosten kysely
Saadaksesi listan nykyisistä käynnissä olevista tai valmiista töistä, käytä
Hanki kahva työlle, jolla on sekvenssinumero 1
Kun meillä on kahva klusterille, kutsumme findJob
-metodia etsiäksemme työ ID:llä, esimerkissä alla ID = 11
.
Kun työ on valmis, voimme hakea funktion tulokset seuraavasti:
Klusterin tiedostojärjestelmään kirjoitetut tiedot on haettava suoraan tiedostojärjestelmästä.
```