====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 [[slurm|queue rendszer]] ajánlott. A [[hpc2019]] részben a queue rendszer használata kötelező.
A rendszernek 3 partíciója (része) van: [[loginnode|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:
#!/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:
#!/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:
#!/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)