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>
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 |