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.
sbatch -p hpc2019 ….
sbatch -p flocking ….
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.
A programot indítsa egy script. Példában a neve startscript.sh
sbatch -p login -n 1 startscript.sh
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:
#!/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
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
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.
Az indításhoz kell egy wrapper, például startscript.sh. Nézzen így ki:
#!/bin/bash mpirun.openmpi /teljes/utvonal/exename param1 param2
sbatch -p hpc2019 –nodes 4 –ntasks-per-node=8 startscript.sh
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:
sbatch -p hpc2019 -n 64 –mem-per-cpu=6G startscript.sh
Az indításhoz kell egy wrapper, például startscript.sh
. Nézzen így ki:
#!/bin/sh pvmrun /teljes/utvonal/programname
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)