IT wiki

VU MIF STSC

User Tools

Site Tools


en:hpc

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
en:hpc [2022/07/04 09:48] – [Batch Processing of Tasks (SLURM)] grikieteen:hpc [2022/07/04 14:07] grikiete
Line 166: Line 166:
  
 More about SLURM opportunities you can read [[https://slurm.schedmd.com/quickstart.html|Quick Start User Guide]]. More about SLURM opportunities you can read [[https://slurm.schedmd.com/quickstart.html|Quick Start User Guide]].
 +
 +====== Paketinis užduočių vykdymas (SLURM) ======
 +
 +Norint pasinaudoti PST skaičiavimo resursais, reikia formuoti užduočių scenarijus (sh arba csh).
 +
 +Pavyzdys:
 +
 +<code shell mpi-test-job.sh>
 +#!/bin/bash
 +#SBATCH -p main
 +#SBATCH -n4
 +module load openmpi
 +mpicc -o mpi-test mpi-test.c
 +mpirun mpi-test
 +</code>
 +
 +Pateikus paraišką ITAPC ir gavus teigimą sprendimą, reikia susikurti naudotoją https://hpc.mif.vu.lt/. Sukurtas naudotojas bus įtrauktas į atitinkamą projektą, kuris turės tam tikrą kiekį resursų. Norint naudoti projekto resursus atliekant skaičiavimus reikia nurodyti savo alokacijos numerį. Žemiau pateiktas pavyzdys su nustatytu alokacijos parametru "alloc_xxxx_projektas" (taikomas ne VU MIF naudotojams, VU MIF naudotojai -- account parametro nurodyti neturi).
 +
 +<code shell mpi-test-job.sh>
 +#!/bin/bash
 +#SBATCH --account=alloc_xxxx_projektas
 +#SBATCH -p main
 +#SBATCH -n4
 +#SBATCH --time=minutes
 +module load openmpi
 +mpicc -o mpi-test mpi-test.c
 +mpirun mpi-test
 +</code>
 +
 +
 +Jame kaip specialūs komentarai yra nurodymai užduočių vykdytojui.
 +
 + -p short - į kokią eilę siųsti (main, gpu, power).
 +
 + -n4 - kiek procesorių rezervuoti (**PASTABA:** nustačius naudotinų branduolių skaičių x, tačiau realiai programiškai išnaudojant mažiau, apskaitoje vis tiek bus skaičiuojami visi x "užprašyti" branduoliai, todėl rekomenduojame apsiskaičiuoti iš anksto).
 +
 +Užduoties pradinis einamasis katalogas yra dabartinis katalogas (**pwd**) prisijungimo mazge iš kur paleidžiama užduotis, nebent parametru -D pakeistas į kitą. Pradiniam einamajam katalogui naudokite PST bendros failų sistemos katalogus **/scratch/lustre**, nes jis turi egzistuoti skaičiavimo mazge ir ten yra kuriamas užduoties išvesties failas **slurm-JOBID.out**, nebent nukreiptas kitur parametrais -o arba -i (jiems irgi patariama naudoti bendrą failų sistemą).
 +
 +Suformuotą scenarijų siunčiame su komanda sbatch
 +
 +''$ sbatch mpi-test-job''
 +
 +kuri gražina pateiktos užduoties numerį **JOBID**.
 +
 +Laukiančios arba vykdomos užduoties būseną galima sužinoti su komanda squeue
 +
 +''$ squeue -j JOBID''
 +
 +Su komanda scancel galima nutraukti užduoties vykdymą arba išimti ją iš eilės
 +
 +''$ scancel JOBID''
 +
 +Jeigu neatsimenate savo užduočių **JOBID**, tai galite pasižiūrėti su komanda **squeue**
 +
 +''$ squeue''
 +
 +Užbaigtų užduočių **squeue** jau neberodo.
 +
 +Jeigu nurodytas procesorių kiekis nėra pasiekiamas, tai jūsų užduotis yra įterpiama į eilę. Joje ji bus kol atsilaisvins pakankamas kiekis procesorių arba kol jūs ją pašalinsite su **scancel**.
 +
 +Vykdomos užduoties išvestis (**output**) yra įrašoma į failą **slurm-JOBID.out**. Jei nenurodyta kitaip, tai ir klaidų (error) išvestis yra įrašoma į tą patį failą. Failų vardus galima pakeisti su komandos **sbatch** parametrais -o (nurodyti išvesties failą) ir -e (nurodyti klaidų failą).
 +
 +Daugiau apie SLURM galimybes galite paskaityti [[https://slurm.schedmd.com/quickstart.html|Quick Start User Guide]].
 +
 +====== Interaktyvios užduotys (SLURM) ======
 +
 +Interaktyvias užduotis galima vykdyti su komanda srun:
 +
 +<code>
 +$ srun --pty $SHELL
 +</code>
 +
 +Įvykdę aukščiau pateiktą komandą prisijungsite prie SLURM paskirtos skaičiavimo mazgo aplinkos ir galėsite tiesiogiai vykdyti ir derinti programas jame.
 +
 +Įvykdę komandas atsijunkite nuo skaičiavimo mazgo su komanda
 +
 +<code>
 +$ exit
 +</code>
 +
 +Jeigu norima vykdyti grafines programas, tai reikia jungtis su **ssh -X** į **uosis.mif.vu.lt** ir **hpc**:
 +
 +<code>
 +$ ssh -X uosis.mif.vu.lt
 +$ ssh -X hpc
 +$ srun --pty $SHELL
 +</code>
 +
 +**power** telkinyje interaktyvias užduotis galima vykdyti su
 +
 +<code>
 +$ srun -p power --mpi=none --pty $SHELL
 +</code>
 +
 +====== GPU užduotys (SLURM) ======
 +
 +Norint pasinaudoti GPU, reikia papildomai nurodyti <code>--gres gpu:N</code> kur N - norimas GPU kiekis.
 +
 +Su ''nvidia-smi'' užduotyje galite pasitikrinti kiek GPU buvo paskirta.
 +
 +Pavyzdys interaktyvios užduoties su 1 GPU:
 +<code>
 +$ srun -p gpu --gres gpu --pty $SHELL
 +</code>
 +
 +====== Įvadas į OpenMPI ======
 +
 +Ubuntu 18.04 LTS yra **2.1.1** versijos OpenMPI paketai.
 +Norint pasinaudoti naujesne **4.0.1** versija reikia naudoti
 +<code>
 +module load openmpi/4.0
 +</code>
 +prieš vykdant MPI komandas.
 +
 +===== MPI programų kompiliavimas =====
 +
 +Paprastos MPI programos pavyzdys yra kataloge ''/scratch/lustre/test/openmpi''. **mpicc** (**mpiCC**, **mpif77**, **mpif90**, **mpifort**) yra apvalkalai C (C++, F77, F90, Fortran) kompiliatoriams, kurie automatiškai įtraukia į komandų eilutę reikiamus **MPI** intarpų (include) ir bibliotekų failus.
 +
 +<code>
 +$ mpicc -o foo foo.c
 +$ mpif77 -o foo foo.f
 +$ mpif90 -o foo foo.f
 +</code>
 +===== MPI programų vykdymas =====
 +
 +MPI programos startuojamos su **mpirun** arba **mpiexec** programa. Daugiau apie jas galima sužinoti su komanda **man mpirun** arba **man mpiexec**.
 +
 +Paprasta (SPMD) programa gali būti startuojama su tokia mpirun komandų eilute.
 +
 +<code>
 +$ mpirun foo
 +</code>
 +
 +Tai naudos visus paskirtus procesorius, pagal tai, kiek jų buvo užsakyta. Jeigu norima pasinaudoti mažiau, tai **mpirun** galima nurodyti parametrą ''-np kiekis''. Nepageidaujama ilgesniam laikui naudoti mažiau, nei rezervuota, nes neišnaudoti CPU lieka laisvi. Didesnį kiekį, nei rezervuotą, yra griežtai draudžiama naudoti, nes tai gali turėti įtakos kitų užduočių vykdymui.
 +
 +Daugiau apie instaliuotą **OpenMPI** yra [[https://www.open-mpi.org|OpenMPI]] puslapyje.
 +
 +====== Užduočių efektyvumas ======
 +
 +  * Prašome išnaudoti ne mažiau 50% užsakyto CPU kiekio.
 +  * Naudoti daugiau CPU, nei užsakyta, nepadidins efektyvumo, nes jūsų užduotis galės naudoti tik tiek CPU, kiek buvo užsakyta.
 +  * Jeigu naudosite parametrą ''--mem=X'', tai užduotis gali rezervuoti daugiau **CPUs** proporcingai norimos atminties kiekiui. Pvz: užsakius ''--mem=14000'' eilėje **main**, bus užsakyti ne mažiau 2 CPUs, jei kiti parametrai nenurodo daugiau. Jeigu jūsų užduotis naudos mažiau, tai bus neefektyvus resursų naudojimas, be to tai gali veikti lėčiau, nes gali būti naudojama kita, nei vykdančio, procesoriaus atmintis.
 +
 +====== Resursų limitai ======
 +
 +Jeigu jūsų užduotys nestartuoja su priežastimi **AssocGrpCPUMinutesLimit** arba **AssocGrpGRESMinutes**,
 + tai pasitikrinkite ar užduotims dar liko neišnaudotų CPU/GPU resursų iš (mėnesio) limito.
 +
 +Peržiūrėti kiek išnaudota resursų
 +
 +<code>
 +sreport -T cpu,mem,gres/gpu cluster AccountUtilizationByUser Start=0101 End=0131 User=USERNAME
 +</code>
 +
 +kur **USERNAME** jūsų MIF naudotojo vardas, o **Start** ir **End** nurodo einamojo mėnesio pradžios ir pabaigos datas. Jas galima nurodyti ir kaip ''$(date +%m01)'' ir ''$(date +%m31)'', kas nurodo einamojo mėnesio pirmą ir paskutines dienas.
 +
 +Atkreipkite dėmesį, kad naudojimas pateikiamas minutėmis, o į valandas konvertuoti reikia dalinant iš 60.
 +
 +Kitas būdas pažiūrėti limitus ir jų išnaudojimą
 +
 +<code>
 +sshare -l -A USERNAME_mif -p -o GrpTRESRaw,GrpTRESMins,TRESRunMins
 +</code>
 +
 +kur **USERNAME** MIF naudotojo vardas. Arba parametre **-A** nurodyti tą sąskaitą (account), kurio naudojimą norima pažiūrėti. Duomenys pateikiami minutėmis. **GrpTRESRaw** - kiek išnaudota. **GrpTRESMins** - koks yra limitas. **TRESRunMins** - likę resursai dar vis vykdomų užduočių.
  
  
  
en/hpc.txt · Last modified: 2024/02/21 12:50 by rolnas

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki