Pāriet uz saturu

Slurm uzdevumu pārvaldnieks

Slurm aprēķinu uzdevuma pārvaldnieka lietošanas pamati

Aprēķinu veikšanai uz datorklastera jāizmanto Slurm aprēķinu rindas sistēma. Šī sistēma dod iespēju lietotājiem nesekot līdzi aprēķinu serveru noslodzei un resursu pieejamībai, bet gan pieprasīt nepieciešamos aprēķinu resursus un automātiski uzsākt aprēķinu, līdzko resursi ir pieejami. Dažādie aprēķinu rindā iesniegtie uzdevumi tiek izpildīti atbilstoši resursu pieejamībai, bez lietotāja tālākas iesaistes. Lai ievietotu savu uzdevumu rindā, ir jāizpilda komanda:

sbatch <skripta nosaukums>
Skripts jāraksta bash valodā, t.i. jāraksta tās pašas komandas, kuras parasti tiek rakstītas komandrindā, lai palaistu aprēķinu, tikai jāpapildina skripts ar rindas sistēmas rezervācijas parametriem.

Slurm piemēri

Piemērus atradīsiet klastera mapē home/INFO.

Vispārīgs piemērs:

#!/bin/bash
#SBATCH --job-name=python_job # Brīvi izvēlēts nosaukums
#SBATCH --mem=60G # Kopējais RAM apjoms
#SBATCH --ntasks=8 # CPU kodolu skaits
#SBATCH --time=00:15:00 # Laika ierobežojums hh:mm:ss
#SBATCH --output=%x.%J.out # Izvada faila nosaukums
module load <uzdevumā lietoto moduļu nosaukumi>
<lietotāja komandas>
#!/bin/bash
#SBATCH --job-name=python_job # Brīvi izvēlēts nosaukums
#SBATCH --mem=60G # Kopējais RAM apjoms
#SBATCH --ntasks=8 # CPU kodolu skaits
#SBATCH --time=00:15:00 # Laika ierobežojums hh:mm:ss
#SBATCH --output=%x.%J.out # Izvada faila nosaukums
guix install <uzdevumā lietoto pakotņu nosaukumi>
<lietotāja komandas>

Pēc uzdevuma ievietošanas rindā, parādīsies fails ar nosaukumu, kas norādīts --output.

Šajā logfailā var aplūkot gan Slurm sistēmas izvadu, gan arī visu to, ko lietotāja izsauktās komandas tipiski parādītu konsolē (standard output).

Sniegtajā piemērā izvada faila nosaukumā ir lietoti sbatch skripta mainīgie %x un %J, kas ir attiecīgi skripta nosaukums (--job-name) un Slurm uzdevumam piešķirtais ID numurs (jobid).

Ar citiem sbatch skriptu mainīgajiem var iepazīties šeit.

Īpaši svarīgi ir skriptā norādīt kādu CPU kodolu skaitu, operatīvās atmiņas apjomu un sagaidāmo uzdevuma izpildes laiku vēlaties rezervēt. Ja šos parametrus nenorāda sbatch skriptā, tiek lietoti sekojoši noklusējumi: 1 CPU kodols, 1GB operatīvās atmiņas, 24 h izpildes laiks regular un weakold rindās, 2 h debug rindā.

Aprēķinu uzdevumu izpildes laikā Slurm rindas sistēma nepieļaus plašāku resursu izmantošanu kā norādīts. Ja aprēķinu rindā iesniegtais uzdevums mēģinās izmantot vairāk operatīvās atmiņas kā pieprasīts, uzdevums netiks apturēts, bet tiks ierobežots un spēs izmantot ne vairāk atmiņas kā pieprasīts. Par šo uzdevuma atmiņas ierobežošanu liecinās paziņojumi aprēķina logfailā. Ja uzdevums mēģinās pārsniegt tam rezervēto laiku, tas tiks apturēts.

Vispārēju informāciju par klastera noslodzi var iegūt ar komandu sinfo (detalizēti par katru no mezgliem sinfo -Nl). Visus rindas uzdevumus var apskatīties, izpildot komandu squeue. Savu rindas uzdevumu sarakstu ar to ID numuriem un izpildes statusu var redzēt, izpildot sekojošu komandu:

squeue -u <lietotāja vārds>

Lai savus uzdevumus apturētu vai izņemtu no gaidīšanas rindā, jālieto komanda:

scancel <uzdevuma ID numurs>

Ir iespējams arī palaist interaktīvo uzdevumu (t.i., lietot komandrindu aprēķinu kompilēšanai vai testēšanai, izmantojot aprēķinu mezglu resursus).Zemāk parādītais piemērs ļaus interaktīvi darboties ar 1 CPU kodolu uz rindas debug:

srun --partition=debug --pty bash

Komandu srun var papildināt ar vēl citiem parametriem, lai pieprasītu vairāk resursu. Zemāk parādīts piemērs kā pieprasīt 4 CPU kodolus, 12 GB operatīvās atmiņas, kā arī X11 forwarding grafisko logu iespējas:

srun --cpus-per-task=4 --mem=12G --x11 --pty bash

Bieži lietotās komandas

Komanda Apraksts
sbatch <skripta nosaukums> Ievieto uzdevumu rindā
sinfo Iegūst informāciju par klastera noslodzi
sinfo -Nl Iegūst detalizētu informāciju par katru no mezgliem
squeue Izvada visus rindas uzdevumus
squeue -u <lietotāja vārds> Izvada konkrēta lietotāja uzdevumus
scancel <uzdevuma ID numurs> Aptur vai izņem uzdevumu no gaidīšanas rindas
srun Palaiž interaktīvo uzdevumu ar norādītiem parametriem
tail -f <faila nosaukums> Seko līdzi uzdevuma izvada failam

Papildu resursi