====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)