Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Tip

Vrijednost varijable select iz  iz zaglavlja PBS skripte odgovara broju MPI procesa, međutim, nema pripadajuću varijablu koju PBS sustav izvodi u okolinu.Kako bi se izbjeglo prepisivanje, u primjeru niže, definirana je varijabla MPI_NUM_PROCESSES koja odgovara vrijednosti varijable select .


Code Block
languagebash
linenumberstrue
#!/bin/bash

#PBS -q cpu
#PBS -l select=16

MPI_NUM_PROCESSES=$(cat ${PBS_NODEFILE} | wc -l)

cd ${PBS_O_WORKDIR}

mpiexec pw.x -n ${MPI_NUM_PROCESSES} pw.x -i calcite.i calcite.in

MPI + OpenMP (hibridna) paralelizacija

...

Tip

OpenMP aplikacije zahtijevaju definiranje varijable OMP_NUM_THREADS . PBS sustav joj automatski pridružuje vrijednost varijable ncpus , definirane u zaglavlju PBS skripte.

Vrijednost varijable select iz  iz zaglavlja PBS skripte odgovara broju MPI procesa, međutim, nema pripadajuću varijablu koju PBS sustav izvodi u okolinu. Kako bi se izbjeglo prepisivanje, u primjeru niže, definirana je varijabla MPI_NUM_PROCESSES koja odgovara vrijednosti varijable select .


Code Block
languagebash
linenumberstrue
#!/bin/bash

#PBS -q cpu
#PBS -l select=8:ncpus=4

MPI_NUM_PROCESSES=$(catcd ${PBS_O_NODEFILE} | wc -l)

cd ${PBS_O_WORKDIR}

mpiexec -n ${MPI_NUM_PROCESSES} -d ${OMP_NUM_THREADS} --cpu-bind depth gmx mdrun -v -deffnm md

Prilagođena raspodjela MPI procesa

Ukoliko sami želite kontrolirati kako će PBS sustav raspodjeliti Vašu aplikaciju na čvorove, odnosno koliko će se MPI procesa nalaziti na svakom čvoru, morate dodatno aktivirati opciju place=scatter u zaglavlju skripte, te koristiti mpiexec opciju --ppn , čiji je argument broj MPI procesa koji želite na svakom čvoru.

Primjer je dan s GROMACS aplikacijom niže, kojoj je svaki MPI proces smješten na vlastiti čvor. Aplikacija će se izvoditi na 8 čvorova i koristiti sumarno 32 procesorske jezgre; svaki MPI proces bit će smješten na vlastiti čvor, a svaki MPI proces dodatno će stvoriti 4 OpenMP dretve (eng. threads).

Code Block
languagebash
linenumberstrue
#!/bin/bash

#PBS -q cpu
#PBS -l select=8:ncpus=4
#PBS -l place=scatter

MPI_NUM_PROCESSES=$(cat ${PBS_NODEFILE} | wc -l)

cd ${PBS_O_WORKDIR}

mpiexec -n ${MPI_NUM_PROCESSES} --ppn 1WORKDIR}

mpiexec -d ${OMP_NUM_THREADS} --cpu-bind depth gmx mdrun -v -deffnm md

...