Skrypty
Aby uruchomić zadanie na naszych zasobach musi ono być obudowane w odpowiedni skrypt.
Poniżej znajdują się przykładowe skrypty uruchomieniowe w PBS i SLURM
Skrypt należy indywidualnie zmodyfikować chcąc uruchomić zdanie wykorzystujące konkretne oprogramowanie zainstalowane na naszych klastrach
Skrypt uruchomieniowy PBS:
#!/bin/bash
#PBS -l nodes=1:ppn=4
#PBS -l mem=4gb
#PBS -l walltime=01:00:00
#PBS -o $PBS_JOBID.stdout
#PBS -e $PBS_JOBID.stderr
# SEKCJA MODUŁ Ustawiamy sciezki lub ladujemy odpowiednie moduly
module load nazwa_modułu
# Ustawiamy zmienna $TMPDIR
export TMPDIR="/tmp/lustre_shared/${USER}/${PBS_JOBID}"
# Ustawiamy zmienne aplikacji
export SCR=${TMPDIR}
# Ustawiamy zmienne pomocnicze
INPUT_DIR="input"
OUTPUT_DIR="output"
OUTPUT_FILE="OUTPUT"
# Tworzymy katalog tymczasowy
mkdir -p ${TMPDIR}
# Kopiujemy dane wejsciowe do katalogu wskazywanego zmienna $TMPDIR
cp ${PBS_O_WORKDIR}/${INPUT_DIR}/* ${TMPDIR}
# Przechodzimy do katalogu $TMPDIR
cd $TMPDIR
# Naglowek
cat << EOF
-------------------------------------------------------------------------------
Start of calculations [$(date)]
EOF
echo -n 'Job is running on node: ';awk '!x[$0]++' $PBS_NODEFILE | tr '\n' ' '
echo -e '\n'
cat << EOF
-------------------------------------------------------------------------------
Support: support-hpc@man.poznan.pl
-------------------------------------------------------------------------------
Variables
-------------------------------------------------------------------------------
PBS: qsub is running on $PBS_O_HOST
PBS: originating queue is $PBS_O_QUEUE
PBS: executing queue is $PBS_QUEUE
PBS: working directory is $PBS_O_WORKDIR
PBS: execution mode is $PBS_ENVIRONMENT
PBS: job identifier is $PBS_JOBID
PBS: job name is $PBS_JOBNAME
PBS: node file is $PBS_NODEFILE
PBS: PATH = $PBS_O_PATH
EOF
# SEKCJA RUN Wykonujemy obliczenia
#Tutaj należy wpisać komendę wykonującą obliczenia
# Stopka
cat << EOF
-------------------------------------------------------------------------------
End of calculations [$(date)].
-------------------------------------------------------------------------------
EOF
# Konczymy obliczenia, zawartosc katalogu $TMPDIR/output kopiujemy
# do katalogu z ktorego zakolejkowano zadanie.
mkdir $PBS_O_WORKDIR/${OUTPUT_DIR}
cp -r $TMPDIR/* $PBS_O_WORKDIR/${OUTPUT_DIR}/
# Czyscimy katalog roboczy
rm -rf $TMPDIR
Przykładowy skrypt uruchomieniowy SLURM:
#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=24
#SBATCH --mem=4gb
#SBATCH --time=01:00:00
# SEKCJA MODUŁ Ustawiamy sciezki lub ladujemy odpowiednie moduly
module load nazwa_modułu
# Ustawiamy zmienna $TMPDIR
export TMPDIR="/tmp/lustre_shared/${USER}/${SLURM_JOBID}"
# Ustawiamy zmienne aplikacji
export SCR=${TMPDIR}
# Ustawiamy zmienne pomocnicze
INPUT_DIR="input"
OUTPUT_DIR="output"
OUTPUT_FILE="OUTPUT"
# Tworzymy katalog tymczasowy
mkdir -p ${TMPDIR}
# Kopiujemy dane wejsciowe do katalogu wskazywanego zmienna $TMPDIR
cp ${SLURM_SUBMIT_DIR}/${INPUT_DIR}/* ${TMPDIR}
# Przechodzimy do katalogu $TMPDIR
cd $TMPDIR
# Naglowek
cat << EOF
-------------------------------------------------------------------------------
Start of calculations [$(date)]
EOF
cat << EOF
-------------------------------------------------------------------------------
Support: support-hpc@man.poznan.pl
-------------------------------------------------------------------------------
EOF
# SEKCJA RUN Wykonujemy obliczenia
#Tutaj należy wpisać komendę wykonującą obliczenia
# Stopka
cat << EOF
-------------------------------------------------------------------------------
End of calculations [$(date)].
-------------------------------------------------------------------------------
EOF
# Konczymy obliczenia, zawartosc katalogu $TMPDIR/output kopiujemy
# do katalogu z ktorego zakolejkowano zadanie.
mkdir $SLURM_SUBMIT_DIR/${OUTPUT_DIR}
cp -r $TMPDIR/* $SLURM_SUBMIT_DIR/${OUTPUT_DIR}/
# Czyscimy katalog roboczy
rm -rf $TMPDIR
