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

  • W sekcji MODUŁ należy podać nazwę modłów które mają być załadowywane np. module load gcc
  • W sekcji RUN należy podać komendę uruchomiającą zadnie z plikami wejściowymi
  • Wszystkie pliki wejściowe należy umieścić w katalogu input (plik ze skryptem powinien znajdować się w nadrzędnym katalogu)

    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