Felhasználói eszközök

Eszközök a webhelyen


swquide

Programok futtatása: single task, pthread, OpenMP, MPI, PVM

Nagy számítási kapacitású rendszereknél elkerülhetetlenül szükség van arra, hogy az alkalmazások futását valamilyen módon összehangoljuk, és megszervezzük az erőforrások elosztását. Emiatt rendszerünkön a programok futtatására a queue rendszer ajánlott. A hpc2019 részben a queue rendszer használata kötelező.

A rendszernek 3 partíciója (része) van: login, hpc2019, flocking. MPI/PVM szempontjából ezek átjárhatatlan partíciók, a program vagy az egyiken fut, vagy a másikon.

Futtatás a queue rendszeren keresztül az adott partíción

  • sbatch -p hpc2019 ….
  • sbatch -p flocking ….

Single task programok futtatása

Az az atlasz tervezési célja a többszálú, MPI programok hatékony futtatására. Amennyiben mégis a rendelkezésre álló program csak 1 szálú, úgy lehetőség van azt is futtatni.

1 darab egyszálú program indítása a login node-on

A programot indítsa egy script. Példában a neve startscript.sh

sbatch -p login -n 1 startscript.sh
8 darab egyszálú program indítása egyetlen jobként valamelyik számoló node-on

A programot indítsa egy script. Példában a neve startscript.sh Ez a script legyen képes arra, hogy 8 példányban indítsa el a programot, mindegyiket a megfelelő paraméterekkel. Például:

startscript.sh
#!/bin/bash
myprog < input1 > output1 &
myprog < input2 > output2 &
myprog < input3 > output3 &
myprog < input4 > output4 &
myprog < input5 > output5 &
myprog < input6 > output6 &
myprog < input7 > output7 &
myprog < input8 > output8 &
wait
sbatch -p hpc2019 --nodes 1 --ntasks-per-node=8 startscript.sh 
8 darab egyszálú program indítása 8 különböző jobként

A programotokat indítsa egy script. Példában az első programot indító script neve startscript01.sh

sbatch -p hpc2019 -n 1 startscript01.sh 
sbatch -p hpc2019 -n 1 startscript02.sh 
sbatch -p hpc2019 -n 1 startscript03.sh 
sbatch -p hpc2019 -n 1 startscript04.sh 
sbatch -p hpc2019 -n 1 startscript05.sh 
sbatch -p hpc2019 -n 1 startscript06.sh 
sbatch -p hpc2019 -n 1 startscript07.sh 
sbatch -p hpc2019 -n 1 startscript08.sh 

Pthread vagy OpenMP programok futtatása

A programot indítsa egy script. Példában a neve startscript.sh

sbatch -p hpc2019 --nodes 1 --ntasks-per-node=16 startscript.sh 

Ekkor a queue rendszer lefoglal 1 node-ot (-N) és azon egy példányban elindítja a startscript.sh programot. A hpc2019 partíción 18 core van. Hyperthread jelenleg nincs.

A „–ntasks-per-node” értéket a következő shellváltozó (environment variable) tartalmazza: SLURM_TASKS_PER_NODE

Érdemes automatizmust gyártani, ami ennek megfelelően indítja az OpenMP vagy Pthread programot.

Rengeteg olyan Openmp vagy Pthread programmal találkoztunk, ami 2 hatvány szálon (2,4,8,16) gyorsabban futott, mint másképp. Érdemes 18 mag helyett csak 16-ot allokálni, legalább egyszer kipróbálva.

Open MPI programok futtatása

Az indításhoz kell egy wrapper, például startscript.sh. Nézzen így ki:

startscript.sh
#!/bin/bash
mpirun.openmpi /teljes/utvonal/exename param1 param2
  • indítás 4 node-on, mindegyiken 8 magon
    • sbatch -p hpc2019 –nodes 4 –ntasks-per-node=8 startscript.sh
  • indítás 4 node-on, mindegyiken 16 szálon
    • sbatch -p hpc2019 –nodes 4 –ntasks-per-node=16 startscript.sh

Javasoljuk tesztelésképpen kipróbálni, hogy a –ntasks-per-node=16 vagy a –ntasks-per-node=18 ad jobb futási teljesítményt.

Amenmyiben az alkalmazás magonként több mint 5 Gbyte memóriát igényel, úgy nem lehet minden magon futtatni. Ha például az alkalmazás szálanként 6 Gbyte memóriát igényel, úgy indokolt lehet további paramétereket adni a sbatch parancsnak:

  • indítás 64 szálon, de mindegyikhez 6 GB memória
    • sbatch -p hpc2019 -n 64 –mem-per-cpu=6G startscript.sh

PVM programok futtatása

PVM programok használata a queue rendszeren keresztül

Az indításhoz kell egy wrapper, például startscript.sh. Nézzen így ki:

startscript.sh
#!/bin/sh
pvmrun /teljes/utvonal/programname
  • Például indítás 4 node-on.
    • sbatch -p hpc2019 –nodes 4 -O startscript.sh

A pvmrun parancs automatikusan elinditja a pvmd -ket, beallitja a pvm konfigurációt (hostfile) annak megfelelően, hogy a queue rendszer éppen hol futtatja a jobot. A program végrehajtása után felszámolja a pvm környezetet.

A pvm konzolt hívni külön nem kell. A kimenetként kapott slurm-`job-id'.out fájlban benne lesz a virtuális gép konfigurációja. (pvm> conf parancs)

swquide.txt · Utolsó módosítás: 2021/03/03 00:06 szerkesztette: maulis