Norint pasinaudoti PST skaičiavimo resursais, reikia formuoti užduočių scenarijus (sh arba csh).
Pavyzdys:
#!/bin/sh #SBATCH -p main #SBATCH -n4 module load openmpi/default mpicc -o mpi-test mpi-test.c mpirun mpi-test
Jame kaip specialūs komentarai yra nurodymai užduočių vykdytojui. -p short - į kokią eilę siųsti (main, gpu, power). -n4 - kiek procesorių rezervuoti.
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 Quick Start User Guide.
Interaktyvias užduotis galima pradėti vykdyti su komanda srun:
$ srun --pty $SHELL
Į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
$ exit
Jeigu norima vykdyti grafines programas, tai reikia jungtis su ssh -X į uosis.mif.vu.lt ir hpc:
$ ssh -X uosis.mif.vu.lt $ ssh -X hpc $ srun --pty $SHELL
Norint pasinaudoti GPU, reikia papildomai nurodyti
--gres gpu:N
kur N - norimas GPU kiekis.
Su nvidia-smi
užduotyje galite pasitikrinti kiek GPU buvo paskirta.
Pavyzdys interaktyvios užduoties su 1 GPU:
$ srun -p gpu --gres gpu --pty $SHELL
Ubuntu 18.04 LTS yra 2.1.1 versijos OpenMPI paketai. Norint pasinaudoti naujesne 4.0.1 versija reikia naudoti
module load openmpi/4.0
prieš vykdant MPI komandas.
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.
$ mpicc -o foo foo.c $ mpif77 -o foo foo.f $ mpif90 -o foo foo.f
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.
$ mpirun foo
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 OpenMPI puslapyje.
–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.