Proste zadanie

Przykład wysyłania zadania wsadowego napisanego w Pythonie.

Do pracy będzie potrzebne środowisko Python, więc należy załadować moduł środowiskowy anaconda lub miniconda:

module load anaconda

Przejście do katalogu roboczego i utworzenie katalogu dla zadania:

cd /work/$USER
mkdir python-test
cd python-test

W pliku zadanie.py należy umieścić następujący kod:

zadanie.py
print('Witaj świecie!')

Dla wygodnej metody przekazania parametrów zadania wykorzystamy skrypt:

wykonaj.sh
#!/usr/bin/env bash
#SBATCH --job-name=witaj                  # nazwa zadania
#SBATCH --partition=cpu                   # partycja (CPU/GPU)
#SBATCH --cpus-per-task=1                 # jeden CPU
#SBATCH --time=00:05:00                   # limit czasu wykonania zadania - 5min
#SBATCH --output=zadanie-%j.out           # schemat pliku wynikowego %j - numer zadania
#SBATCH --mail-type=ALL                   # konfiguracja powiadomienia e-mail
#SBATCH --mail-user=WPISZ_SWOJ_PELEN_EMAIL  # adres dla powiadomień e-mail

# Przykład wykonania skryptu Pythona w trybie wsadowym Slurm

# aktywacja modułu anaconda
module load anaconda

# przejście do katalogu roboczego
cd /work/$USER/python-test || exit -1

# Wykonanie skryptu
srun python zadanie.py

Przesłanie zadania do systemu kolejkowego Slurm:

sbatch wykonaj.sh

Postęp zakolejkowanego zadania możemy sprawdzić za pomocą squeue:

squeue
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
                71       CPU    witaj   mprill  R       0:01      1 c1n1

Postęp jego części oraz wynik przez sacct:

       JobID    JobName  Partition    Account  AllocCPUS      State ExitCode
------------ ---------- ---------- ---------- ---------- ---------- --------
71                witaj        CPU                     1  COMPLETED      0:0
71.batch          batch                                1  COMPLETED      0:0
71.extern        extern                                1  COMPLETED      0:0
71.0             python                                1  COMPLETED      0:0

W katalogu roboczym zgodnie z instrukcją #SBATCH -o hello-%j.out został utworzony plik z wyjściem zwróconym przez zadanie:

less zadanie-71.out
Witaj świecie!