====== Paketinis užduočių vykdymas (SLURM) ====== 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 [[https://slurm.schedmd.com/quickstart.html|Quick Start User Guide]]. ====== Interaktyvios užduotys (SLURM) ====== 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 ====== GPU užduotys (SLURM) ====== 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 ====== Įvadas į OpenMPI ====== 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. ===== 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. $ mpicc -o foo foo.c $ mpif77 -o foo foo.f $ mpif90 -o foo foo.f ===== 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. $ 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 [[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. ====== Nuorodos ====== * [[http://mif.vu.lt/itapc#paslaug%C5%B3-u%C5%BEsakymas|ITAPC paslaugų užsakymas]] * [[https://slurm.schedmd.com/quickstart.html|Quick Start User Guide (SLURM)]] * [[https://docs.qlustar.com/Qlustar/11.0/HPCstack/hpc-user-manual.html|HPC User Manual (Qlustar)]] * [[http://www.mcs.anl.gov/research/projects/mpi/|MPI standartas]] * pagalba@mif.vu.lt - problemų su PST registracija