<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
		<id>https://wiki.niif.hu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Roczei%28AT%29niif.hu</id>
		<title>Pro-M - Oktatási Üzletág - Wiki - Szerkesztő közreműködései [hu]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.niif.hu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Roczei%28AT%29niif.hu"/>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Speci%C3%A1lis:Szerkeszt%C5%91_k%C3%B6zrem%C5%B1k%C3%B6d%C3%A9sei/Roczei(AT)niif.hu"/>
		<updated>2026-11-07T22:32:18Z</updated>
		<subtitle>Szerkesztő közreműködései</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=NIIF_HPC_(English)&amp;diff=3494</id>
		<title>NIIF HPC (English)</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=NIIF_HPC_(English)&amp;diff=3494"/>
				<updated>2015-11-18T06:54:22Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* NIIF HPC resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[HPC|Magyar változat]]&lt;br /&gt;
== Supercomputing ==&lt;br /&gt;
NIIF Institute has been operating supercomputer since 2001. The service provides scientific computation and data storage facilities. The components of the supercomputing infrastructure found in five locations:&lt;br /&gt;
 &lt;br /&gt;
* NIIF centre Budapest&lt;br /&gt;
* University of Debrecen&lt;br /&gt;
* University of Pécs&lt;br /&gt;
* University of Szeged&lt;br /&gt;
* University of Miskolc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Orszagos-attekinto_hpc.png|center|700px|Az NIIF szuperszámítógépei térképen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Various supercomputer architectures are available in different locations, because we need to support different types of scientific computing tasks. In order to support all kinds of scientific computational needs different computer architectures are available. We have cluster based supercomputers in three locations and two ccNUMA machine. The supercomputers are operated by NIIF Institute staff. The latest development tools and scientific applications are available for the users. The documentation of the supercomputers can be found here.&lt;br /&gt;
 &lt;br /&gt;
Any person or research group who has a contractual relationship with the NIIF Institute can use the service. Usage of the supercomputers is free for authorised users. New users should request a HPC project here. After the project is accepted invitations can be sent out for group members by the principal investigator. Invitations for the HPC portal can be managed [https://portal.hpc.niif.hu/ here].&lt;br /&gt;
&lt;br /&gt;
==== NIIF HPC resources ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Location&lt;br /&gt;
| Budapest&lt;br /&gt;
| [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
| Szeged&lt;br /&gt;
| Debrecen&lt;br /&gt;
| [[Debrecen2_GPU_klaszter|Debrecen2-GPU (LEO)]] (test phase)&lt;br /&gt;
| Debrecen2-Phi (setup in progress)&lt;br /&gt;
| Pécs&lt;br /&gt;
| [[Miskolc_UV_2000|Miskolc]] (test phase)&lt;br /&gt;
|- &lt;br /&gt;
| Type&lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| HP SL250s &lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| SGI ICE8400EX&lt;br /&gt;
| HP SL250s&lt;br /&gt;
&lt;br /&gt;
| HP Apollo 8000&lt;br /&gt;
| SGI UV 1000&lt;br /&gt;
&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| CPU / node &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 4 &lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
&lt;br /&gt;
| 2 &lt;br /&gt;
| 192&lt;br /&gt;
&lt;br /&gt;
| 44 &lt;br /&gt;
|- &lt;br /&gt;
| Core / CPU &lt;br /&gt;
| 12&lt;br /&gt;
| 10&lt;br /&gt;
| 12&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
| 12&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
|- &lt;br /&gt;
| Memory / node &lt;br /&gt;
| 66 GB&lt;br /&gt;
| 63 GB &lt;br /&gt;
| 132 GB&lt;br /&gt;
| 47 GB&lt;br /&gt;
| 125 GB&lt;br /&gt;
| 125 GB&lt;br /&gt;
| 6 TB&lt;br /&gt;
| 1.4 TB&lt;br /&gt;
|- &lt;br /&gt;
| Memory / core &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 3 GB &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 7.5 GB&lt;br /&gt;
| 7.5 GB&lt;br /&gt;
| 5 GB&lt;br /&gt;
| 4 GB&lt;br /&gt;
|- &lt;br /&gt;
| CPU &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz&lt;br /&gt;
| Intel Xeon E5-2680 v2 @ 2.80GHz    &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz &lt;br /&gt;
| Intel Xeon X5680 @ 3.33 GHz&lt;br /&gt;
| Intel Xeon E5-2650 v2 @ 2.60GHz &lt;br /&gt;
&lt;br /&gt;
| Intel Xeon E5-2670 v3 @ 2.30GHz&lt;br /&gt;
| Intel Xeon X7542 @ 2.66 GHz&lt;br /&gt;
| Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| GPU &lt;br /&gt;
| -&lt;br /&gt;
| -   &lt;br /&gt;
| 2 * 6 Nvidia M2070&lt;br /&gt;
| -&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Intel Xeon Phi &lt;br /&gt;
| -&lt;br /&gt;
| 14 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -  &lt;br /&gt;
| -&lt;br /&gt;
&lt;br /&gt;
| 44 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| Linpack Performance (Rmax)&lt;br /&gt;
| 5 Tflops&lt;br /&gt;
| 27 Tflops&lt;br /&gt;
| 20 Tflops&lt;br /&gt;
| 18 Tlops&lt;br /&gt;
| ~280 Tflops&lt;br /&gt;
| ~106 Tflops&lt;br /&gt;
| 10 Tflops&lt;br /&gt;
| 8 Tflops&lt;br /&gt;
|- &lt;br /&gt;
| Compute nodes&lt;br /&gt;
| 32&lt;br /&gt;
| 14&lt;br /&gt;
| 50&lt;br /&gt;
| 128&lt;br /&gt;
| 84&lt;br /&gt;
| 44&lt;br /&gt;
| 1&lt;br /&gt;
&lt;br /&gt;
| 1&lt;br /&gt;
|-  &lt;br /&gt;
| Dedicated storage &lt;br /&gt;
| 50 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 250 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 585 TB (combined with Phi)&lt;br /&gt;
| 585 TB (combined with GPU)&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 240 TB&lt;br /&gt;
|- &lt;br /&gt;
| Scheduler &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]  &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
|- &lt;br /&gt;
| MPI &lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| IntelMPI (impi) &lt;br /&gt;
| OpenMPI (ompi) &lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Contact ====&lt;br /&gt;
 &lt;br /&gt;
If you have any questions send email to the following address: hpc-support@niif.hu&lt;br /&gt;
 &lt;br /&gt;
Or contact the HPC users in Hungary on the following mailing list: hpc-forum@listserv.niif.hu, you can subscribe [https://listserv.niif.hu/mailman/listinfo/hpc-forum here].&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
* [http://www.niif.hu/node/679 General information]&lt;br /&gt;
&lt;br /&gt;
* [[PRACE_User_Support|User Support (PRACE, and general)]]&lt;br /&gt;
* [http://www.training.prace-ri.eu PRACE training portal]&lt;br /&gt;
&lt;br /&gt;
[[Kategória: HPC]]&lt;br /&gt;
[[Kategória: Összefoglaló lapok]]&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=HPC&amp;diff=3493</id>
		<title>HPC</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=HPC&amp;diff=3493"/>
				<updated>2015-11-18T06:52:51Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Magyar Szuperszámítógépek összehasonlítása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[HPC_en|NIIF HPC in ENGLISH]]&lt;br /&gt;
&lt;br /&gt;
== A szuperszámítógépekről ==&lt;br /&gt;
Az NIIF Intézet szuperszámítógép szolgáltatása tudományos számítási feladatok futtatására, valamint tudományos célú adattárolásra szolgál. A jelenleg integrált szuperszámítógép-rendszer komponensei négy helyszínen találhatók:&lt;br /&gt;
&lt;br /&gt;
* Debreceni Egyetem&lt;br /&gt;
* NIIFI központ&lt;br /&gt;
* Pécsi Tudományegyetem&lt;br /&gt;
* Szegedi Tudományegyetem&lt;br /&gt;
* Miskolci Egyetem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Orszagos-attekinto_hpc.png|center|700px|alt=Az NIIF szuperszámítógépei térképen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A tudományos számítási feladatok különböző típusainak minél szélesebb körű lefedettsége érdekében az egyes helyszíneken különböző felépítésű gépek találhatók: két helyszínen ccNUMA, három helyszínen pedig &amp;quot;fat-node&amp;quot; fürtözött megoldás. Az alrendszereket az NIIFI nagy sávszélességű, alacsony késleltetésű HBONE+ adathálózatán keresztül, ARC grid köztesréteg, valamint harmonizált felhasználói azonosítás segítségével integráljuk egységes elvek mentén elérhető számítási egységgé. Az erőforrás jelenleg Magyarország legnagyobb tudományos számítás céljára felhasználható erőforrása, amely összesen 50 billió lebegőpontos művelet elvégzését teszi lehetővé másodpercenként.&lt;br /&gt;
A szuperszámítógép-rendszert az NIIFI üzemelteti és fejleszti. A rendszerhez regisztrációt követően, minden olyan személy vagy kutatócsoport hozzáférhet, amely tagintézményi szerződéses kapcsolatban áll az NIIF Intézettel.&lt;br /&gt;
A gépen megtalálhatók és futtathatók a legkorszerűbb fejlesztőeszközök és tudományos számításra szolgáló alkalmazások, valamint, az NIIF adatközpontban elhelyezett alrendszer kivételével, valamennyi alrendszer kiegészül a számítási feladatok eredményeit megjelenítő vizualizációs eszközökkel.&lt;br /&gt;
&lt;br /&gt;
==== Magyar Szuperszámítógépek összehasonlítása ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Helyszín&lt;br /&gt;
| Budapest&lt;br /&gt;
| [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
| Szeged&lt;br /&gt;
| Debrecen&lt;br /&gt;
| [[Debrecen2_GPU_klaszter|Debrecen2-GPU]] (tesztüzem)&lt;br /&gt;
| Debrecen2-Phi (beüzemelése folyamatban van)&lt;br /&gt;
| Pécs&lt;br /&gt;
&lt;br /&gt;
| [[Miskolc_UV_2000|Miskolc]] (tesztüzem)&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| HP SL250s &lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| SGI ICE8400EX&lt;br /&gt;
| HP SL250s&lt;br /&gt;
&lt;br /&gt;
| HP Apollo 8000&lt;br /&gt;
| SGI UV 1000&lt;br /&gt;
&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| CPU-k / node &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 4 &lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
&lt;br /&gt;
| 2 &lt;br /&gt;
| 192&lt;br /&gt;
&lt;br /&gt;
| 44 &lt;br /&gt;
|- &lt;br /&gt;
| Core-ok / CPU &lt;br /&gt;
| 12&lt;br /&gt;
| 10&lt;br /&gt;
| 12&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
| 12&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
|- &lt;br /&gt;
| Memória / node &lt;br /&gt;
| 66 GB&lt;br /&gt;
| 63 GB &lt;br /&gt;
| 132 GB&lt;br /&gt;
| 47 GB&lt;br /&gt;
| 125 GB&lt;br /&gt;
| 125 GB&lt;br /&gt;
| 6 TB&lt;br /&gt;
| 1.4 TB&lt;br /&gt;
|- &lt;br /&gt;
| Memória / core &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 3 GB &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 7.5 GB&lt;br /&gt;
| 7.5 GB&lt;br /&gt;
| 5 GB&lt;br /&gt;
| 4 GB&lt;br /&gt;
|- &lt;br /&gt;
| CPU &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz&lt;br /&gt;
| Intel Xeon E5-2680 v2 @ 2.80GHz    &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz &lt;br /&gt;
| Intel Xeon X5680 @ 3.33 GHz&lt;br /&gt;
| Intel Xeon E5-2650 v2 @ 2.60GHz &lt;br /&gt;
| Intel Xeon E5-2670 v3 @ 2.30GHz&lt;br /&gt;
| Intel Xeon X7542 @ 2.66 GHz&lt;br /&gt;
| Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| GPU &lt;br /&gt;
| -&lt;br /&gt;
| -   &lt;br /&gt;
| 2 * 6 Nvidia M2070&lt;br /&gt;
| -&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Intel Xeon Phi &lt;br /&gt;
| -&lt;br /&gt;
| 14 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -  &lt;br /&gt;
| -&lt;br /&gt;
| 44 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| Linpack teljesítmény (Rmax)&lt;br /&gt;
| 5 Tflops&lt;br /&gt;
| 27 Tflops&lt;br /&gt;
| 20 Tflops&lt;br /&gt;
| 18 Tlops&lt;br /&gt;
| ~280 Tflops&lt;br /&gt;
| ~106 Tflops&lt;br /&gt;
| 10 Tflops&lt;br /&gt;
| 8 Tflops&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok száma &lt;br /&gt;
| 32&lt;br /&gt;
| 14&lt;br /&gt;
| 50&lt;br /&gt;
| 128&lt;br /&gt;
| 84&lt;br /&gt;
| 44&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
|-  &lt;br /&gt;
| Dedikált storage &lt;br /&gt;
| 50 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 250 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 585 TB (Phi-vel közös)&lt;br /&gt;
| 585 TB (GPU-val közös)&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 240 TB&lt;br /&gt;
|- &lt;br /&gt;
| Scheduler &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]  &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
|- &lt;br /&gt;
| MPI &lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| IntelMPI (impi) &lt;br /&gt;
| OpenMPI (ompi) &lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== További információ ==&lt;br /&gt;
&lt;br /&gt;
* [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
* [[Miskolc_UV_2000|Miskolc]]&lt;br /&gt;
* [[Debrecen2_GPU_klaszter|Debrecen2 GPU klaszter]]&lt;br /&gt;
* [[HPC-Portal|HPC portál: projekt és témaszámok kezelése, leállások, statisztikák]]&lt;br /&gt;
* [[NIIF_szuperszámítógépek_használata|A szuperszámítógépek használata]]&lt;br /&gt;
* [[HPC-GYIK|GY.I.K]]&lt;br /&gt;
* [http://www.niif.hu/hu/niif_intezet/az_niifi_szuperszamitogepek_hasznalata NIIF HPC oldal]&lt;br /&gt;
* [http://conference.niif.hu/event/3/session/23/contribution/25 HPC tutorial (Networkshop 2015)]&lt;br /&gt;
* [http://www.training.prace-ri.eu PRACE training portal]&lt;br /&gt;
* [[PRACE_User_Support|PRACE User Support]]&lt;br /&gt;
[[Kategória: HPC]]&lt;br /&gt;
[[Kategória: Összefoglaló lapok]]&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=HPC&amp;diff=3492</id>
		<title>HPC</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=HPC&amp;diff=3492"/>
				<updated>2015-11-18T06:52:01Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Magyar Szuperszámítógépek összehasonlítása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[HPC_en|NIIF HPC in ENGLISH]]&lt;br /&gt;
&lt;br /&gt;
== A szuperszámítógépekről ==&lt;br /&gt;
Az NIIF Intézet szuperszámítógép szolgáltatása tudományos számítási feladatok futtatására, valamint tudományos célú adattárolásra szolgál. A jelenleg integrált szuperszámítógép-rendszer komponensei négy helyszínen találhatók:&lt;br /&gt;
&lt;br /&gt;
* Debreceni Egyetem&lt;br /&gt;
* NIIFI központ&lt;br /&gt;
* Pécsi Tudományegyetem&lt;br /&gt;
* Szegedi Tudományegyetem&lt;br /&gt;
* Miskolci Egyetem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Orszagos-attekinto_hpc.png|center|700px|alt=Az NIIF szuperszámítógépei térképen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A tudományos számítási feladatok különböző típusainak minél szélesebb körű lefedettsége érdekében az egyes helyszíneken különböző felépítésű gépek találhatók: két helyszínen ccNUMA, három helyszínen pedig &amp;quot;fat-node&amp;quot; fürtözött megoldás. Az alrendszereket az NIIFI nagy sávszélességű, alacsony késleltetésű HBONE+ adathálózatán keresztül, ARC grid köztesréteg, valamint harmonizált felhasználói azonosítás segítségével integráljuk egységes elvek mentén elérhető számítási egységgé. Az erőforrás jelenleg Magyarország legnagyobb tudományos számítás céljára felhasználható erőforrása, amely összesen 50 billió lebegőpontos művelet elvégzését teszi lehetővé másodpercenként.&lt;br /&gt;
A szuperszámítógép-rendszert az NIIFI üzemelteti és fejleszti. A rendszerhez regisztrációt követően, minden olyan személy vagy kutatócsoport hozzáférhet, amely tagintézményi szerződéses kapcsolatban áll az NIIF Intézettel.&lt;br /&gt;
A gépen megtalálhatók és futtathatók a legkorszerűbb fejlesztőeszközök és tudományos számításra szolgáló alkalmazások, valamint, az NIIF adatközpontban elhelyezett alrendszer kivételével, valamennyi alrendszer kiegészül a számítási feladatok eredményeit megjelenítő vizualizációs eszközökkel.&lt;br /&gt;
&lt;br /&gt;
==== Magyar Szuperszámítógépek összehasonlítása ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Helyszín&lt;br /&gt;
| Budapest&lt;br /&gt;
| [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
| Szeged&lt;br /&gt;
| Debrecen&lt;br /&gt;
| [[Debrecen2_GPU_klaszter|Debrecen2-GPU]] (tesztüzem)&lt;br /&gt;
| Debrecen2-Phi (beüzemelése folyamatban van)&lt;br /&gt;
| Pécs&lt;br /&gt;
&lt;br /&gt;
| [[Miskolc_UV_2000|Miskolc]] (tesztüzem)&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| HP SL250s &lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| SGI ICE8400EX&lt;br /&gt;
| HP SL250s&lt;br /&gt;
&lt;br /&gt;
| HP Apollo 8000&lt;br /&gt;
| SGI UV 1000&lt;br /&gt;
&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| CPU-k / node &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 4 &lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
&lt;br /&gt;
| 2 &lt;br /&gt;
| 192&lt;br /&gt;
&lt;br /&gt;
| 44 &lt;br /&gt;
|- &lt;br /&gt;
| Core-ok / CPU &lt;br /&gt;
| 12&lt;br /&gt;
| 10&lt;br /&gt;
| 12&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
|- &lt;br /&gt;
| Memória / node &lt;br /&gt;
| 66 GB&lt;br /&gt;
| 63 GB &lt;br /&gt;
| 132 GB&lt;br /&gt;
| 47 GB&lt;br /&gt;
| 125 GB&lt;br /&gt;
| 125 GB&lt;br /&gt;
| 6 TB&lt;br /&gt;
| 1.4 TB&lt;br /&gt;
|- &lt;br /&gt;
| Memória / core &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 3 GB &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 7.5 GB&lt;br /&gt;
| 7.5 GB&lt;br /&gt;
| 5 GB&lt;br /&gt;
| 4 GB&lt;br /&gt;
|- &lt;br /&gt;
| CPU &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz&lt;br /&gt;
| Intel Xeon E5-2680 v2 @ 2.80GHz    &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz &lt;br /&gt;
| Intel Xeon X5680 @ 3.33 GHz&lt;br /&gt;
| Intel Xeon E5-2650 v2 @ 2.60GHz &lt;br /&gt;
| Intel Xeon E5-2670 v3 @ 2.30GHz&lt;br /&gt;
| Intel Xeon X7542 @ 2.66 GHz&lt;br /&gt;
| Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| GPU &lt;br /&gt;
| -&lt;br /&gt;
| -   &lt;br /&gt;
| 2 * 6 Nvidia M2070&lt;br /&gt;
| -&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Intel Xeon Phi &lt;br /&gt;
| -&lt;br /&gt;
| 14 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -  &lt;br /&gt;
| -&lt;br /&gt;
| 44 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| Linpack teljesítmény (Rmax)&lt;br /&gt;
| 5 Tflops&lt;br /&gt;
| 27 Tflops&lt;br /&gt;
| 20 Tflops&lt;br /&gt;
| 18 Tlops&lt;br /&gt;
| ~280 Tflops&lt;br /&gt;
| ~106 Tflops&lt;br /&gt;
| 10 Tflops&lt;br /&gt;
| 8 Tflops&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok száma &lt;br /&gt;
| 32&lt;br /&gt;
| 14&lt;br /&gt;
| 50&lt;br /&gt;
| 128&lt;br /&gt;
| 84&lt;br /&gt;
| 44&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
|-  &lt;br /&gt;
| Dedikált storage &lt;br /&gt;
| 50 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 250 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 585 TB (Phi-vel közös)&lt;br /&gt;
| 585 TB (GPU-val közös)&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 240 TB&lt;br /&gt;
|- &lt;br /&gt;
| Scheduler &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]  &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
|- &lt;br /&gt;
| MPI &lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| IntelMPI (impi) &lt;br /&gt;
| OpenMPI (ompi) &lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== További információ ==&lt;br /&gt;
&lt;br /&gt;
* [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
* [[Miskolc_UV_2000|Miskolc]]&lt;br /&gt;
* [[Debrecen2_GPU_klaszter|Debrecen2 GPU klaszter]]&lt;br /&gt;
* [[HPC-Portal|HPC portál: projekt és témaszámok kezelése, leállások, statisztikák]]&lt;br /&gt;
* [[NIIF_szuperszámítógépek_használata|A szuperszámítógépek használata]]&lt;br /&gt;
* [[HPC-GYIK|GY.I.K]]&lt;br /&gt;
* [http://www.niif.hu/hu/niif_intezet/az_niifi_szuperszamitogepek_hasznalata NIIF HPC oldal]&lt;br /&gt;
* [http://conference.niif.hu/event/3/session/23/contribution/25 HPC tutorial (Networkshop 2015)]&lt;br /&gt;
* [http://www.training.prace-ri.eu PRACE training portal]&lt;br /&gt;
* [[PRACE_User_Support|PRACE User Support]]&lt;br /&gt;
[[Kategória: HPC]]&lt;br /&gt;
[[Kategória: Összefoglaló lapok]]&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Debrecen2_GPU_klaszter&amp;diff=3491</id>
		<title>Debrecen2 GPU klaszter</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Debrecen2_GPU_klaszter&amp;diff=3491"/>
				<updated>2015-11-16T13:26:57Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Hibrid MPI-OMP feladatok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Klaszter&lt;br /&gt;
| Debrecen2 (Leo)&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 8 × 2 Xeon E5-2650v2 2.60GHz  &lt;br /&gt;
|- &lt;br /&gt;
| GPU / node&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 84 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max core-ok / projekt&lt;br /&gt;
| 336 (21db node)&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 7800 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CPU idő kérés ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{ATTENTION|A CPU idő igénylésekor egy olyan rövid indoklást várunk a HPC projekt vezetőktől, amiből kiderül, hogy a futtatandó alkalmazás képes GPU-t használni. Erre azért van szükség, mert az erőforrás teljesítményének nagyobbik része GPU gyorsításból származik, egy gyorsítás nélküli program a CPU-kat lefoglalja, korlátozva ezzel a GPU-k használatát, ami kihasználatlansághoz vezet. Az NVidia  [http://www.nvidia.com/object/gpu-applications.html közzétett egy listát] arról, hogy melyik alkalmazás rendelkezik jelenleg hivatalosan NVidia GPU támogatással, de természetesen egyéb, GPU-t használó program is nagy valószínűséggel jól fut a gépen.}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.debrecen2.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.debrecen2.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.debrecen2.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.debrecen2.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.debrecen2.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
    DEBRECEN2[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== GPU-k lefoglalása ====&lt;br /&gt;
A GPU-k lefoglalása a következő direktívával törénik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=gpu:N&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; a GPU-k/node számát adja meg, ami 1, 2 és 3 lehet maximum.&lt;br /&gt;
&lt;br /&gt;
==== Interaktív használat ====&lt;br /&gt;
Rövid interaktív feladatokat az 'srun' paranccsal tudunk beküldeni, pl.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun -l -n 1 -t TIME --gres=gpu:1 -A ACCOUNT APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Batch job-ok indítása ====&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépen két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;prod-gpu-k40&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod-gpu-k20&amp;lt;/code&amp;gt; sor. Mind a kettő éles számolásokra való, az első olyan CN gépeket tartalmaz amikben Nvidia K40x GPU-k, a másodikban pedig Nvidia K20x GPU-k vannak. Az alapértelmezett sor a &amp;lt;code&amp;gt; prod-gpu-k20&amp;lt;/code&amp;gt;. A prod-gpu-k40 partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=prod-gpu-k40&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. A maximális memória/core 7800 MB lehet.&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=8&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
mpirun --report-pid ${TMPDIR}/mpirun.pid PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=8&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 8 CPU core-t rendeltunk, a 8 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 8 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=8&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 8 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 8 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=8&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Maple Grid feladatok ====&lt;br /&gt;
Maple-t az OMP feladatokhoz hasonlóan 1 node-on lehet futtatni. Használatához be kell tölteni a maple modult is. A Maple kliens-szerver üzemmódban működik ezért a Maple feladat futtatása előtt szükség van a grid szerver elindítására is (&amp;lt;code&amp;gt;${MAPLE}/toolbox/Grid/bin/startserver&amp;lt;/code&amp;gt;). Ez az alkalmazás licensz köteles, amit a jobszkriptben meg kell adni (&amp;lt;code&amp;gt;#SBATCH --licenses=maplegrid:1&amp;lt;/code&amp;gt;). A Maple feladat indátását a &amp;lt;code&amp;gt;${MAPLE}/toolbox/Grid/bin/joblauncher&amp;lt;/code&amp;gt; paranccsal kell elvégezni.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, 6 órára indítja el a Maple Grid alkalmazást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=maple&lt;br /&gt;
#SBATCH -N 1&lt;br /&gt;
#SBATCH --ntasks-per-node=16&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
#SBATCH --licenses=maplegrid:1&lt;br /&gt;
&lt;br /&gt;
module load maple&lt;br /&gt;
&lt;br /&gt;
${MAPLE}/toolbox/Grid/bin/startserver&lt;br /&gt;
${MAPLE}/toolbox/Grid/bin/joblauncher ${MAPLE}/toolbox/Grid/samples/Simple.mpl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=HPC&amp;diff=3490</id>
		<title>HPC</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=HPC&amp;diff=3490"/>
				<updated>2015-11-16T13:21:55Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* További információ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[HPC_en|NIIF HPC in ENGLISH]]&lt;br /&gt;
&lt;br /&gt;
== A szuperszámítógépekről ==&lt;br /&gt;
Az NIIF Intézet szuperszámítógép szolgáltatása tudományos számítási feladatok futtatására, valamint tudományos célú adattárolásra szolgál. A jelenleg integrált szuperszámítógép-rendszer komponensei négy helyszínen találhatók:&lt;br /&gt;
&lt;br /&gt;
* Debreceni Egyetem&lt;br /&gt;
* NIIFI központ&lt;br /&gt;
* Pécsi Tudományegyetem&lt;br /&gt;
* Szegedi Tudományegyetem&lt;br /&gt;
* Miskolci Egyetem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Orszagos-attekinto_hpc.png|center|700px|alt=Az NIIF szuperszámítógépei térképen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A tudományos számítási feladatok különböző típusainak minél szélesebb körű lefedettsége érdekében az egyes helyszíneken különböző felépítésű gépek találhatók: két helyszínen ccNUMA, három helyszínen pedig &amp;quot;fat-node&amp;quot; fürtözött megoldás. Az alrendszereket az NIIFI nagy sávszélességű, alacsony késleltetésű HBONE+ adathálózatán keresztül, ARC grid köztesréteg, valamint harmonizált felhasználói azonosítás segítségével integráljuk egységes elvek mentén elérhető számítási egységgé. Az erőforrás jelenleg Magyarország legnagyobb tudományos számítás céljára felhasználható erőforrása, amely összesen 50 billió lebegőpontos művelet elvégzését teszi lehetővé másodpercenként.&lt;br /&gt;
A szuperszámítógép-rendszert az NIIFI üzemelteti és fejleszti. A rendszerhez regisztrációt követően, minden olyan személy vagy kutatócsoport hozzáférhet, amely tagintézményi szerződéses kapcsolatban áll az NIIF Intézettel.&lt;br /&gt;
A gépen megtalálhatók és futtathatók a legkorszerűbb fejlesztőeszközök és tudományos számításra szolgáló alkalmazások, valamint, az NIIF adatközpontban elhelyezett alrendszer kivételével, valamennyi alrendszer kiegészül a számítási feladatok eredményeit megjelenítő vizualizációs eszközökkel.&lt;br /&gt;
&lt;br /&gt;
==== Magyar Szuperszámítógépek összehasonlítása ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Helyszín&lt;br /&gt;
| Budapest&lt;br /&gt;
| [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
| Szeged&lt;br /&gt;
| Debrecen&lt;br /&gt;
| [[Debrecen2_GPU_klaszter|Debrecen2-GPU]] (tesztüzem)&lt;br /&gt;
| Debrecen2-Phi (beüzemelése folyamatban van)&lt;br /&gt;
| Pécs&lt;br /&gt;
&lt;br /&gt;
| [[Miskolc_UV_2000|Miskolc]] (tesztüzem)&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| HP SL250s &lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| SGI ICE8400EX&lt;br /&gt;
| HP SL250s&lt;br /&gt;
&lt;br /&gt;
| HP Apollo 8000&lt;br /&gt;
| SGI UV 1000&lt;br /&gt;
&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| CPU-k / node &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 4 &lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
&lt;br /&gt;
| 2 &lt;br /&gt;
| 192&lt;br /&gt;
&lt;br /&gt;
| 44 &lt;br /&gt;
|- &lt;br /&gt;
| Core-ok / CPU &lt;br /&gt;
| 12&lt;br /&gt;
| 10&lt;br /&gt;
| 12&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
|- &lt;br /&gt;
| Memória / node &lt;br /&gt;
| 66 GB&lt;br /&gt;
| 63 GB &lt;br /&gt;
| 132 GB&lt;br /&gt;
| 47 GB&lt;br /&gt;
| 125 GB&lt;br /&gt;
| 128 GB&lt;br /&gt;
| 6 TB&lt;br /&gt;
| 1.4 TB&lt;br /&gt;
|- &lt;br /&gt;
| Memória / core &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 3 GB &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 7.5 GB&lt;br /&gt;
| 8 GB&lt;br /&gt;
| 5 GB&lt;br /&gt;
| 4 GB&lt;br /&gt;
|- &lt;br /&gt;
| CPU &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz&lt;br /&gt;
| Intel Xeon E5-2680 v2 @ 2.80GHz    &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz &lt;br /&gt;
| Intel Xeon X5680 @ 3.33 GHz&lt;br /&gt;
| Intel Xeon E5-2650 v2 @ 2.60GHz &lt;br /&gt;
&lt;br /&gt;
| Intel Xeon E5-2670&lt;br /&gt;
| Intel Xeon X7542 @ 2.66 GHz&lt;br /&gt;
| Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| GPU &lt;br /&gt;
| -&lt;br /&gt;
| -   &lt;br /&gt;
| 2 * 6 Nvidia M2070&lt;br /&gt;
| -&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Intel Xeon Phi &lt;br /&gt;
| -&lt;br /&gt;
| 14 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -  &lt;br /&gt;
| -&lt;br /&gt;
&lt;br /&gt;
| 45 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| Linpack teljesítmény (Rmax)&lt;br /&gt;
| 5 Tflops&lt;br /&gt;
| 27 Tflops&lt;br /&gt;
| 20 Tflops&lt;br /&gt;
| 18 Tlops&lt;br /&gt;
| ~280 Tflops&lt;br /&gt;
| ~106 Tflops&lt;br /&gt;
| 10 Tflops&lt;br /&gt;
| 8 Tflops&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok száma &lt;br /&gt;
| 32&lt;br /&gt;
| 14&lt;br /&gt;
| 50&lt;br /&gt;
| 128&lt;br /&gt;
| 84&lt;br /&gt;
| 45&lt;br /&gt;
| 1&lt;br /&gt;
&lt;br /&gt;
| 1&lt;br /&gt;
|-  &lt;br /&gt;
| Dedikált storage &lt;br /&gt;
| 50 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 250 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 585 TB (Phi-vel közös)&lt;br /&gt;
| 585 TB (GPU-val közös)&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 240 TB&lt;br /&gt;
|- &lt;br /&gt;
| Scheduler &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]  &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
|- &lt;br /&gt;
| MPI &lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| IntelMPI (impi) &lt;br /&gt;
| OpenMPI (ompi) &lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== További információ ==&lt;br /&gt;
&lt;br /&gt;
* [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
* [[Miskolc_UV_2000|Miskolc]]&lt;br /&gt;
* [[Debrecen2_GPU_klaszter|Debrecen2 GPU klaszter]]&lt;br /&gt;
* [[HPC-Portal|HPC portál: projekt és témaszámok kezelése, leállások, statisztikák]]&lt;br /&gt;
* [[NIIF_szuperszámítógépek_használata|A szuperszámítógépek használata]]&lt;br /&gt;
* [[HPC-GYIK|GY.I.K]]&lt;br /&gt;
* [http://www.niif.hu/hu/niif_intezet/az_niifi_szuperszamitogepek_hasznalata NIIF HPC oldal]&lt;br /&gt;
* [http://conference.niif.hu/event/3/session/23/contribution/25 HPC tutorial (Networkshop 2015)]&lt;br /&gt;
* [http://www.training.prace-ri.eu PRACE training portal]&lt;br /&gt;
* [[PRACE_User_Support|PRACE User Support]]&lt;br /&gt;
[[Kategória: HPC]]&lt;br /&gt;
[[Kategória: Összefoglaló lapok]]&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=HPC&amp;diff=3489</id>
		<title>HPC</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=HPC&amp;diff=3489"/>
				<updated>2015-11-12T14:28:51Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Magyar Szuperszámítógépek összehasonlítása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[HPC_en|NIIF HPC in ENGLISH]]&lt;br /&gt;
&lt;br /&gt;
== A szuperszámítógépekről ==&lt;br /&gt;
Az NIIF Intézet szuperszámítógép szolgáltatása tudományos számítási feladatok futtatására, valamint tudományos célú adattárolásra szolgál. A jelenleg integrált szuperszámítógép-rendszer komponensei négy helyszínen találhatók:&lt;br /&gt;
&lt;br /&gt;
* Debreceni Egyetem&lt;br /&gt;
* NIIFI központ&lt;br /&gt;
* Pécsi Tudományegyetem&lt;br /&gt;
* Szegedi Tudományegyetem&lt;br /&gt;
* Miskolci Egyetem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Orszagos-attekinto_hpc.png|center|700px|alt=Az NIIF szuperszámítógépei térképen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A tudományos számítási feladatok különböző típusainak minél szélesebb körű lefedettsége érdekében az egyes helyszíneken különböző felépítésű gépek találhatók: két helyszínen ccNUMA, három helyszínen pedig &amp;quot;fat-node&amp;quot; fürtözött megoldás. Az alrendszereket az NIIFI nagy sávszélességű, alacsony késleltetésű HBONE+ adathálózatán keresztül, ARC grid köztesréteg, valamint harmonizált felhasználói azonosítás segítségével integráljuk egységes elvek mentén elérhető számítási egységgé. Az erőforrás jelenleg Magyarország legnagyobb tudományos számítás céljára felhasználható erőforrása, amely összesen 50 billió lebegőpontos művelet elvégzését teszi lehetővé másodpercenként.&lt;br /&gt;
A szuperszámítógép-rendszert az NIIFI üzemelteti és fejleszti. A rendszerhez regisztrációt követően, minden olyan személy vagy kutatócsoport hozzáférhet, amely tagintézményi szerződéses kapcsolatban áll az NIIF Intézettel.&lt;br /&gt;
A gépen megtalálhatók és futtathatók a legkorszerűbb fejlesztőeszközök és tudományos számításra szolgáló alkalmazások, valamint, az NIIF adatközpontban elhelyezett alrendszer kivételével, valamennyi alrendszer kiegészül a számítási feladatok eredményeit megjelenítő vizualizációs eszközökkel.&lt;br /&gt;
&lt;br /&gt;
==== Magyar Szuperszámítógépek összehasonlítása ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Helyszín&lt;br /&gt;
| Budapest&lt;br /&gt;
| [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
| Szeged&lt;br /&gt;
| Debrecen&lt;br /&gt;
| [[Debrecen2_GPU_klaszter|Debrecen2-GPU]] (tesztüzem)&lt;br /&gt;
| Debrecen2-Phi (beüzemelése folyamatban van)&lt;br /&gt;
| Pécs&lt;br /&gt;
&lt;br /&gt;
| [[Miskolc_UV_2000|Miskolc]] (tesztüzem)&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| HP SL250s &lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| SGI ICE8400EX&lt;br /&gt;
| HP SL250s&lt;br /&gt;
&lt;br /&gt;
| HP Apollo 8000&lt;br /&gt;
| SGI UV 1000&lt;br /&gt;
&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| CPU-k / node &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 4 &lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
&lt;br /&gt;
| 2 &lt;br /&gt;
| 192&lt;br /&gt;
&lt;br /&gt;
| 44 &lt;br /&gt;
|- &lt;br /&gt;
| Core-ok / CPU &lt;br /&gt;
| 12&lt;br /&gt;
| 10&lt;br /&gt;
| 12&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
|- &lt;br /&gt;
| Memória / node &lt;br /&gt;
| 66 GB&lt;br /&gt;
| 63 GB &lt;br /&gt;
| 132 GB&lt;br /&gt;
| 47 GB&lt;br /&gt;
| 125 GB&lt;br /&gt;
| 128 GB&lt;br /&gt;
| 6 TB&lt;br /&gt;
| 1.4 TB&lt;br /&gt;
|- &lt;br /&gt;
| Memória / core &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 3 GB &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 7.5 GB&lt;br /&gt;
| 8 GB&lt;br /&gt;
| 5 GB&lt;br /&gt;
| 4 GB&lt;br /&gt;
|- &lt;br /&gt;
| CPU &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz&lt;br /&gt;
| Intel Xeon E5-2680 v2 @ 2.80GHz    &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz &lt;br /&gt;
| Intel Xeon X5680 @ 3.33 GHz&lt;br /&gt;
| Intel Xeon E5-2650 v2 @ 2.60GHz &lt;br /&gt;
&lt;br /&gt;
| Intel Xeon E5-2670&lt;br /&gt;
| Intel Xeon X7542 @ 2.66 GHz&lt;br /&gt;
| Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| GPU &lt;br /&gt;
| -&lt;br /&gt;
| -   &lt;br /&gt;
| 2 * 6 Nvidia M2070&lt;br /&gt;
| -&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Intel Xeon Phi &lt;br /&gt;
| -&lt;br /&gt;
| 14 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -  &lt;br /&gt;
| -&lt;br /&gt;
&lt;br /&gt;
| 45 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| Linpack teljesítmény (Rmax)&lt;br /&gt;
| 5 Tflops&lt;br /&gt;
| 27 Tflops&lt;br /&gt;
| 20 Tflops&lt;br /&gt;
| 18 Tlops&lt;br /&gt;
| ~280 Tflops&lt;br /&gt;
| ~106 Tflops&lt;br /&gt;
| 10 Tflops&lt;br /&gt;
| 8 Tflops&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok száma &lt;br /&gt;
| 32&lt;br /&gt;
| 14&lt;br /&gt;
| 50&lt;br /&gt;
| 128&lt;br /&gt;
| 84&lt;br /&gt;
| 45&lt;br /&gt;
| 1&lt;br /&gt;
&lt;br /&gt;
| 1&lt;br /&gt;
|-  &lt;br /&gt;
| Dedikált storage &lt;br /&gt;
| 50 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 250 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 585 TB (Phi-vel közös)&lt;br /&gt;
| 585 TB (GPU-val közös)&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 240 TB&lt;br /&gt;
|- &lt;br /&gt;
| Scheduler &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]  &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
|- &lt;br /&gt;
| MPI &lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| IntelMPI (impi) &lt;br /&gt;
| OpenMPI (ompi) &lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== További információ ==&lt;br /&gt;
&lt;br /&gt;
* [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
* [[Miskolc_UV_2000|Miskolc]]&lt;br /&gt;
* [[Debrecen2_GPU_klaszter|Debrecen2]]&lt;br /&gt;
* [[HPC-Portal|HPC portál: projekt és témaszámok kezelése, leállások, statisztikák]]&lt;br /&gt;
* [[NIIF_szuperszámítógépek_használata|A szuperszámítógépek használata]]&lt;br /&gt;
* [[HPC-GYIK|GY.I.K]]&lt;br /&gt;
* [http://www.niif.hu/hu/niif_intezet/az_niifi_szuperszamitogepek_hasznalata NIIF HPC oldal]&lt;br /&gt;
* [http://conference.niif.hu/event/3/session/23/contribution/25 HPC tutorial (Networkshop 2015)]&lt;br /&gt;
* [http://www.training.prace-ri.eu PRACE training portal]&lt;br /&gt;
* [[PRACE_User_Support|PRACE User Support]]&lt;br /&gt;
[[Kategória: HPC]]&lt;br /&gt;
[[Kategória: Összefoglaló lapok]]&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Debrecen2_GPU_klaszter&amp;diff=3488</id>
		<title>Debrecen2 GPU klaszter</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Debrecen2_GPU_klaszter&amp;diff=3488"/>
				<updated>2015-11-10T17:47:26Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Soros (serial) jobok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Klaszter&lt;br /&gt;
| Debrecen2 (Leo)&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 8 × 2 Xeon E5-2650v2 2.60GHz  &lt;br /&gt;
|- &lt;br /&gt;
| GPU / node&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 84 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max core-ok / projekt&lt;br /&gt;
| 336 (21db node)&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 7800 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CPU idő kérés ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{ATTENTION|A CPU idő igénylésekor egy olyan rövid indoklást várunk a HPC projekt vezetőktől, amiből kiderül, hogy a futtatandó alkalmazás képes GPU-t használni. Erre azért van szükség, mert az erőforrás teljesítményének nagyobbik része GPU gyorsításból származik, egy gyorsítás nélküli program a CPU-kat lefoglalja, korlátozva ezzel a GPU-k használatát, ami kihasználatlansághoz vezet. Az NVidia  [http://www.nvidia.com/object/gpu-applications.html közzétett egy listát] arról, hogy melyik alkalmazás rendelkezik jelenleg hivatalosan NVidia GPU támogatással, de természetesen egyéb, GPU-t használó program is nagy valószínűséggel jól fut a gépen.}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.debrecen2.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.debrecen2.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.debrecen2.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.debrecen2.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.debrecen2.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
    DEBRECEN2[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== GPU-k lefoglalása ====&lt;br /&gt;
A GPU-k lefoglalása a következő direktívával törénik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=gpu:N&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; a GPU-k/node számát adja meg, ami 1, 2 és 3 lehet maximum.&lt;br /&gt;
&lt;br /&gt;
==== Interaktív használat ====&lt;br /&gt;
Rövid interaktív feladatokat az 'srun' paranccsal tudunk beküldeni, pl.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun -l -n 1 -t TIME --gres=gpu:1 -A ACCOUNT APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Batch job-ok indítása ====&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépen két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;prod-gpu-k40&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod-gpu-k20&amp;lt;/code&amp;gt; sor. Mind a kettő éles számolásokra való, az első olyan CN gépeket tartalmaz amikben Nvidia K40x GPU-k, a másodikban pedig Nvidia K20x GPU-k vannak. Az alapértelmezett sor a &amp;lt;code&amp;gt; prod-gpu-k20&amp;lt;/code&amp;gt;. A prod-gpu-k40 partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=prod-gpu-k40&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. A maximális memória/core 7800 MB lehet.&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=8&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
mpirun --report-pid ${TMPDIR}/mpirun.pid PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=8&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 8 CPU core-t rendeltunk, a 8 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 8 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=8&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 8 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 8 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=8&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Debrecen2_GPU_klaszter&amp;diff=3487</id>
		<title>Debrecen2 GPU klaszter</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Debrecen2_GPU_klaszter&amp;diff=3487"/>
				<updated>2015-11-10T16:18:08Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Feladat sorok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Klaszter&lt;br /&gt;
| Debrecen2 (Leo)&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 8 × 2 Xeon E5-2650v2 2.60GHz  &lt;br /&gt;
|- &lt;br /&gt;
| GPU / node&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 84 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max core-ok / projekt&lt;br /&gt;
| 336 (21db node)&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 7800 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CPU idő kérés ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{ATTENTION|A CPU idő igénylésekor egy olyan rövid indoklást várunk a HPC projekt vezetőktől, amiből kiderül, hogy a futtatandó alkalmazás képes GPU-t használni. Erre azért van szükség, mert az erőforrás teljesítményének nagyobbik része GPU gyorsításból származik, egy gyorsítás nélküli program a CPU-kat lefoglalja, korlátozva ezzel a GPU-k használatát, ami kihasználatlansághoz vezet. Az NVidia  [http://www.nvidia.com/object/gpu-applications.html közzétett egy listát] arról, hogy melyik alkalmazás rendelkezik jelenleg hivatalosan NVidia GPU támogatással, de természetesen egyéb, GPU-t használó program is nagy valószínűséggel jól fut a gépen.}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.debrecen2.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.debrecen2.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.debrecen2.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.debrecen2.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.debrecen2.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
    DEBRECEN2[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== GPU-k lefoglalása ====&lt;br /&gt;
A GPU-k lefoglalása a következő direktívával törénik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=gpu:N&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; a GPU-k/node számát adja meg, ami 1, 2 és 3 lehet maximum.&lt;br /&gt;
&lt;br /&gt;
==== Interaktív használat ====&lt;br /&gt;
Rövid interaktív feladatokat az 'srun' paranccsal tudunk beküldeni, pl.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun -l -n 1 -t TIME --gres=gpu:1 -A ACCOUNT APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Batch job-ok indítása ====&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépen két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;prod-gpu-k40&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod-gpu-k20&amp;lt;/code&amp;gt; sor. Mind a kettő éles számolásokra való, az első olyan CN gépeket tartalmaz amikben Nvidia K40x GPU-k, a másodikban pedig Nvidia K20x GPU-k vannak. Az alapértelmezett sor a &amp;lt;code&amp;gt; prod-gpu-k20&amp;lt;/code&amp;gt;. A prod-gpu-k40 partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=prod-gpu-k40&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. A maximális memória/core 7800 MB lehet.&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=8&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
mpirun --report-pid ${TMPDIR}/mpirun.pid PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=8&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 8 CPU core-t rendeltunk, a 8 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 8 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=8&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 8 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 8 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=8&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=HPC&amp;diff=3485</id>
		<title>HPC</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=HPC&amp;diff=3485"/>
				<updated>2015-11-10T08:11:20Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Magyar Szuperszámítógépek összehasonlítása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[HPC_en|NIIF HPC in ENGLISH]]&lt;br /&gt;
&lt;br /&gt;
== A szuperszámítógépekről ==&lt;br /&gt;
Az NIIF Intézet szuperszámítógép szolgáltatása tudományos számítási feladatok futtatására, valamint tudományos célú adattárolásra szolgál. A jelenleg integrált szuperszámítógép-rendszer komponensei négy helyszínen találhatók:&lt;br /&gt;
&lt;br /&gt;
* Debreceni Egyetem&lt;br /&gt;
* NIIFI központ&lt;br /&gt;
* Pécsi Tudományegyetem&lt;br /&gt;
* Szegedi Tudományegyetem&lt;br /&gt;
* Miskolci Egyetem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Orszagos-attekinto_hpc.png|center|700px|alt=Az NIIF szuperszámítógépei térképen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A tudományos számítási feladatok különböző típusainak minél szélesebb körű lefedettsége érdekében az egyes helyszíneken különböző felépítésű gépek találhatók: két helyszínen ccNUMA, három helyszínen pedig &amp;quot;fat-node&amp;quot; fürtözött megoldás. Az alrendszereket az NIIFI nagy sávszélességű, alacsony késleltetésű HBONE+ adathálózatán keresztül, ARC grid köztesréteg, valamint harmonizált felhasználói azonosítás segítségével integráljuk egységes elvek mentén elérhető számítási egységgé. Az erőforrás jelenleg Magyarország legnagyobb tudományos számítás céljára felhasználható erőforrása, amely összesen 50 billió lebegőpontos művelet elvégzését teszi lehetővé másodpercenként.&lt;br /&gt;
A szuperszámítógép-rendszert az NIIFI üzemelteti és fejleszti. A rendszerhez regisztrációt követően, minden olyan személy vagy kutatócsoport hozzáférhet, amely tagintézményi szerződéses kapcsolatban áll az NIIF Intézettel.&lt;br /&gt;
A gépen megtalálhatók és futtathatók a legkorszerűbb fejlesztőeszközök és tudományos számításra szolgáló alkalmazások, valamint, az NIIF adatközpontban elhelyezett alrendszer kivételével, valamennyi alrendszer kiegészül a számítási feladatok eredményeit megjelenítő vizualizációs eszközökkel.&lt;br /&gt;
&lt;br /&gt;
==== Magyar Szuperszámítógépek összehasonlítása ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Helyszín&lt;br /&gt;
| Budapest&lt;br /&gt;
| [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
| Szeged&lt;br /&gt;
| Debrecen&lt;br /&gt;
| [[Debrecen2_GPU_klaszter|Debrecen2-GPU]] (beüzemelése folyamatban van)&lt;br /&gt;
| Debrecen2-Phi (beüzemelése folyamatban van)&lt;br /&gt;
| Pécs&lt;br /&gt;
&lt;br /&gt;
| [[Miskolc_UV_2000|Miskolc]] (tesztüzem)&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| HP SL250s &lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| SGI ICE8400EX&lt;br /&gt;
| HP SL250s&lt;br /&gt;
&lt;br /&gt;
| HP Apollo 8000&lt;br /&gt;
| SGI UV 1000&lt;br /&gt;
&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| CPU-k / node &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 4 &lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
&lt;br /&gt;
| 2 &lt;br /&gt;
| 192&lt;br /&gt;
&lt;br /&gt;
| 44 &lt;br /&gt;
|- &lt;br /&gt;
| Core-ok / CPU &lt;br /&gt;
| 12&lt;br /&gt;
| 10&lt;br /&gt;
| 12&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
|- &lt;br /&gt;
| Memória / node &lt;br /&gt;
| 66 GB&lt;br /&gt;
| 63 GB &lt;br /&gt;
| 132 GB&lt;br /&gt;
| 47 GB&lt;br /&gt;
| 125 GB&lt;br /&gt;
| 128 GB&lt;br /&gt;
| 6 TB&lt;br /&gt;
| 1.4 TB&lt;br /&gt;
|- &lt;br /&gt;
| Memória / core &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 3 GB &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 7.5 GB&lt;br /&gt;
| 8 GB&lt;br /&gt;
| 5 GB&lt;br /&gt;
| 4 GB&lt;br /&gt;
|- &lt;br /&gt;
| CPU &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz&lt;br /&gt;
| Intel Xeon E5-2680 v2 @ 2.80GHz    &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz &lt;br /&gt;
| Intel Xeon X5680 @ 3.33 GHz&lt;br /&gt;
| Intel Xeon E5-2650 v2 @ 2.60GHz &lt;br /&gt;
&lt;br /&gt;
| Intel Xeon E5-2670&lt;br /&gt;
| Intel Xeon X7542 @ 2.66 GHz&lt;br /&gt;
| Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| GPU &lt;br /&gt;
| -&lt;br /&gt;
| -   &lt;br /&gt;
| 2 * 6 Nvidia M2070&lt;br /&gt;
| -&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Intel Xeon Phi &lt;br /&gt;
| -&lt;br /&gt;
| 14 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -  &lt;br /&gt;
| -&lt;br /&gt;
&lt;br /&gt;
| 45 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| Linpack teljesítmény (Rmax)&lt;br /&gt;
| 5 Tflops&lt;br /&gt;
| 27 Tflops&lt;br /&gt;
| 20 Tflops&lt;br /&gt;
| 18 Tlops&lt;br /&gt;
| ~280 Tflops&lt;br /&gt;
| ~106 Tflops&lt;br /&gt;
| 10 Tflops&lt;br /&gt;
| 8 Tflops&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok száma &lt;br /&gt;
| 32&lt;br /&gt;
| 14&lt;br /&gt;
| 50&lt;br /&gt;
| 128&lt;br /&gt;
| 84&lt;br /&gt;
| 45&lt;br /&gt;
| 1&lt;br /&gt;
&lt;br /&gt;
| 1&lt;br /&gt;
|-  &lt;br /&gt;
| Dedikált storage &lt;br /&gt;
| 50 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 250 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 585 TB (Phi-vel közös)&lt;br /&gt;
| 585 TB (GPU-val közös)&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 240 TB&lt;br /&gt;
|- &lt;br /&gt;
| Scheduler &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]  &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
|- &lt;br /&gt;
| MPI &lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| IntelMPI (impi) &lt;br /&gt;
| OpenMPI (ompi) &lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== További információ ==&lt;br /&gt;
&lt;br /&gt;
* [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
* [[Miskolc_UV_2000|Miskolc]]&lt;br /&gt;
* [[Debrecen2_GPU_klaszter|Debrecen2]]&lt;br /&gt;
* [[HPC-Portal|HPC portál: projekt és témaszámok kezelése, leállások, statisztikák]]&lt;br /&gt;
* [[NIIF_szuperszámítógépek_használata|A szuperszámítógépek használata]]&lt;br /&gt;
* [[HPC-GYIK|GY.I.K]]&lt;br /&gt;
* [http://www.niif.hu/hu/niif_intezet/az_niifi_szuperszamitogepek_hasznalata NIIF HPC oldal]&lt;br /&gt;
* [http://conference.niif.hu/event/3/session/23/contribution/25 HPC tutorial (Networkshop 2015)]&lt;br /&gt;
* [http://www.training.prace-ri.eu PRACE training portal]&lt;br /&gt;
* [[PRACE_User_Support|PRACE User Support]]&lt;br /&gt;
[[Kategória: HPC]]&lt;br /&gt;
[[Kategória: Összefoglaló lapok]]&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3474</id>
		<title>Miskolc UV 2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3474"/>
				<updated>2015-11-03T09:19:56Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| ccNUMA&lt;br /&gt;
| Miskolc&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 44 × Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 1 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 4000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.miskolc.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.miskolc.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.miskolc.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.miskolc.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.miskolc.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
      MISKOLC[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -c CORES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;CORES&amp;lt;/code&amp;gt; a lefoglalni kívánt core-ok száma, amelynek 8 többszörösének kell lenni. 8 core-hoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a core-ok számát. A &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje. &lt;br /&gt;
 &lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
Az egyetlen elfogadott paraméter a szálak száma (`-n`), amelynek 8 többszörösének kell lennie. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a szálak számát. Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás. A gépen lévő QOS limitek részletes paramétereit így tudjuk kilistázni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacctmgr show qos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tesztelés ====&lt;br /&gt;
Teszt job bekuldesehez a --qos=test opciot kell hasznalni a job scriptben. Ebben az esetben maximum 30 percig futhat a job es osszesen 24 szal kerheto.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== OpenMP Példa ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH -n 48&lt;br /&gt;
#SBATCH --time=03:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
/opt/nce/bin/numainfo&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_NTASKS ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI MPT MPI Példa ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH -n 48&lt;br /&gt;
#SBATCH --time=03:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
/opt/nce/bin/numainfo&lt;br /&gt;
mpirun $SLURM_NTASKS ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=HPC&amp;diff=3453</id>
		<title>HPC</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=HPC&amp;diff=3453"/>
				<updated>2015-11-02T15:25:13Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* További információ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[HPC_en|NIIF HPC in ENGLISH]]&lt;br /&gt;
&lt;br /&gt;
== A szuperszámítógépekről ==&lt;br /&gt;
Az NIIF Intézet szuperszámítógép szolgáltatása tudományos számítási feladatok futtatására, valamint tudományos célú adattárolásra szolgál. A jelenleg integrált szuperszámítógép-rendszer komponensei négy helyszínen találhatók:&lt;br /&gt;
&lt;br /&gt;
* Debreceni Egyetem&lt;br /&gt;
* NIIFI központ&lt;br /&gt;
* Pécsi Tudományegyetem&lt;br /&gt;
* Szegedi Tudományegyetem&lt;br /&gt;
* Miskolci Egyetem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Orszagos-attekinto_hpc.png|center|700px|alt=Az NIIF szuperszámítógépei térképen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A tudományos számítási feladatok különböző típusainak minél szélesebb körű lefedettsége érdekében az egyes helyszíneken különböző felépítésű gépek találhatók: két helyszínen ccNUMA, három helyszínen pedig &amp;quot;fat-node&amp;quot; fürtözött megoldás. Az alrendszereket az NIIFI nagy sávszélességű, alacsony késleltetésű HBONE+ adathálózatán keresztül, ARC grid köztesréteg, valamint harmonizált felhasználói azonosítás segítségével integráljuk egységes elvek mentén elérhető számítási egységgé. Az erőforrás jelenleg Magyarország legnagyobb tudományos számítás céljára felhasználható erőforrása, amely összesen 50 billió lebegőpontos művelet elvégzését teszi lehetővé másodpercenként.&lt;br /&gt;
A szuperszámítógép-rendszert az NIIFI üzemelteti és fejleszti. A rendszerhez regisztrációt követően, minden olyan személy vagy kutatócsoport hozzáférhet, amely tagintézményi szerződéses kapcsolatban áll az NIIF Intézettel.&lt;br /&gt;
A gépen megtalálhatók és futtathatók a legkorszerűbb fejlesztőeszközök és tudományos számításra szolgáló alkalmazások, valamint, az NIIF adatközpontban elhelyezett alrendszer kivételével, valamennyi alrendszer kiegészül a számítási feladatok eredményeit megjelenítő vizualizációs eszközökkel.&lt;br /&gt;
&lt;br /&gt;
==== Magyar Szuperszámítógépek összehasonlítása ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Helyszín&lt;br /&gt;
| Budapest&lt;br /&gt;
| [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
| Szeged&lt;br /&gt;
| Debrecen&lt;br /&gt;
| [[Debrecen2_GPU_klaszter|Debrecen2-GPU]] (beüzemelése folyamatban van)&lt;br /&gt;
| Debrecen2-Phi (beüzemelése folyamatban van)&lt;br /&gt;
| Pécs&lt;br /&gt;
&lt;br /&gt;
| [[Miskolc_UV_2000|Miskolc]] (beüzemelése folyamatban van)&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| HP SL250s &lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| SGI ICE8400EX&lt;br /&gt;
| HP SL250s&lt;br /&gt;
&lt;br /&gt;
| HP Apollo 8000&lt;br /&gt;
| SGI UV 1000&lt;br /&gt;
&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| CPU-k / node &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 4 &lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
&lt;br /&gt;
| 2 &lt;br /&gt;
| 192&lt;br /&gt;
&lt;br /&gt;
| 44 &lt;br /&gt;
|- &lt;br /&gt;
| Core-ok / CPU &lt;br /&gt;
| 12&lt;br /&gt;
| 10&lt;br /&gt;
| 12&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
|- &lt;br /&gt;
| Memória / node &lt;br /&gt;
| 66 GB&lt;br /&gt;
| 63 GB &lt;br /&gt;
| 132 GB&lt;br /&gt;
| 47 GB&lt;br /&gt;
| 125 GB&lt;br /&gt;
| 128 GB&lt;br /&gt;
| 6 TB&lt;br /&gt;
| 1.4 TB&lt;br /&gt;
|- &lt;br /&gt;
| Memória / core &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 3 GB &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 7.5 GB&lt;br /&gt;
| 8 GB&lt;br /&gt;
| 5 GB&lt;br /&gt;
| 4 GB&lt;br /&gt;
|- &lt;br /&gt;
| CPU &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz&lt;br /&gt;
| Intel Xeon E5-2680 v2 @ 2.80GHz    &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz &lt;br /&gt;
| Intel Xeon X5680 @ 3.33 GHz&lt;br /&gt;
| Intel Xeon E5-2650 v2 @ 2.60GHz &lt;br /&gt;
&lt;br /&gt;
| Intel Xeon E5-2670&lt;br /&gt;
| Intel Xeon X7542 @ 2.66 GHz&lt;br /&gt;
| Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| GPU &lt;br /&gt;
| -&lt;br /&gt;
| -   &lt;br /&gt;
| 2 * 6 Nvidia M2070&lt;br /&gt;
| -&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Intel Xeon Phi &lt;br /&gt;
| -&lt;br /&gt;
| 14 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -  &lt;br /&gt;
| -&lt;br /&gt;
&lt;br /&gt;
| 45 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| Linpack teljesítmény (Rmax)&lt;br /&gt;
| 5 Tflops&lt;br /&gt;
| 27 Tflops&lt;br /&gt;
| 20 Tflops&lt;br /&gt;
| 18 Tlops&lt;br /&gt;
| ~280 Tflops&lt;br /&gt;
| ~106 Tflops&lt;br /&gt;
| 10 Tflops&lt;br /&gt;
| 8 Tflops&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok száma &lt;br /&gt;
| 32&lt;br /&gt;
| 14&lt;br /&gt;
| 50&lt;br /&gt;
| 128&lt;br /&gt;
| 84&lt;br /&gt;
| 45&lt;br /&gt;
| 1&lt;br /&gt;
&lt;br /&gt;
| 1&lt;br /&gt;
|-  &lt;br /&gt;
| Dedikált storage &lt;br /&gt;
| 50 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 250 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 585 TB (Phi-vel közös)&lt;br /&gt;
| 585 TB (GPU-val közös)&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 240 TB&lt;br /&gt;
|- &lt;br /&gt;
| Scheduler &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]  &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
|- &lt;br /&gt;
| MPI &lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| IntelMPI (impi) &lt;br /&gt;
| OpenMPI (ompi) &lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== További információ ==&lt;br /&gt;
&lt;br /&gt;
* [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
* [[Miskolc_UV_2000|Miskolc]]&lt;br /&gt;
* [[Debrecen2_GPU_klaszter|Debrecen2]]&lt;br /&gt;
* [[HPC-Portal|HPC portál: projekt és témaszámok kezelése, leállások, statisztikák]]&lt;br /&gt;
* [[NIIF_szuperszámítógépek_használata|A szuperszámítógépek használata]]&lt;br /&gt;
* [[HPC-GYIK|GY.I.K]]&lt;br /&gt;
* [http://www.niif.hu/hu/niif_intezet/az_niifi_szuperszamitogepek_hasznalata NIIF HPC oldal]&lt;br /&gt;
* [http://conference.niif.hu/event/3/session/23/contribution/25 HPC tutorial (Networkshop 2015)]&lt;br /&gt;
* [http://www.training.prace-ri.eu PRACE training portal]&lt;br /&gt;
* [[PRACE_User_Support|PRACE User Support]]&lt;br /&gt;
[[Kategória: HPC]]&lt;br /&gt;
[[Kategória: Összefoglaló lapok]]&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=HPC&amp;diff=3452</id>
		<title>HPC</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=HPC&amp;diff=3452"/>
				<updated>2015-11-02T15:24:30Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Magyar Szuperszámítógépek összehasonlítása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[HPC_en|NIIF HPC in ENGLISH]]&lt;br /&gt;
&lt;br /&gt;
== A szuperszámítógépekről ==&lt;br /&gt;
Az NIIF Intézet szuperszámítógép szolgáltatása tudományos számítási feladatok futtatására, valamint tudományos célú adattárolásra szolgál. A jelenleg integrált szuperszámítógép-rendszer komponensei négy helyszínen találhatók:&lt;br /&gt;
&lt;br /&gt;
* Debreceni Egyetem&lt;br /&gt;
* NIIFI központ&lt;br /&gt;
* Pécsi Tudományegyetem&lt;br /&gt;
* Szegedi Tudományegyetem&lt;br /&gt;
* Miskolci Egyetem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Orszagos-attekinto_hpc.png|center|700px|alt=Az NIIF szuperszámítógépei térképen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A tudományos számítási feladatok különböző típusainak minél szélesebb körű lefedettsége érdekében az egyes helyszíneken különböző felépítésű gépek találhatók: két helyszínen ccNUMA, három helyszínen pedig &amp;quot;fat-node&amp;quot; fürtözött megoldás. Az alrendszereket az NIIFI nagy sávszélességű, alacsony késleltetésű HBONE+ adathálózatán keresztül, ARC grid köztesréteg, valamint harmonizált felhasználói azonosítás segítségével integráljuk egységes elvek mentén elérhető számítási egységgé. Az erőforrás jelenleg Magyarország legnagyobb tudományos számítás céljára felhasználható erőforrása, amely összesen 50 billió lebegőpontos művelet elvégzését teszi lehetővé másodpercenként.&lt;br /&gt;
A szuperszámítógép-rendszert az NIIFI üzemelteti és fejleszti. A rendszerhez regisztrációt követően, minden olyan személy vagy kutatócsoport hozzáférhet, amely tagintézményi szerződéses kapcsolatban áll az NIIF Intézettel.&lt;br /&gt;
A gépen megtalálhatók és futtathatók a legkorszerűbb fejlesztőeszközök és tudományos számításra szolgáló alkalmazások, valamint, az NIIF adatközpontban elhelyezett alrendszer kivételével, valamennyi alrendszer kiegészül a számítási feladatok eredményeit megjelenítő vizualizációs eszközökkel.&lt;br /&gt;
&lt;br /&gt;
==== Magyar Szuperszámítógépek összehasonlítása ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Helyszín&lt;br /&gt;
| Budapest&lt;br /&gt;
| [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
| Szeged&lt;br /&gt;
| Debrecen&lt;br /&gt;
| [[Debrecen2_GPU_klaszter|Debrecen2-GPU]] (beüzemelése folyamatban van)&lt;br /&gt;
| Debrecen2-Phi (beüzemelése folyamatban van)&lt;br /&gt;
| Pécs&lt;br /&gt;
&lt;br /&gt;
| [[Miskolc_UV_2000|Miskolc]] (beüzemelése folyamatban van)&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| HP SL250s &lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| SGI ICE8400EX&lt;br /&gt;
| HP SL250s&lt;br /&gt;
&lt;br /&gt;
| HP Apollo 8000&lt;br /&gt;
| SGI UV 1000&lt;br /&gt;
&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| CPU-k / node &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 4 &lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
&lt;br /&gt;
| 2 &lt;br /&gt;
| 192&lt;br /&gt;
&lt;br /&gt;
| 44 &lt;br /&gt;
|- &lt;br /&gt;
| Core-ok / CPU &lt;br /&gt;
| 12&lt;br /&gt;
| 10&lt;br /&gt;
| 12&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
|- &lt;br /&gt;
| Memória / node &lt;br /&gt;
| 66 GB&lt;br /&gt;
| 63 GB &lt;br /&gt;
| 132 GB&lt;br /&gt;
| 47 GB&lt;br /&gt;
| 125 GB&lt;br /&gt;
| 128 GB&lt;br /&gt;
| 6 TB&lt;br /&gt;
| 1.4 TB&lt;br /&gt;
|- &lt;br /&gt;
| Memória / core &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 3 GB &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 7.5 GB&lt;br /&gt;
| 8 GB&lt;br /&gt;
| 5 GB&lt;br /&gt;
| 4 GB&lt;br /&gt;
|- &lt;br /&gt;
| CPU &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz&lt;br /&gt;
| Intel Xeon E5-2680 v2 @ 2.80GHz    &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz &lt;br /&gt;
| Intel Xeon X5680 @ 3.33 GHz&lt;br /&gt;
| Intel Xeon E5-2650 v2 @ 2.60GHz &lt;br /&gt;
&lt;br /&gt;
| Intel Xeon E5-2670&lt;br /&gt;
| Intel Xeon X7542 @ 2.66 GHz&lt;br /&gt;
| Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| GPU &lt;br /&gt;
| -&lt;br /&gt;
| -   &lt;br /&gt;
| 2 * 6 Nvidia M2070&lt;br /&gt;
| -&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Intel Xeon Phi &lt;br /&gt;
| -&lt;br /&gt;
| 14 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -  &lt;br /&gt;
| -&lt;br /&gt;
&lt;br /&gt;
| 45 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| Linpack teljesítmény (Rmax)&lt;br /&gt;
| 5 Tflops&lt;br /&gt;
| 27 Tflops&lt;br /&gt;
| 20 Tflops&lt;br /&gt;
| 18 Tlops&lt;br /&gt;
| ~280 Tflops&lt;br /&gt;
| ~106 Tflops&lt;br /&gt;
| 10 Tflops&lt;br /&gt;
| 8 Tflops&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok száma &lt;br /&gt;
| 32&lt;br /&gt;
| 14&lt;br /&gt;
| 50&lt;br /&gt;
| 128&lt;br /&gt;
| 84&lt;br /&gt;
| 45&lt;br /&gt;
| 1&lt;br /&gt;
&lt;br /&gt;
| 1&lt;br /&gt;
|-  &lt;br /&gt;
| Dedikált storage &lt;br /&gt;
| 50 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 250 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 585 TB (Phi-vel közös)&lt;br /&gt;
| 585 TB (GPU-val közös)&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 240 TB&lt;br /&gt;
|- &lt;br /&gt;
| Scheduler &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]  &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
|- &lt;br /&gt;
| MPI &lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| IntelMPI (impi) &lt;br /&gt;
| OpenMPI (ompi) &lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== További információ ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Debrecen2_GPU_klaszter|Debrecen2]]&lt;br /&gt;
* [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
* [[HPC-Portal|HPC portál: projekt és témaszámok kezelése, leállások, statisztikák]]&lt;br /&gt;
* [[NIIF_szuperszámítógépek_használata|A szuperszámítógépek használata]]&lt;br /&gt;
* [[HPC-GYIK|GY.I.K]]&lt;br /&gt;
* [http://www.niif.hu/hu/niif_intezet/az_niifi_szuperszamitogepek_hasznalata NIIF HPC oldal]&lt;br /&gt;
* [http://conference.niif.hu/event/3/session/23/contribution/25 HPC tutorial (Networkshop 2015)]&lt;br /&gt;
* [http://www.training.prace-ri.eu PRACE training portal]&lt;br /&gt;
* [[PRACE_User_Support|PRACE User Support]]&lt;br /&gt;
[[Kategória: HPC]]&lt;br /&gt;
[[Kategória: Összefoglaló lapok]]&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=HPC&amp;diff=3451</id>
		<title>HPC</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=HPC&amp;diff=3451"/>
				<updated>2015-11-02T15:24:09Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Magyar Szuperszámítógépek összehasonlítása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[HPC_en|NIIF HPC in ENGLISH]]&lt;br /&gt;
&lt;br /&gt;
== A szuperszámítógépekről ==&lt;br /&gt;
Az NIIF Intézet szuperszámítógép szolgáltatása tudományos számítási feladatok futtatására, valamint tudományos célú adattárolásra szolgál. A jelenleg integrált szuperszámítógép-rendszer komponensei négy helyszínen találhatók:&lt;br /&gt;
&lt;br /&gt;
* Debreceni Egyetem&lt;br /&gt;
* NIIFI központ&lt;br /&gt;
* Pécsi Tudományegyetem&lt;br /&gt;
* Szegedi Tudományegyetem&lt;br /&gt;
* Miskolci Egyetem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Orszagos-attekinto_hpc.png|center|700px|alt=Az NIIF szuperszámítógépei térképen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A tudományos számítási feladatok különböző típusainak minél szélesebb körű lefedettsége érdekében az egyes helyszíneken különböző felépítésű gépek találhatók: két helyszínen ccNUMA, három helyszínen pedig &amp;quot;fat-node&amp;quot; fürtözött megoldás. Az alrendszereket az NIIFI nagy sávszélességű, alacsony késleltetésű HBONE+ adathálózatán keresztül, ARC grid köztesréteg, valamint harmonizált felhasználói azonosítás segítségével integráljuk egységes elvek mentén elérhető számítási egységgé. Az erőforrás jelenleg Magyarország legnagyobb tudományos számítás céljára felhasználható erőforrása, amely összesen 50 billió lebegőpontos művelet elvégzését teszi lehetővé másodpercenként.&lt;br /&gt;
A szuperszámítógép-rendszert az NIIFI üzemelteti és fejleszti. A rendszerhez regisztrációt követően, minden olyan személy vagy kutatócsoport hozzáférhet, amely tagintézményi szerződéses kapcsolatban áll az NIIF Intézettel.&lt;br /&gt;
A gépen megtalálhatók és futtathatók a legkorszerűbb fejlesztőeszközök és tudományos számításra szolgáló alkalmazások, valamint, az NIIF adatközpontban elhelyezett alrendszer kivételével, valamennyi alrendszer kiegészül a számítási feladatok eredményeit megjelenítő vizualizációs eszközökkel.&lt;br /&gt;
&lt;br /&gt;
==== Magyar Szuperszámítógépek összehasonlítása ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Helyszín&lt;br /&gt;
| Budapest&lt;br /&gt;
| [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
| Szeged&lt;br /&gt;
| Debrecen&lt;br /&gt;
| [[Debrecen2_GPU_klaszter|Debrecen2-GPU]] (beüzemelése folyamatban van)&lt;br /&gt;
| Debrecen2-Phi (beüzemelése folyamatban van)&lt;br /&gt;
| Pécs&lt;br /&gt;
&lt;br /&gt;
| [[Miskolc_UV_2000Miskolc|Miskolc]] (beüzemelése folyamatban van)&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| HP SL250s &lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| SGI ICE8400EX&lt;br /&gt;
| HP SL250s&lt;br /&gt;
&lt;br /&gt;
| HP Apollo 8000&lt;br /&gt;
| SGI UV 1000&lt;br /&gt;
&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| CPU-k / node &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 4 &lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
&lt;br /&gt;
| 2 &lt;br /&gt;
| 192&lt;br /&gt;
&lt;br /&gt;
| 44 &lt;br /&gt;
|- &lt;br /&gt;
| Core-ok / CPU &lt;br /&gt;
| 12&lt;br /&gt;
| 10&lt;br /&gt;
| 12&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
|- &lt;br /&gt;
| Memória / node &lt;br /&gt;
| 66 GB&lt;br /&gt;
| 63 GB &lt;br /&gt;
| 132 GB&lt;br /&gt;
| 47 GB&lt;br /&gt;
| 125 GB&lt;br /&gt;
| 128 GB&lt;br /&gt;
| 6 TB&lt;br /&gt;
| 1.4 TB&lt;br /&gt;
|- &lt;br /&gt;
| Memória / core &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 3 GB &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 7.5 GB&lt;br /&gt;
| 8 GB&lt;br /&gt;
| 5 GB&lt;br /&gt;
| 4 GB&lt;br /&gt;
|- &lt;br /&gt;
| CPU &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz&lt;br /&gt;
| Intel Xeon E5-2680 v2 @ 2.80GHz    &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz &lt;br /&gt;
| Intel Xeon X5680 @ 3.33 GHz&lt;br /&gt;
| Intel Xeon E5-2650 v2 @ 2.60GHz &lt;br /&gt;
&lt;br /&gt;
| Intel Xeon E5-2670&lt;br /&gt;
| Intel Xeon X7542 @ 2.66 GHz&lt;br /&gt;
| Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| GPU &lt;br /&gt;
| -&lt;br /&gt;
| -   &lt;br /&gt;
| 2 * 6 Nvidia M2070&lt;br /&gt;
| -&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Intel Xeon Phi &lt;br /&gt;
| -&lt;br /&gt;
| 14 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -  &lt;br /&gt;
| -&lt;br /&gt;
&lt;br /&gt;
| 45 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| Linpack teljesítmény (Rmax)&lt;br /&gt;
| 5 Tflops&lt;br /&gt;
| 27 Tflops&lt;br /&gt;
| 20 Tflops&lt;br /&gt;
| 18 Tlops&lt;br /&gt;
| ~280 Tflops&lt;br /&gt;
| ~106 Tflops&lt;br /&gt;
| 10 Tflops&lt;br /&gt;
| 8 Tflops&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok száma &lt;br /&gt;
| 32&lt;br /&gt;
| 14&lt;br /&gt;
| 50&lt;br /&gt;
| 128&lt;br /&gt;
| 84&lt;br /&gt;
| 45&lt;br /&gt;
| 1&lt;br /&gt;
&lt;br /&gt;
| 1&lt;br /&gt;
|-  &lt;br /&gt;
| Dedikált storage &lt;br /&gt;
| 50 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 250 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 585 TB (Phi-vel közös)&lt;br /&gt;
| 585 TB (GPU-val közös)&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 240 TB&lt;br /&gt;
|- &lt;br /&gt;
| Scheduler &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]  &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
|- &lt;br /&gt;
| MPI &lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| IntelMPI (impi) &lt;br /&gt;
| OpenMPI (ompi) &lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== További információ ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Debrecen2_GPU_klaszter|Debrecen2]]&lt;br /&gt;
* [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
* [[HPC-Portal|HPC portál: projekt és témaszámok kezelése, leállások, statisztikák]]&lt;br /&gt;
* [[NIIF_szuperszámítógépek_használata|A szuperszámítógépek használata]]&lt;br /&gt;
* [[HPC-GYIK|GY.I.K]]&lt;br /&gt;
* [http://www.niif.hu/hu/niif_intezet/az_niifi_szuperszamitogepek_hasznalata NIIF HPC oldal]&lt;br /&gt;
* [http://conference.niif.hu/event/3/session/23/contribution/25 HPC tutorial (Networkshop 2015)]&lt;br /&gt;
* [http://www.training.prace-ri.eu PRACE training portal]&lt;br /&gt;
* [[PRACE_User_Support|PRACE User Support]]&lt;br /&gt;
[[Kategória: HPC]]&lt;br /&gt;
[[Kategória: Összefoglaló lapok]]&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3450</id>
		<title>Miskolc UV 2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3450"/>
				<updated>2015-11-02T14:59:47Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* OMP Példa */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| ccNUMA&lt;br /&gt;
| Miskolc&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 44 × Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 1 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 4000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.miskolc.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.miskolc.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.miskolc.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.miskolc.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.miskolc.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
      MISKOLC[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -c CORES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;CORES&amp;lt;/code&amp;gt; a lefoglalni kívánt core-ok száma, amelynek 8 többszörösének kell lenni. 8 core-hoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a core-ok számát. A &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje. &lt;br /&gt;
 &lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
Az egyetlen elfogadott paraméter a szálak száma (`-n`), amelynek 8 többszörösének kell lennie. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a szálak számát. Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás. A gépen lévő QOS limitek részletes paramétereit így tudjuk kilistázni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacctmgr show qos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tesztelés ====&lt;br /&gt;
Teszt job bekuldesehez a --qos=test opciot kell hasznalni a job scriptben. Ebben az esetben maximum 30 percig futhat a job es osszesen 24 szal kerheto.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== OpenMP Példa ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH -n 48&lt;br /&gt;
#SBATCH --time=03:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
/opt/nce/bin/numainfo&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_NTASKS ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI MPT MPI Példa ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH -n 48&lt;br /&gt;
#SBATCH --time=03:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
/opt/nce/bin/numainfo&lt;br /&gt;
mpirun $SLURM_NTASKS ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3449</id>
		<title>Miskolc UV 2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3449"/>
				<updated>2015-11-02T14:59:28Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| ccNUMA&lt;br /&gt;
| Miskolc&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 44 × Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 1 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 4000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.miskolc.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.miskolc.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.miskolc.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.miskolc.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.miskolc.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
      MISKOLC[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -c CORES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;CORES&amp;lt;/code&amp;gt; a lefoglalni kívánt core-ok száma, amelynek 8 többszörösének kell lenni. 8 core-hoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a core-ok számát. A &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje. &lt;br /&gt;
 &lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
Az egyetlen elfogadott paraméter a szálak száma (`-n`), amelynek 8 többszörösének kell lennie. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a szálak számát. Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás. A gépen lévő QOS limitek részletes paramétereit így tudjuk kilistázni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacctmgr show qos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tesztelés ====&lt;br /&gt;
Teszt job bekuldesehez a --qos=test opciot kell hasznalni a job scriptben. Ebben az esetben maximum 30 percig futhat a job es osszesen 24 szal kerheto.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
===== OMP Példa =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH -n 48&lt;br /&gt;
#SBATCH --time=03:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
/opt/nce/bin/numainfo&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_NTASKS ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI MPT MPI Példa ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH -n 48&lt;br /&gt;
#SBATCH --time=03:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
/opt/nce/bin/numainfo&lt;br /&gt;
mpirun $SLURM_NTASKS ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3448</id>
		<title>Miskolc UV 2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3448"/>
				<updated>2015-11-02T14:57:20Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Soros (serial) jobok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| ccNUMA&lt;br /&gt;
| Miskolc&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 44 × Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 1 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 4000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.miskolc.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.miskolc.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.miskolc.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.miskolc.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.miskolc.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
      MISKOLC[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -c CORES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;CORES&amp;lt;/code&amp;gt; a lefoglalni kívánt core-ok száma, amelynek 8 többszörösének kell lenni. 8 core-hoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a core-ok számát. A &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje. &lt;br /&gt;
 &lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
Az egyetlen elfogadott paraméter a szálak száma (`-n`), amelynek 8 többszörösének kell lennie. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a szálak számát. Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás. A gépen lévő QOS limitek részletes paramétereit így tudjuk kilistázni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacctmgr show qos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tesztelés ====&lt;br /&gt;
Teszt job bekuldesehez a --qos=test opciot kell hasznalni a job scriptben. Ebben az esetben maximum 30 percig futhat a job es osszesen 24 szal kerheto.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== IntelMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 10 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 10 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3447</id>
		<title>Miskolc UV 2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3447"/>
				<updated>2015-11-02T14:57:04Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Tömbfeladatok (arrayjob) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| ccNUMA&lt;br /&gt;
| Miskolc&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 44 × Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 1 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 4000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.miskolc.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.miskolc.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.miskolc.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.miskolc.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.miskolc.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
      MISKOLC[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -c CORES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;CORES&amp;lt;/code&amp;gt; a lefoglalni kívánt core-ok száma, amelynek 8 többszörösének kell lenni. 8 core-hoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a core-ok számát. A &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje. &lt;br /&gt;
 &lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
Az egyetlen elfogadott paraméter a szálak száma (`-n`), amelynek 8 többszörösének kell lennie. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a szálak számát. Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás. A gépen lévő QOS limitek részletes paramétereit így tudjuk kilistázni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacctmgr show qos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tesztelés ====&lt;br /&gt;
Teszt job bekuldesehez a --qos=test opciot kell hasznalni a job scriptben. Ebben az esetben maximum 30 percig futhat a job es osszesen 24 szal kerheto.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IntelMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 10 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 10 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3446</id>
		<title>Miskolc UV 2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3446"/>
				<updated>2015-11-02T14:55:37Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Slurm figyelmeztető üzenetek */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| ccNUMA&lt;br /&gt;
| Miskolc&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 44 × Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 1 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 4000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.miskolc.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.miskolc.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.miskolc.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.miskolc.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.miskolc.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
      MISKOLC[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -c CORES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;CORES&amp;lt;/code&amp;gt; a lefoglalni kívánt core-ok száma, amelynek 8 többszörösének kell lenni. 8 core-hoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a core-ok számát. A &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje. &lt;br /&gt;
 &lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
Az egyetlen elfogadott paraméter a szálak száma (`-n`), amelynek 8 többszörösének kell lennie. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a szálak számát. Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás. A gépen lévő QOS limitek részletes paramétereit így tudjuk kilistázni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacctmgr show qos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tesztelés ====&lt;br /&gt;
Teszt job bekuldesehez a --qos=test opciot kell hasznalni a job scriptben. Ebben az esetben maximum 30 percig futhat a job es osszesen 24 szal kerheto.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IntelMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 10 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 10 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3445</id>
		<title>Miskolc UV 2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3445"/>
				<updated>2015-11-02T14:54:16Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* A gépidő becslése */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| ccNUMA&lt;br /&gt;
| Miskolc&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 44 × Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 1 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 4000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.miskolc.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.miskolc.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.miskolc.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.miskolc.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.miskolc.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
      MISKOLC[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -c CORES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;CORES&amp;lt;/code&amp;gt; a lefoglalni kívánt core-ok száma, amelynek 8 többszörösének kell lenni. 8 core-hoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a core-ok számát. A &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje. &lt;br /&gt;
 &lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
Az egyetlen elfogadott paraméter a szálak száma (`-n`), amelynek 8 többszörösének kell lennie. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a szálak számát. Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás. A gépen lévő QOS limitek részletes paramétereit így tudjuk kilistázni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacctmgr show qos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tesztelés ====&lt;br /&gt;
Teszt job bekuldesehez a --qos=test opciot kell hasznalni a job scriptben. Ebben az esetben maximum 30 percig futhat a job es osszesen 24 szal kerheto.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IntelMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 10 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 10 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3444</id>
		<title>Miskolc UV 2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3444"/>
				<updated>2015-11-02T14:49:51Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Job-ok indítása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| ccNUMA&lt;br /&gt;
| Miskolc&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 44 × Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 1 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 4000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.miskolc.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.miskolc.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.miskolc.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.miskolc.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.miskolc.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
      MISKOLC[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -c CORES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;CORES&amp;lt;/code&amp;gt; a lefoglalni kívánt core-ok száma, amelynek 8 többszörösének kell lenni. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a core-ok számát. A &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje. &lt;br /&gt;
 &lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
Az egyetlen elfogadott paraméter a szálak száma (`-n`), amelynek 8 többszörösének kell lennie. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a szálak számát. Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás. A gépen lévő QOS limitek részletes paramétereit így tudjuk kilistázni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacctmgr show qos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tesztelés ====&lt;br /&gt;
Teszt job bekuldesehez a --qos=test opciot kell hasznalni a job scriptben. Ebben az esetben maximum 30 percig futhat a job es osszesen 24 szal kerheto.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IntelMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 10 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 10 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=NIIF_szupersz%C3%A1m%C3%ADt%C3%B3g%C3%A9pek_haszn%C3%A1lata&amp;diff=3443</id>
		<title>NIIF szuperszámítógépek használata</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=NIIF_szupersz%C3%A1m%C3%ADt%C3%B3g%C3%A9pek_haszn%C3%A1lata&amp;diff=3443"/>
				<updated>2015-11-02T14:26:32Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* SGI UV SMP (Pécs) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== A szuperszámítógépekről ==&lt;br /&gt;
Az NIIF Intézet szuperszámítógép szolgáltatása tudományos számítási feladatok futtatására, valamint tudományos célú adattárolásra szolgál. A jelenleg integrált szuperszámítógép-rendszer komponensei négy helyszínen találhatók:&lt;br /&gt;
&lt;br /&gt;
* Debreceni Egyetem&lt;br /&gt;
* NIIFI központ&lt;br /&gt;
* Pécsi Tudományegyetem&lt;br /&gt;
* Szegedi Tudományegyetem&lt;br /&gt;
&lt;br /&gt;
A tudományos számítási feladatok különböző típusainak minél szélesebb körű lefedettsége érdekében az egyes helyszíneken különböző felépítésű gépek találhatók: egy helyszínen ccNUMA, három helyszínen pedig &amp;quot;fat-node&amp;quot; fürtözött megoldás. Az alrendszereket az NIIFI nagy sávszélességű, alacsony késleltetésű HBONE+ adathálózatán keresztül, ARC grid köztesréteg, valamint harmonizált felhasználói azonosítás segítségével integráljuk egységes elvek mentén elérhető számítási egységgé. Az erőforrás jelenleg Magyarország legnagyobb tudományos számítás céljára felhasználható erőforrása, amely összesen 50 billió lebegőpontos művelet elvégzését teszi lehetővé másodpercenként.&lt;br /&gt;
A szuperszámítógép-rendszert az NIIFI üzemelteti és fejleszti. A rendszerhez regisztrációt követően, minden olyan személy vagy kutatócsoport hozzáférhet, amely tagintézményi szerződéses kapcsolatban áll az NIIF Intézettel.&lt;br /&gt;
A gépen megtalálhatók és futtathatók a legkorszerűbb fejlesztőeszközök és tudományos számításra szolgáló alkalmazások, valamint, az NIIF adatközpontban elhelyezett alrendszer kivételével, valamennyi alrendszer kiegészül a számítási feladatok eredményeit megjelenítő vizualizációs eszközökkel.&lt;br /&gt;
&lt;br /&gt;
=== Köszönetnyilvánítás ===&lt;br /&gt;
Tudományos publikációkban a következő köszönetnyilvánítást javasoljuk:&lt;br /&gt;
&lt;br /&gt;
'''We acknowledge [PRACE/NIIF] for awarding us access to resource based in Hungary at [Budapest/Debrecen/Pécs/Szeged].'''&lt;br /&gt;
&lt;br /&gt;
Where technical support has been received the following additional text should also be used:&lt;br /&gt;
&lt;br /&gt;
'''The support of [name of person/people] from NIIF Institute, Hungary to the technical work is gratefully acknowledged.'''&lt;br /&gt;
&lt;br /&gt;
== Hozzáférés a szuperszámítógépekhez == &lt;br /&gt;
A szuperszámítógépekhez kulcsos SSH használatával lehet hozzáférni. Ajánlott UTF-8 képes terminált használ az ékezetes betűk megjeelenítése érdekében. PUTTY terminál esetén a ''Window/Translation'' beállítás alatt a character set-et kell UTF-8-ra állítani.&lt;br /&gt;
&lt;br /&gt;
=== SSH belépés ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ssh USER@login.SITE.hpc.niif.hu&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;USER&amp;lt;/code&amp;gt; a felhasználónév, a &amp;lt;code&amp;gt;SITE&amp;lt;/code&amp;gt; pedig a belépéshez használt szupergép neve: '''budapest''', '''debrecen''', '''pecs''', '''szeged'''. Nem alapértelmezett kulcs használata a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval lehetséges.&lt;br /&gt;
&lt;br /&gt;
Belépés a szegedi gépre alice felhasználóként, az SSH privát kulcsot a &amp;lt;code&amp;gt;keys/szeged&amp;lt;/code&amp;gt; fájlból olvasva:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ssh -i keys/szeged alice@login.szeged.hpc.niif.hu&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fájl másolás SCP segítségével ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scp USER@login.SITE.hpc.niif.hu:FILE FILE&lt;br /&gt;
scp FILE USER@login.SITE.hpc.niif.hu:FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A szegedi gép HOME könyvtárában lévő &amp;lt;code&amp;gt;stuff.tgz&amp;lt;/code&amp;gt; fájl letöltése a helyi gép aktuális könyvtárába:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
scp bob@login.szeged.hpc.niif.hu:stuff.tgz .&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatátvitel rsync segítségével ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához az SSH-t és az rsync-et együtt kell használni. Fel- és leszinkronizálás:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -a -e ssh DIRECTORY USER@login.budapest.hpc.niif.hu:/home/USER&lt;br /&gt;
rsync -a -e ssh USER@login.budapest.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A budapesti gépre szinkronizálom a helyi &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; könyvtár tartalmát (nem az alapértelmezett kulcsot használva) és a másolás folyamatát nyomonkövetem:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
rsync -a -h --progress -e &amp;quot;ssh -i keys/budapest&amp;quot; ./src alice@login.budapest.hpc.niif.hu:/home/alice&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
A szupergépek elsődleges felhasználói felülete a Bash shell. Az automatikusan betöltődő NIIF Common Environment (NCE) a PS1 promptot a következőképp állítja be:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                    |&lt;br /&gt;
    BUDAPEST[login] ~ (0)$&lt;br /&gt;
        |      |       |&lt;br /&gt;
   HPC állomás |       |&lt;br /&gt;
         rövid gép név |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
A szupergépekre telepített alkalmazásokat az ún. modul rendszer segítségével lehet használ. A modul rendszer lehetővé teszi egy adott alkalmazás több verziójának használatát is. Feladata a shell környezeti változók helyes beállítása. Normál felhasználók számára az alapértelmezett modul környezet automatikusan betöltődik. Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load APPS&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;APPS&amp;lt;/code&amp;gt; a betöltendő modulok space-szel elválasztott listája.&lt;br /&gt;
&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
==== Példa ====&lt;br /&gt;
A Maple, netcfd és az R csomagok betöltése:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load maple netcdf R&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához használjuk a [http://www.techrepublic.com/blog/linux-and-open-source/learn-to-use-extended-file-attributes-in-linux-to-boost-security/](fájlrendszer ACL-eket). Az ACL-ekkel a hagyományos unix engedélyeken felül finoman szabályozhatjuk a fájlok és könyvtárak hozzáférési engedélyeit. A következő példában a &amp;lt;code&amp;gt;$HOME/Shared&amp;lt;/code&amp;gt; könyvtárat osztjuk egy munkatárs számára:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# a home könyvtár beállítása&lt;br /&gt;
# user1 user számára belépsi engedély: u:user1:x &lt;br /&gt;
$ setfacl -m u:user1:x $HOME&lt;br /&gt;
$ getfacl $HOME&lt;br /&gt;
# file: user2/user2&lt;br /&gt;
# owner: user2&lt;br /&gt;
# group: user2&lt;br /&gt;
user::rwx&lt;br /&gt;
user:user1:--x&lt;br /&gt;
group::r-x&lt;br /&gt;
mask::r-x&lt;br /&gt;
other::---&lt;br /&gt;
# Shared könyvtár megosztása&lt;br /&gt;
# user1 számára minden unix jog&lt;br /&gt;
$ cd&lt;br /&gt;
$ mkdir Shared&lt;br /&gt;
$ setfacl -m u:user1:rwx $HOME/Shared&lt;br /&gt;
$ getfacl Shared&lt;br /&gt;
# file: Shared&lt;br /&gt;
# owner: user2&lt;br /&gt;
# group: user2&lt;br /&gt;
user::rwx&lt;br /&gt;
user:user1:rwx&lt;br /&gt;
group::rwx&lt;br /&gt;
mask::rwx&lt;br /&gt;
other::r-x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Python csomag telepítése a saját home könyvtárunkba ==&lt;br /&gt;
Itt egy példa arra, hogy hogyan tudjuk feltelepíteni a mercurial python csomagot.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module load python &lt;br /&gt;
$ pip install --user mercurial&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login és vserver node-jai osztott home könyvtárral vannak összekötve. Fontos, hogy az osztott könyvtárat a számítási node-ok nem érik el, ezért az osztott home-ot csak tárolásra ill. megosztásra lehet használni. Az osztott terület Debrecenben van, ezért ott a leggyorsabb. A másik három helyen lassabb a hozzáférés a nagyobb távolság miatt. A programok kimenetét továbbra is a lokális scratch vagy home könyvtárba kell írni. Amelyik login node-on használni szeretnénk az osztott home könyvtárat, ott adjuk ki a következő parancsokat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd; mkdir shared; ln -s /mnt/fhgfs/home/$USER shared/$USER &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ezek után a &amp;lt;code&amp;gt;$HOME/shared/$USER&amp;lt;/code&amp;gt; könyvtárba másoljuk a megosztott fájlokat. Ez a könyvtár a következő környezeti változóba is exportálódik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$NCE_SHARED &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Biztonsági mentés, adatmegosztás ===&lt;br /&gt;
A következő példa mentést végez a &amp;lt;code&amp;gt;$HOME/data&amp;lt;/code&amp;gt; könyvtárról:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP $HOME/data $NCE_SHARED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Törölje a fájlokat a mentésben is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/data $NCE_SHARED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
Weboldal: http://slurm.schedmd.com&lt;br /&gt;
&lt;br /&gt;
A szupergépeken CPU óra (gépidő) alapú ütemezés működik. Ez azt jelenti, hogy a fogyasztási időtartamra (hónap) az elérhető maximális gépidő fel van osztva a felhasználók között. Minden UNIX felhasználó egy vagy több számlához (''Account'') tartozhat. Az ütemező számla egy adott HPC-s projekthez tartozik, hasonló a UNIX csoporthoz. Szupergépes feladatokat csak az egyes számlák terhére lehet indítani. A CPU óra az elhasznált idő (''Walltime'') és az igényelt processzorok számának szorzata. Például a budapesti gépen 2 db node (48 processzor mag) foglalása 30 percre 48 * 30 = 1440 CPU perc = 24 CPU óra. A CPU órát az ütemező a futás kezdetétől a befejezésig méri.&lt;br /&gt;
&lt;br /&gt;
'''Rendkívül fontos arról meggyőződni, hogy a futtatandó alkalmazás rendesen kihasználja-e a szupergépet. Egy üres vagy rosszul futó job hamar elhasználja a rendelkezésre álló gépidőt. Elfogyasztott gépidő esetén új jobokat már nem lehet indítani, és meg kell várni a számlázási időszak végét. A gépidő limitek (Account Limit) minden hónap elején jóváíródnak.'''&lt;br /&gt;
&lt;br /&gt;
Számláink állapotáról a következő paranccsal kapunk információt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A parancs a következő táblázatot jeleníti meg. A felhasználó két számlához (foobar,barfoo) is hozzáfér, futatthat a számla terhére. Saját magát megcsillagozva látja a listában. Bobbal mindkét számlán (Account oszlop) Alice is osztozik. A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyeik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még alérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
alice                0 |           foobar           0 |             0           0&lt;br /&gt;
bob *                0 |           foobar           0 |             0           0&lt;br /&gt;
&lt;br /&gt;
bob *                7 |           barfoo           7 |         1,000         993&lt;br /&gt;
alice                0 |           barfoo           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
Alice 2 nap 10 órára és 2 node-ra szeretne foglalást kérni, megnézi van-e elég gépidő a számláján:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N 2 -t 2-10:00:00&lt;br /&gt;
&lt;br /&gt;
Estimated CPU hours: 2784&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Sajnos ebben a hónapban erre már nem telik.&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csőkkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
Az ütemezőben 3 feladat van. Az első egy arrayjob, éppen erőforrásra vár (PENDING). A második egy MPI job, ami 4 node-on fut már 25 perce (TIME). A harmadik egy egy node-os OMP futtatás, éppen most indult el. A feladatik nevei (NAME) egyénileg adható meg. Rövid, informatív neveket érdemes adni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
squeue -l&lt;br /&gt;
&lt;br /&gt;
Wed Oct 16 08:30:07 2013              &lt;br /&gt;
     JOBID PARTITION     NAME     USER    STATE       TIME TIMELIMIT  NODES NODELIST(REASON)&lt;br /&gt;
591_[1-96]    normal    array    alice  PENDING       0:00     30:00      1 (None)&lt;br /&gt;
       589    normal      mpi      bob  RUNNING      25:55   2:00:00      4 cn[05-08]&lt;br /&gt;
       590    normal      omp    alice  RUNNING       0:25   1:00:00      1 cn09&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a 2 node-os batch jobnak a jellemző memóriaterhelés a következő volt: kb. 10GB virtuális és 6.5GB RSS memóriát használt el node-onként.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory 430&lt;br /&gt;
&lt;br /&gt;
 MaxVMSize  MaxVMSizeNode  AveVMSize     MaxRSS MaxRSSNode     AveRSS&lt;br /&gt;
---------- -------------- ---------- ---------- ---------- ----------&lt;br /&gt;
10271792K           cn06  10271792K   6544524K       cn06   6544524K   &lt;br /&gt;
10085152K           cn07  10085152K   6538492K       cn07   6534876K &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU felhasználás ellenőrzése ====&lt;br /&gt;
Nagyon fontos meggyőződni arról, hogy az alkalmazás kihasználja-e a rendelkezésre álló gépidőt. Egy futó alkalmazás a következő paranccsal tudunk monitorozni:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sjobcheck JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez a job 4 node-on fut. A LOAD csoport a gép általános terheléséről ad információt és kb. a core-ok számával egyezik meg. A helyes felhasználásról a CPU csoport ad tájékoztatást. Ideális esetben a &amp;lt;code&amp;gt;User&amp;lt;/code&amp;gt; oszlop értékei 90 fölött vannak. Ez alatt valamilyen probléma lépett fel és a futást érdemes megszakítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hostname                     LOAD                       CPU              Gexec  &lt;br /&gt;
 CPUs (Procs/Total) [     1,     5, 15min] [  User,  Nice, System, Idle, Wio]&lt;br /&gt;
cn08    24 (   25/  529) [ 24.83, 24.84, 20.98] [  99.8,   0.0,   0.2,   0.0,   0.0] OFF&lt;br /&gt;
cn07    24 (   25/  529) [ 24.93, 24.88, 20.98] [  99.8,   0.0,   0.2,   0.0,   0.0] OFF&lt;br /&gt;
cn06    24 (   25/  529) [ 25.00, 24.90, 20.97] [  99.9,   0.0,   0.1,   0.0,   0.0] OFF&lt;br /&gt;
cn05    24 (   25/  544) [ 25.11, 24.96, 20.97] [  99.8,   0.0,   0.2,   0.0,   0.0] OFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=niif Start=2014-01-01&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
niif helyett a saját projektünk azonosítóját kell megadni.&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni. Az ütemezők összehasonlításáról és a Slurm-ban elérhető direktívákról a következő [http://slurm.schedmd.com/rosetta.pdf táblázat] ad bővebb tájékoztatást.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sbatch jobscript.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépeken két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt; sor. Utóbbi az éles számolásokra való, előbbi fejlesztés és tesztelés céljára használható. A teszt sorban összesen 1 node-ot, maximum fél órára lehet lefoglalni. Az alapértelmezett sor a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt;. A teszt partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
A memória a CPU-hoz hasonlóan korlátozott, foglalható erőforrás. A felhasználás mérése a memória / core alapon történik: 1 core óra, 2600 MB órának felel meg. Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. Budapesten és Szegeden a maximális memória/core 2600 MB.&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 24 órára ad fel 96 db soros jobot. A &amp;lt;code&amp;gt;#SBATCH --array=1-96&amp;lt;/code&amp;gt; direktíva jelzi, hogy tömbfeladatról van szó. Az alkalmazást az &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; paranccsal kell indítani. Ebben az esetben ez egy shell szkript.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&lt;br /&gt;
A következő példában a test sorban 3 egy szálon dutó programot indítunk el. A programok és az inputok lehetnek különbözőek. Fontos, hogy az utolsó parancsot nem kell a háttérben (&amp;amp;) indítani és a wait-tel kell befejezni a job szkriptet.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&lt;br /&gt;
Bob felhasználó a barfoo számla terhére 2 node-ot, 12 órára foglal le egy MPI job számára. Az egyes node-okon 24 MPI szálat fog elindítani. A program stdout kimenetét a &amp;lt;code&amp;gt;slurm.out&amp;lt;/code&amp;gt; fájlba irányítja (&amp;lt;code&amp;gt;#SBATCH -o&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=24&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI ccNUMA UV 1000 (Pécs) ====&lt;br /&gt;
A pécsi gépen legalább 6 szálon működő jobok futtatása lehetságes. Az egyetlen elfogadott paraméter a szálak szám (`-n`), amelynek 6 többszörösének kell lenni. Ezen a gépen nincs teszt sor. Kérjük, hogy 48-nál kevesebb szálon futó programokat az UV-n ne futtassanak! Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
===== OMP Példa =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH -n 48&lt;br /&gt;
#SBATCH --time=03:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
/opt/nce/bin/numainfo&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_NTASKS ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== SGI MPT MPI Példa =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH -n 48&lt;br /&gt;
#SBATCH --time=03:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
/opt/nce/bin/numainfo&lt;br /&gt;
mpirun $SLURM_NTASKS ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Jobok monitorozása =====&lt;br /&gt;
CPU használat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smonitor -n &amp;lt;JOBID&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Memória használat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smonitor -m &amp;lt;JOBID&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ütemezés sor foglaltsága:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sinfo_uv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI MPT MPI feladatok (Debrecen) ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani. Az SGI MPT MPI paraméterezése kicsit más, mint az OpenMPI. '''Debrecen az SGI MPT az alpértelmezett MPI környezet!'''&lt;br /&gt;
&lt;br /&gt;
Bob felhasználó a barfoo számla terhére 2 node-ot, 12 órára foglal le egy MPI job számára. Az egyes node-okon 24 MPI szálat fog elindítani. A program stdout kimenetét a &amp;lt;code&amp;gt;slurm.out&amp;lt;/code&amp;gt; fájlba irányítja (&amp;lt;code&amp;gt;#SBATCH -o&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=12&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
source /opt/nce/bin/machines&lt;br /&gt;
export MPI_OPT=&amp;quot;${MACHINES} -np ${SLURM_NTASKS_PER_NODE}&amp;quot;&lt;br /&gt;
mpirun ${MPI_OPT} ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI PerfBoost egyéb MPI feladatokra (Debrecen) ====&lt;br /&gt;
Az SGI MPT lehetőséget ad arra, hogy nem MPT MPI-vel fordított MPI programok is használjunk. Ebben az esetben az MPI hívások MPT hívásokkal cserélődnek ki.&lt;br /&gt;
&lt;br /&gt;
Egy OpenMPI-re fordított program indítása:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=12&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
source /opt/nce/bin/machines&lt;br /&gt;
export MPI_OPT=&amp;quot;${MACHINES} -np ${SLURM_NTASKS_PER_NODE}&amp;quot;&lt;br /&gt;
mpirun ${MPI_OPT} perfboost -ompi ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU binding ====&lt;br /&gt;
Az MPI programok teljesítménye általában javítható a processzek CPU magokhoz kötésével. Ilyenkor a párhuzamos program szálait az operációs rendszer nem ütemezi a CPU magok között, ezért javulhat a memória lokalizáció (kevesebb cache miss). A kötés használata ajánlott. Tesztekkel meg kell győződni, hogy egy adott alkalmazás esetén melyik kötési stratégia adja a legjobb eredményt. A következő beállítások az OpenMPI környezetre vontakoznak. A kötésekről részletes információt a &amp;lt;code&amp;gt;--report-bindings&amp;lt;/code&amp;gt; MPI opcióval kaphatunk. Az indítási parancsok melett a részletes binding információ néhány sora is látható. Fontos, hogy az ütemező task binding-ját nem kell használni!&lt;br /&gt;
&lt;br /&gt;
===== Kötés CPU magonként =====&lt;br /&gt;
Ebben az esetben az MPI szálak (rank) sorban töltik fel a CPU magokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Indítási parancs: mpirun --bind-to-core --bycore&lt;br /&gt;
&lt;br /&gt;
[cn05:05493] MCW rank 0 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05493] MCW rank 1 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05493] MCW rank 2 bound to socket 0[core 2]: [. . B . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05493] MCW rank 3 bound to socket 0[core 3]: [. . . B . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Kötés CPU foglalat szerint =====&lt;br /&gt;
Ebben az esetben az MPI szálak váltakozva töltik fel a CPU-kat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Indítási parancs: mpirun --bind-to-core --bysocket&lt;br /&gt;
&lt;br /&gt;
[cn05:05659] MCW rank 0 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05659] MCW rank 1 bound to socket 1[core 0]: [. . . . . . . . . . . .][B . . . . . . . . . . .]&lt;br /&gt;
[cn05:05659] MCW rank 2 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05659] MCW rank 3 bound to socket 1[core 1]: [. . . . . . . . . . . .][. B . . . . . . . . . .]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Kötés node-ok szerint =====&lt;br /&gt;
Ebben az esetben az MPI szálak váltakozva töltik fel a node-okat. Lagalább 2 node foglalása szükséges.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Indítási parancs: mpirun --bind-to-core --bynode&lt;br /&gt;
&lt;br /&gt;
[cn05:05904] MCW rank 0 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05904] MCW rank 2 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn06:05969] MCW rank 1 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn06:05969] MCW rank 3 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 24 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 24 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 24 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=24&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Maple Grid feladatok ====&lt;br /&gt;
Maple-t az OMP feladatokhoz hasonlóan 1 node-on lehet futtatni. Használatához be kell tölteni a maple modult is. A Maple kliens-szerver üzemmódban működik ezért a Maple feladat futtatása előtt szükség van a grid szerver elindítására is (&amp;lt;code&amp;gt;${MAPLE}/toolbox/Grid/bin/startserver&amp;lt;/code&amp;gt;). Ez az alkalmazás licensz köteles, amit a jobszkriptben meg kell adni (&amp;lt;code&amp;gt;#SBATCH --licenses=maplegrid:1&amp;lt;/code&amp;gt;). A Maple feladat indátását a &amp;lt;code&amp;gt;${MAPLE}/toolbox/Grid/bin/joblauncher&amp;lt;/code&amp;gt; paranccsal kell elvégezni.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, 6 órára indítja el a Maple Grid alkalmazást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=maple&lt;br /&gt;
#SBATCH -N 1&lt;br /&gt;
#SBATCH --ntasks-per-node=24&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
#SBATCH --licenses=maplegrid:1&lt;br /&gt;
&lt;br /&gt;
module load maple&lt;br /&gt;
&lt;br /&gt;
${MAPLE}/toolbox/Grid/bin/startserver&lt;br /&gt;
${MAPLE}/toolbox/Grid/bin/joblauncher ${MAPLE}/toolbox/Grid/samples/Simple.mpl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Matlab feladatok ====&lt;br /&gt;
Ez az alkalmazás licensz köteles, amit a jobszkriptben meg kell adni (&amp;lt;code&amp;gt;#SBATCH --licenses=matlabdce:1,matlabdct:1,matlab:1&amp;lt;/code&amp;gt;). Összesen 96 darab &lt;br /&gt;
Distributed Computing Server, 13 darab Distributed Computing Toolbox és 13 Matlab licensz lett megvásárolva.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=&amp;quot;Matlab test job&amp;quot;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH --licenses=matlabdce:1,matlabdct:1,matlab:1&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
&lt;br /&gt;
matlab -nodisplay &amp;lt; job.m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPU-k használata ====&lt;br /&gt;
A szegedi szuperszámítógép rendelkezik 2db GPU kártyákkal is felszerelt compute node-dal. A GPU node-okban 2x6db Nvidia Tesla M2070-es kártya található. A GPU-s node-ok külön job sorban található (&amp;lt;code&amp;gt;--partition gpu&amp;lt;/code&amp;gt;). A GPU-k számát a &amp;lt;code&amp;gt;--gres gpu:#&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, 4GPU-n, 6 órára indítja a következő jobot.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=GPU&lt;br /&gt;
#SBATCH --partition gpu&lt;br /&gt;
#SBATCH --gres gpu:4&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
&lt;br /&gt;
$PWD/gpu_burnout 3600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások beállításai ==&lt;br /&gt;
=== Saját programok telepítése ===&lt;br /&gt;
A saját fordítású programokat a HOME könyvtáradba kell telepíteni, ezt általában a fordítás előtti lefuttatott configure szkripttel lehet beállítani. Az adott program a $HOME/local alá fog települni. A PATH és egyéb környezeti változókat értelem szerűen kell beállítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME&lt;br /&gt;
mkdir local&lt;br /&gt;
(belépés az alklamazás könyvtárába)&lt;br /&gt;
./configure --prefix=$HOME/local&lt;br /&gt;
make; make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A frontend gépeken felhasználói limitek vannak beállítva. Ezekről a következő paranccsal kapunk információt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ulimit -a&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A limitek a compute node-okon és az UV-n nincsenek beállítva.&lt;br /&gt;
&lt;br /&gt;
=== Java JVM heap méret ===&lt;br /&gt;
A memória limit miatt a Java virtuális gépen és fordító nem jól működik, ezért meg kell adni a maximális heap méretét:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
java -Xmx512m -version&lt;br /&gt;
javac -J-Xmx512m -version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
vagy exportálni kell a következő változót:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export _JAVA_OPTIONS=&amp;quot;-Xms1g -Xmx1g&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python Numpy és Scipy használat ===&lt;br /&gt;
A numerikus Python használatához a következő csomagokat kell betölteni:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load python numpy scipy&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A numpy és a scipy csomagok az Intel MKL OpenMP gyorsítását használják. A jobokat az &amp;lt;code&amp;gt;openmp&amp;lt;/code&amp;gt; párhuzamos környezetbe kell elküldeni.&lt;br /&gt;
&lt;br /&gt;
== HP Budapest ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fordítás ===&lt;br /&gt;
Elérhető fordítók listája&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Forító&lt;br /&gt;
! Soros&lt;br /&gt;
! Párhuzamos&lt;br /&gt;
|-&lt;br /&gt;
| Intel Fortran&lt;br /&gt;
| ifort&lt;br /&gt;
| mpiif90&lt;br /&gt;
|-&lt;br /&gt;
| Intel C&lt;br /&gt;
| icc&lt;br /&gt;
| mpiicc&lt;br /&gt;
|-&lt;br /&gt;
| GNU Fortran&lt;br /&gt;
| gfotran&lt;br /&gt;
| mpif90&lt;br /&gt;
|-&lt;br /&gt;
| GNU C&lt;br /&gt;
| gcc&lt;br /&gt;
| mpicc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A fordítási paramétereket az NCE környezeti változókból érdemes kiolvasni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NCE_OFLAGS - optimalizációs kapcsolók C és Fortran&lt;br /&gt;
NCE_FFLAGS - Fortran kapcsolók&lt;br /&gt;
NCE_CFLAGS - C kapcsolók&lt;br /&gt;
NCE_LDFLAGS - könyvtárak C és Fortran&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az NCE környezeti változó listáját az &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; paranccsal kérhetjük le.&lt;br /&gt;
&lt;br /&gt;
A budapesti gépen elérhető a PRACE környezet is, amely tartalmaz egy ajánlott kapcsoló és könyvtár összeállítást tartalmaz. A PRACE környezet betöltése:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load prace&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A PRACE környezet az AMD ACML matematikai könyvtárakat használja, amennyiben az Intel MKL-re van szükségünk, akkor a PRACE környezetet nem kell betölteni. A megfelelő MKL kapcsolókat az [http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor Intel Link Advisor] szerint kell beállítani, pl.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FFLAGS=-openmp -I$(MKLROOT)/include&lt;br /&gt;
CFLAGS=-openmp -I$(MKLROOT)/include&lt;br /&gt;
LDFLAGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \&lt;br /&gt;
  -Wl,--start-group \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_intel_thread.a \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_core.a \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_blacs_openmpi_lp64.a \&lt;br /&gt;
  -Wl,--end-group -lpthread -lm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Párhuzamos környezet ===&lt;br /&gt;
==== OpenMP ====&lt;br /&gt;
Az OpenMP paraméterket környezeti változókon keresztül kell beállítani. Az &amp;lt;code&amp;gt;openmp&amp;lt;/code&amp;gt; párhuzamos SLURM környezet az OpenMP szálak számát beállítja. Tovább környezeti változókat az [https://computing.llnl.gov/tutorials/openMP/#EnvironmentVariables LLNL OpenMP oldalán] találtok.&lt;br /&gt;
&lt;br /&gt;
==== MPI ====&lt;br /&gt;
Az alapértelmezett MPI könyvtár az Open MPI. Ajánlott optimalizációs kapcsolók (CPU binding):&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
--bind-to-core --bycore&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SGI ICE Debrecen ==&lt;br /&gt;
Az alapértelmezett MPI könyvtár az SGI MPT. A felhasználói programokat ehhez a könyvtárhoz érdemes fordítani. Ajánlott fordítás opciók:&lt;br /&gt;
&lt;br /&gt;
=== MPI fordítási opciók ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    CFLAGS=-O2 -xSSE4.2&lt;br /&gt;
    FFLAGS=-O2 -xSSE4.2&lt;br /&gt;
    LDFLAGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \&lt;br /&gt;
      -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_sequential.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_core.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_blacs_sgimpt_lp64.a -Wl,--end-group \&lt;br /&gt;
      -lpthread -lm&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MPI és OpenMP fordítási opciók ===&lt;br /&gt;
Ebben az esetben az MKL műveletek OpenMP szálasíthatók, a program hibrid MPI és OMP módban is tud üzemelni.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    CFLAGS=-O2 -xSSE4.2 -openmp&lt;br /&gt;
    FFLAGS=-O2 -xSSE4.2 -openmp&lt;br /&gt;
    LDFALGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \&lt;br /&gt;
      -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_intel_thread.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_core.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_blacs_sgimpt_lp64.a -Wl,--end-group \&lt;br /&gt;
      -liomp5 -lpthread -lm -openmp&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ARC köztesréteg ==&lt;br /&gt;
Ez a NorduGrid közösség által fejlesztett Grid köztesréteg. Részletes dokumentációkért [http://www.nordugrid.org/documents ezt a weboldalt] érdemes felkeresni.&lt;br /&gt;
&lt;br /&gt;
=== Miért is használjuk?! ===&lt;br /&gt;
* Jobb terhelés elosztást tesz lehetővé a szuperszámítógépek között&lt;br /&gt;
* A jobok azon a gépen fognak elindulni, ami a legmegfelelőbb a számára&lt;br /&gt;
* Egy nagy egységgé kapcsolja össze a szuperszámítógépeket&lt;br /&gt;
* Szabványos webservice interfésszel ([https://www.ogf.org/documents/GFD.108.pdf OGSA-BES], [https://www.ogf.org/documents/GFD.114.pdf HPC Basic Profile]) rendelkezik. Ezáltal könnyen lehet integrálni más rendszerekkel&lt;br /&gt;
* Nagyon sok operációs rendszert támogat&lt;br /&gt;
* A saját számítógépünkről tudjuk kezelni a szuperszámítógépes jobokat&lt;br /&gt;
* A [http://pulse.fgi.csc.fi/gridrer/htdocs/index.phtml futás idejű környezetek használatával] a megfelelő módon lefordított alkalmazást tudjuk használni és nem kell észben tartani, hogy éppen melyik szuperszámítógépen van telepítve a program&lt;br /&gt;
&lt;br /&gt;
=== Grid tanúsítvány igénylése ===&lt;br /&gt;
Első lépésként szükségünk lesz egy '''Grides X.509 tanúsítványra''', amivel az ARC klienseket használni tudjuk. A [https://portal.hpc.niif.hu HPC portálon] keresztül lehetőségünk van igényelni egy 2 hétig érvényes SLCS tanúsítványt. A személyes adatok menüpontra kell kattintani és az oldal végén lesz az igénylő felület. '''Fontos: legalább egy HPC projekt tagsággal rendelkeznünk kell a HPC portálon. ''' Itt található az a letölthető UNIX script is, ami minden szükséges beállítást elvégez a számunkra: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           &lt;br /&gt;
 $ chmod +x slcs_unix_install.sh &lt;br /&gt;
 $ ./slcs_unix_install.sh &lt;br /&gt;
 $HOME/.globus/usercert.pem and $HOME/.globus/userkey.pem installed&lt;br /&gt;
 NIIF HPC SLCS Root CA installed: $HOME/.globus/certificates/SLCSCA.pem&lt;br /&gt;
 Default ARC client configuration created: $HOME/.arc/client.conf&lt;br /&gt;
 NIIF Root CA 2 installed: $HOME/.globus/certificates/NIIFCA.pem&lt;br /&gt;
 $ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Az SLCS másik nagy előnye az egyszerűsített igénylésen kívül az, hogy 1 órán belül az összes szuperszámítógépen automatikusan engedélyezve lesz. Viszont ha nem szeretnénk minden második héten új X.509-es tanúsítványt igényelni, akkor lehetőség van arra is, hogy 1 évig érvényes [https://www.igtf.net IGTF] tanúsítványt igényeljünk az NIIF Intézettől [http://www.ca.niif.hu/hu/igenyles ezen az oldal keresztül]. Ebben az esetben a [mailto:hpc-support@niif.hu] címre kell elküldenünk az IGTF-es tanúsítványunk publikus részét és meg kell adnunk, hogy melyik témaszámunkhoz legyen majd rendelve a szuperszámítógépeken.&lt;br /&gt;
&lt;br /&gt;
=== ARC kliensek használatba vétele ===&lt;br /&gt;
==== Telepítés ====&lt;br /&gt;
A csomagok telepítéséhez az itt leírt repo-kat lehet használni: http://download.nordugrid.org/repos-15.03.html&lt;br /&gt;
'''Fontos''': 5.0-ás ARC verziót telepítsük.&lt;br /&gt;
&lt;br /&gt;
Debian alapú rendszerek esetén:  &lt;br /&gt;
  apt-get install nordugrid-arc-client  &lt;br /&gt;
&lt;br /&gt;
Redhat alapú rendszerek esetén:  &lt;br /&gt;
  yum install nordugrid-arc-client&lt;br /&gt;
&lt;br /&gt;
OSX csomag telepítése [http://brew.sh brew] segítségével:&lt;br /&gt;
  brew install nordugrid-arc&lt;br /&gt;
&lt;br /&gt;
Ha nem találtunk megfelelő csomagot, akkor [http://download.nordugrid.org/packages/nordugrid-arc/releases/5.0.0/src/nordugrid-arc-5.0.0.tar.gz innen] le tudjuk tölteni a forráskódját és le tudjuk fordítani.&lt;br /&gt;
&lt;br /&gt;
==== Konfigurálás ====&lt;br /&gt;
$HOME/.arc/client.conf:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [common]&lt;br /&gt;
            &lt;br /&gt;
 [computing/budapest] &lt;br /&gt;
 url=https://login.budapest.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
 &lt;br /&gt;
 [computing/szeged]&lt;br /&gt;
 url=https://login.szeged.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
 &lt;br /&gt;
 [computing/debrecen]&lt;br /&gt;
 url=https://login.debrecen.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
 &lt;br /&gt;
 [computing/pecs]&lt;br /&gt;
 url=https://login.pecs.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
  &lt;br /&gt;
 # FastestQueue – ranks targets according to their queue length&lt;br /&gt;
 brokername=FastestQueue&lt;br /&gt;
 &lt;br /&gt;
 # Random – ranks targets randomly&lt;br /&gt;
 #brokername=Random&lt;br /&gt;
 &lt;br /&gt;
 # Data – ranks targets according the amount of megabytes of the requested input files that are already&lt;br /&gt;
 # in the computing resources cache. &lt;br /&gt;
 #brokername=Data&lt;br /&gt;
 &lt;br /&gt;
 # PythonBroker:&amp;lt;module&amp;gt;.&amp;lt;class&amp;gt;[:arguments] – ranks targets using any user-supplied custom&lt;br /&gt;
 # Python broker module, optionally with broker arguments. Such module can reside anywhere in&lt;br /&gt;
 # user’s PYTHONPATH&lt;br /&gt;
 #brokername=PythonBroker&lt;br /&gt;
 &lt;br /&gt;
 [alias]&lt;br /&gt;
 pecs=computing:ARC1:https://login.pecs.hpc.niif.hu:60000/arex&lt;br /&gt;
 szeged=computing:ARC1:https://login.szeged.hpc.niif.hu:60000/arex&lt;br /&gt;
 debrecen=computing:ARC1:https://login.debrecen.hpc.niif.hu:60000/arex&lt;br /&gt;
 budapest=computing:ARC1:https://login.budapest.hpc.niif.hu:60000/arex&lt;br /&gt;
 hp=budapest szeged&lt;br /&gt;
 sgi=pecs debrecen   &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Érdemes beállítani, hogy alapértelmezés szerint a FastestQueue brókert használja, ezáltal mindig arra a szuperszámítógépre fogja küldeni a jobokat, ahol a legkevesebb a várakozó jobok száma. A konfigurációs fájl részletes dokumentációját és az ARC kliensek leírásait [http://www.nordugrid.org/documents/arc-ui.pdf itt lehet] megnézni.&lt;br /&gt;
&lt;br /&gt;
=== Grid proxy készítése ===&lt;br /&gt;
&lt;br /&gt;
Ha már telepítettük a tanúsítványunkat és az ARC klienseket akkor a következő lépés az, hogy egy proxy tanúsítványt kell készítenünk, ami alapértelmezés szerint 12 óráig érvényes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ arcproxy &lt;br /&gt;
 Enter pass phrase for private key:&lt;br /&gt;
 Your identity: /C=HU/O=NIIF/OU=SLCS/L=hpcteszt/CN=joe&lt;br /&gt;
 Proxy generation succeeded&lt;br /&gt;
 Your proxy is valid until: 2015-03-30 05:01:09&lt;br /&gt;
 $    &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
Tesztelési célból ezeket a parancsokat érdemes kipróbálni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ arcinfo -c szeged  &lt;br /&gt;
 $ arcinfo -c hp -l&lt;br /&gt;
 $ arcinfo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid job készítése ===&lt;br /&gt;
A jobok leírására több formátumot is használhatunk: [https://www.ogf.org/documents/GFD.56.pdf JSDL], vagy [http://www.nordugrid.org/documents/xrsl.pdf xRSL]. Így adjuk meg, hogy a jobunknak mire van szüksége. Itt egy példa job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
 $ cat job.xrsl &lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 (executable=&amp;quot;matlab.sh&amp;quot;)&lt;br /&gt;
 (arguments=&amp;quot;matlab.m&amp;quot;)&lt;br /&gt;
 (stdout=&amp;quot;stdout.txt&amp;quot;)&lt;br /&gt;
 (stderr=&amp;quot;stderr.txt&amp;quot;)&lt;br /&gt;
 (jobname=&amp;quot;Matlab test&amp;quot;)&lt;br /&gt;
 (inputFiles=&lt;br /&gt;
 (&amp;quot;matlab.m&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
 )&lt;br /&gt;
 (memory&amp;gt;=&amp;quot;1000&amp;quot;)&lt;br /&gt;
 (gmlog=&amp;quot;gm.log&amp;quot;)&lt;br /&gt;
 (wallTime=&amp;quot;240&amp;quot;)&lt;br /&gt;
 (runTimeEnvironment=&amp;quot;APPS/MATH/MATLAB-7.13&amp;quot;)  &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cat matlab.sh &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo&lt;br /&gt;
 echo &amp;quot;Compute node: &amp;quot; `/bin/hostname -f`&lt;br /&gt;
 echo&lt;br /&gt;
 matlab -nodisplay &amp;lt; $1&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cat matlab.m&lt;br /&gt;
 2+3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennél a példánál a '''APPS/MATH/MATLAB-7.13''' futásidejű környezetet kértük, ezáltal ez a job csak azon a szuperszámítógépen fog elindulni, ahol ez telepítve van. Továbbá azt kértük még, hogy 240 percig futhasson és legalább 1000 MByte memória rendelkezésre álljon.&lt;br /&gt;
&lt;br /&gt;
Az '''arcinfo -l''' paranccsal tudjuk megnézni, hogy a szuperszámítógépeken milyen futás idejű környezetek (runtime environment-ek) vannak telepítve. Ha szeretnénk egy új környezet beállíttatni, akkor [mailto:hpc-support@niif.hu ide] kell levelet küldeni.&lt;br /&gt;
&lt;br /&gt;
==== OpenMP példa ====&lt;br /&gt;
&lt;br /&gt;
Job elkészítése:&lt;br /&gt;
&amp;lt;code&amp;gt;        &lt;br /&gt;
 $ cat job-openmp.xrsl &lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 (executable=&amp;quot;omp_mm&amp;quot;)&lt;br /&gt;
 (stdout=&amp;quot;stdout.txt&amp;quot;)&lt;br /&gt;
 (stderr=&amp;quot;stderr.txt&amp;quot;)&lt;br /&gt;
 (jobname=&amp;quot;OpenMP test&amp;quot;)&lt;br /&gt;
 (queue=&amp;quot;test&amp;quot;)&lt;br /&gt;
 (executables=&amp;quot;omp_mm&amp;quot;)&lt;br /&gt;
 (count=&amp;quot;10&amp;quot;)&lt;br /&gt;
 (countpernode=&amp;quot;10&amp;quot;)&lt;br /&gt;
 (environment=(&amp;quot;OMP_NUM_THREADS&amp;quot; &amp;quot;10&amp;quot;))&lt;br /&gt;
 (queue=&amp;quot;test&amp;quot;)&lt;br /&gt;
 (inputFiles=&lt;br /&gt;
    (&amp;quot;omp_mm&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
 )&lt;br /&gt;
 (memory&amp;gt;=&amp;quot;2600&amp;quot;)&lt;br /&gt;
 (gmlog=&amp;quot;gm.log&amp;quot;)&lt;br /&gt;
 (wallTime=&amp;quot;20&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Job elküldése:&lt;br /&gt;
&lt;br /&gt;
 $ arcsub job-openmp.xrsl&lt;br /&gt;
 Job submitted with jobid: https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
&lt;br /&gt;
Job állapotának a lekérdezése:&lt;br /&gt;
&lt;br /&gt;
 $ arcstat https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 Job: https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
  Name: OpenMP test&lt;br /&gt;
  State: Finished&lt;br /&gt;
  Exit Code: 0&lt;br /&gt;
 &lt;br /&gt;
 Status of 1 jobs was queried, 1 jobs returned information&lt;br /&gt;
&lt;br /&gt;
Job letöltése:&lt;br /&gt;
&lt;br /&gt;
 $ arcget https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 Results stored at: cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 Jobs processed: 1, successfully retrieved: 1, successfully cleaned: 1&lt;br /&gt;
 zion:~ joe $ cd cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $ ls -l&lt;br /&gt;
 total 16&lt;br /&gt;
 drwx------  12 joe  staff   408 Mar 29 21:24 gm.log&lt;br /&gt;
 -rw-------   1 joe  staff     0 Mar 29 21:24 stderr.txt&lt;br /&gt;
 -rw-------   1 joe  staff  6362 Mar 29 21:24 stdout.txt&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $&lt;br /&gt;
&lt;br /&gt;
Adatok ellenőrzése:&lt;br /&gt;
&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $ head stdout.txt &lt;br /&gt;
 Starting matrix multiple example with 10 threads&lt;br /&gt;
 Initializing matrices...&lt;br /&gt;
 Thread 0 starting matrix multiply...&lt;br /&gt;
 Thread=0 did row=0&lt;br /&gt;
 Thread 9 starting matrix multiply...&lt;br /&gt;
 Thread 6 starting matrix multiply...&lt;br /&gt;
 Thread=0 did row=1&lt;br /&gt;
 Thread 5 starting matrix multiply...&lt;br /&gt;
 Thread=5 did row=50&lt;br /&gt;
 Thread=5 did row=51&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe$           &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== MPI példa ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cat job-mpi.xrsl &lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 (executable=&amp;quot;mpi.sh&amp;quot;)&lt;br /&gt;
 (stdout=&amp;quot;stdout.txt&amp;quot;)&lt;br /&gt;
 (stderr=&amp;quot;stderr.txt&amp;quot;)&lt;br /&gt;
 (jobname=&amp;quot;MPI test&amp;quot;)&lt;br /&gt;
 (executables=&amp;quot;connectivity&amp;quot; &amp;quot;mpi.sh&amp;quot;)&lt;br /&gt;
 (count=&amp;quot;10&amp;quot;)&lt;br /&gt;
 (inputFiles=&lt;br /&gt;
     (&amp;quot;connectivity&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
     (&amp;quot;mpi.sh&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
 )&lt;br /&gt;
 (memory&amp;gt;=&amp;quot;2600&amp;quot;)&lt;br /&gt;
 (gmlog=&amp;quot;gm.log&amp;quot;)&lt;br /&gt;
 (wallTime=&amp;quot;20&amp;quot;)&lt;br /&gt;
 (runTimeEnvironment&amp;gt;=ENV/GCC/MPI/OPENMPI-1.4.3)  &lt;br /&gt;
&lt;br /&gt;
 $ cat mpi.sh &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mpirun -np 10 ./connectivity -v   &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Grafikus felületű ARC kliens ====&lt;br /&gt;
Parancssoros klienseken kívül használni lehet még grafikus klienseket is. [http://sourceforge.net/projects/arc-gui-clients/?source=directory Innen tudják] letölteni őket.&lt;br /&gt;
&lt;br /&gt;
[[Category: HPC]]&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=NIIF_szupersz%C3%A1m%C3%ADt%C3%B3g%C3%A9pek_haszn%C3%A1lata&amp;diff=3442</id>
		<title>NIIF szuperszámítógépek használata</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=NIIF_szupersz%C3%A1m%C3%ADt%C3%B3g%C3%A9pek_haszn%C3%A1lata&amp;diff=3442"/>
				<updated>2015-11-02T14:26:09Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* A szuperszámítógépekről */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== A szuperszámítógépekről ==&lt;br /&gt;
Az NIIF Intézet szuperszámítógép szolgáltatása tudományos számítási feladatok futtatására, valamint tudományos célú adattárolásra szolgál. A jelenleg integrált szuperszámítógép-rendszer komponensei négy helyszínen találhatók:&lt;br /&gt;
&lt;br /&gt;
* Debreceni Egyetem&lt;br /&gt;
* NIIFI központ&lt;br /&gt;
* Pécsi Tudományegyetem&lt;br /&gt;
* Szegedi Tudományegyetem&lt;br /&gt;
&lt;br /&gt;
A tudományos számítási feladatok különböző típusainak minél szélesebb körű lefedettsége érdekében az egyes helyszíneken különböző felépítésű gépek találhatók: egy helyszínen ccNUMA, három helyszínen pedig &amp;quot;fat-node&amp;quot; fürtözött megoldás. Az alrendszereket az NIIFI nagy sávszélességű, alacsony késleltetésű HBONE+ adathálózatán keresztül, ARC grid köztesréteg, valamint harmonizált felhasználói azonosítás segítségével integráljuk egységes elvek mentén elérhető számítási egységgé. Az erőforrás jelenleg Magyarország legnagyobb tudományos számítás céljára felhasználható erőforrása, amely összesen 50 billió lebegőpontos művelet elvégzését teszi lehetővé másodpercenként.&lt;br /&gt;
A szuperszámítógép-rendszert az NIIFI üzemelteti és fejleszti. A rendszerhez regisztrációt követően, minden olyan személy vagy kutatócsoport hozzáférhet, amely tagintézményi szerződéses kapcsolatban áll az NIIF Intézettel.&lt;br /&gt;
A gépen megtalálhatók és futtathatók a legkorszerűbb fejlesztőeszközök és tudományos számításra szolgáló alkalmazások, valamint, az NIIF adatközpontban elhelyezett alrendszer kivételével, valamennyi alrendszer kiegészül a számítási feladatok eredményeit megjelenítő vizualizációs eszközökkel.&lt;br /&gt;
&lt;br /&gt;
=== Köszönetnyilvánítás ===&lt;br /&gt;
Tudományos publikációkban a következő köszönetnyilvánítást javasoljuk:&lt;br /&gt;
&lt;br /&gt;
'''We acknowledge [PRACE/NIIF] for awarding us access to resource based in Hungary at [Budapest/Debrecen/Pécs/Szeged].'''&lt;br /&gt;
&lt;br /&gt;
Where technical support has been received the following additional text should also be used:&lt;br /&gt;
&lt;br /&gt;
'''The support of [name of person/people] from NIIF Institute, Hungary to the technical work is gratefully acknowledged.'''&lt;br /&gt;
&lt;br /&gt;
== Hozzáférés a szuperszámítógépekhez == &lt;br /&gt;
A szuperszámítógépekhez kulcsos SSH használatával lehet hozzáférni. Ajánlott UTF-8 képes terminált használ az ékezetes betűk megjeelenítése érdekében. PUTTY terminál esetén a ''Window/Translation'' beállítás alatt a character set-et kell UTF-8-ra állítani.&lt;br /&gt;
&lt;br /&gt;
=== SSH belépés ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ssh USER@login.SITE.hpc.niif.hu&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;USER&amp;lt;/code&amp;gt; a felhasználónév, a &amp;lt;code&amp;gt;SITE&amp;lt;/code&amp;gt; pedig a belépéshez használt szupergép neve: '''budapest''', '''debrecen''', '''pecs''', '''szeged'''. Nem alapértelmezett kulcs használata a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval lehetséges.&lt;br /&gt;
&lt;br /&gt;
Belépés a szegedi gépre alice felhasználóként, az SSH privát kulcsot a &amp;lt;code&amp;gt;keys/szeged&amp;lt;/code&amp;gt; fájlból olvasva:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ssh -i keys/szeged alice@login.szeged.hpc.niif.hu&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fájl másolás SCP segítségével ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scp USER@login.SITE.hpc.niif.hu:FILE FILE&lt;br /&gt;
scp FILE USER@login.SITE.hpc.niif.hu:FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A szegedi gép HOME könyvtárában lévő &amp;lt;code&amp;gt;stuff.tgz&amp;lt;/code&amp;gt; fájl letöltése a helyi gép aktuális könyvtárába:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
scp bob@login.szeged.hpc.niif.hu:stuff.tgz .&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatátvitel rsync segítségével ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához az SSH-t és az rsync-et együtt kell használni. Fel- és leszinkronizálás:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -a -e ssh DIRECTORY USER@login.budapest.hpc.niif.hu:/home/USER&lt;br /&gt;
rsync -a -e ssh USER@login.budapest.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A budapesti gépre szinkronizálom a helyi &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; könyvtár tartalmát (nem az alapértelmezett kulcsot használva) és a másolás folyamatát nyomonkövetem:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
rsync -a -h --progress -e &amp;quot;ssh -i keys/budapest&amp;quot; ./src alice@login.budapest.hpc.niif.hu:/home/alice&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
A szupergépek elsődleges felhasználói felülete a Bash shell. Az automatikusan betöltődő NIIF Common Environment (NCE) a PS1 promptot a következőképp állítja be:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                    |&lt;br /&gt;
    BUDAPEST[login] ~ (0)$&lt;br /&gt;
        |      |       |&lt;br /&gt;
   HPC állomás |       |&lt;br /&gt;
         rövid gép név |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
A szupergépekre telepített alkalmazásokat az ún. modul rendszer segítségével lehet használ. A modul rendszer lehetővé teszi egy adott alkalmazás több verziójának használatát is. Feladata a shell környezeti változók helyes beállítása. Normál felhasználók számára az alapértelmezett modul környezet automatikusan betöltődik. Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load APPS&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;APPS&amp;lt;/code&amp;gt; a betöltendő modulok space-szel elválasztott listája.&lt;br /&gt;
&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
==== Példa ====&lt;br /&gt;
A Maple, netcfd és az R csomagok betöltése:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load maple netcdf R&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához használjuk a [http://www.techrepublic.com/blog/linux-and-open-source/learn-to-use-extended-file-attributes-in-linux-to-boost-security/](fájlrendszer ACL-eket). Az ACL-ekkel a hagyományos unix engedélyeken felül finoman szabályozhatjuk a fájlok és könyvtárak hozzáférési engedélyeit. A következő példában a &amp;lt;code&amp;gt;$HOME/Shared&amp;lt;/code&amp;gt; könyvtárat osztjuk egy munkatárs számára:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# a home könyvtár beállítása&lt;br /&gt;
# user1 user számára belépsi engedély: u:user1:x &lt;br /&gt;
$ setfacl -m u:user1:x $HOME&lt;br /&gt;
$ getfacl $HOME&lt;br /&gt;
# file: user2/user2&lt;br /&gt;
# owner: user2&lt;br /&gt;
# group: user2&lt;br /&gt;
user::rwx&lt;br /&gt;
user:user1:--x&lt;br /&gt;
group::r-x&lt;br /&gt;
mask::r-x&lt;br /&gt;
other::---&lt;br /&gt;
# Shared könyvtár megosztása&lt;br /&gt;
# user1 számára minden unix jog&lt;br /&gt;
$ cd&lt;br /&gt;
$ mkdir Shared&lt;br /&gt;
$ setfacl -m u:user1:rwx $HOME/Shared&lt;br /&gt;
$ getfacl Shared&lt;br /&gt;
# file: Shared&lt;br /&gt;
# owner: user2&lt;br /&gt;
# group: user2&lt;br /&gt;
user::rwx&lt;br /&gt;
user:user1:rwx&lt;br /&gt;
group::rwx&lt;br /&gt;
mask::rwx&lt;br /&gt;
other::r-x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Python csomag telepítése a saját home könyvtárunkba ==&lt;br /&gt;
Itt egy példa arra, hogy hogyan tudjuk feltelepíteni a mercurial python csomagot.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module load python &lt;br /&gt;
$ pip install --user mercurial&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login és vserver node-jai osztott home könyvtárral vannak összekötve. Fontos, hogy az osztott könyvtárat a számítási node-ok nem érik el, ezért az osztott home-ot csak tárolásra ill. megosztásra lehet használni. Az osztott terület Debrecenben van, ezért ott a leggyorsabb. A másik három helyen lassabb a hozzáférés a nagyobb távolság miatt. A programok kimenetét továbbra is a lokális scratch vagy home könyvtárba kell írni. Amelyik login node-on használni szeretnénk az osztott home könyvtárat, ott adjuk ki a következő parancsokat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd; mkdir shared; ln -s /mnt/fhgfs/home/$USER shared/$USER &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ezek után a &amp;lt;code&amp;gt;$HOME/shared/$USER&amp;lt;/code&amp;gt; könyvtárba másoljuk a megosztott fájlokat. Ez a könyvtár a következő környezeti változóba is exportálódik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$NCE_SHARED &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Biztonsági mentés, adatmegosztás ===&lt;br /&gt;
A következő példa mentést végez a &amp;lt;code&amp;gt;$HOME/data&amp;lt;/code&amp;gt; könyvtárról:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP $HOME/data $NCE_SHARED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Törölje a fájlokat a mentésben is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/data $NCE_SHARED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
Weboldal: http://slurm.schedmd.com&lt;br /&gt;
&lt;br /&gt;
A szupergépeken CPU óra (gépidő) alapú ütemezés működik. Ez azt jelenti, hogy a fogyasztási időtartamra (hónap) az elérhető maximális gépidő fel van osztva a felhasználók között. Minden UNIX felhasználó egy vagy több számlához (''Account'') tartozhat. Az ütemező számla egy adott HPC-s projekthez tartozik, hasonló a UNIX csoporthoz. Szupergépes feladatokat csak az egyes számlák terhére lehet indítani. A CPU óra az elhasznált idő (''Walltime'') és az igényelt processzorok számának szorzata. Például a budapesti gépen 2 db node (48 processzor mag) foglalása 30 percre 48 * 30 = 1440 CPU perc = 24 CPU óra. A CPU órát az ütemező a futás kezdetétől a befejezésig méri.&lt;br /&gt;
&lt;br /&gt;
'''Rendkívül fontos arról meggyőződni, hogy a futtatandó alkalmazás rendesen kihasználja-e a szupergépet. Egy üres vagy rosszul futó job hamar elhasználja a rendelkezésre álló gépidőt. Elfogyasztott gépidő esetén új jobokat már nem lehet indítani, és meg kell várni a számlázási időszak végét. A gépidő limitek (Account Limit) minden hónap elején jóváíródnak.'''&lt;br /&gt;
&lt;br /&gt;
Számláink állapotáról a következő paranccsal kapunk információt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A parancs a következő táblázatot jeleníti meg. A felhasználó két számlához (foobar,barfoo) is hozzáfér, futatthat a számla terhére. Saját magát megcsillagozva látja a listában. Bobbal mindkét számlán (Account oszlop) Alice is osztozik. A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyeik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még alérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
alice                0 |           foobar           0 |             0           0&lt;br /&gt;
bob *                0 |           foobar           0 |             0           0&lt;br /&gt;
&lt;br /&gt;
bob *                7 |           barfoo           7 |         1,000         993&lt;br /&gt;
alice                0 |           barfoo           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
Alice 2 nap 10 órára és 2 node-ra szeretne foglalást kérni, megnézi van-e elég gépidő a számláján:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N 2 -t 2-10:00:00&lt;br /&gt;
&lt;br /&gt;
Estimated CPU hours: 2784&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Sajnos ebben a hónapban erre már nem telik.&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csőkkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
Az ütemezőben 3 feladat van. Az első egy arrayjob, éppen erőforrásra vár (PENDING). A második egy MPI job, ami 4 node-on fut már 25 perce (TIME). A harmadik egy egy node-os OMP futtatás, éppen most indult el. A feladatik nevei (NAME) egyénileg adható meg. Rövid, informatív neveket érdemes adni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
squeue -l&lt;br /&gt;
&lt;br /&gt;
Wed Oct 16 08:30:07 2013              &lt;br /&gt;
     JOBID PARTITION     NAME     USER    STATE       TIME TIMELIMIT  NODES NODELIST(REASON)&lt;br /&gt;
591_[1-96]    normal    array    alice  PENDING       0:00     30:00      1 (None)&lt;br /&gt;
       589    normal      mpi      bob  RUNNING      25:55   2:00:00      4 cn[05-08]&lt;br /&gt;
       590    normal      omp    alice  RUNNING       0:25   1:00:00      1 cn09&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a 2 node-os batch jobnak a jellemző memóriaterhelés a következő volt: kb. 10GB virtuális és 6.5GB RSS memóriát használt el node-onként.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory 430&lt;br /&gt;
&lt;br /&gt;
 MaxVMSize  MaxVMSizeNode  AveVMSize     MaxRSS MaxRSSNode     AveRSS&lt;br /&gt;
---------- -------------- ---------- ---------- ---------- ----------&lt;br /&gt;
10271792K           cn06  10271792K   6544524K       cn06   6544524K   &lt;br /&gt;
10085152K           cn07  10085152K   6538492K       cn07   6534876K &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU felhasználás ellenőrzése ====&lt;br /&gt;
Nagyon fontos meggyőződni arról, hogy az alkalmazás kihasználja-e a rendelkezésre álló gépidőt. Egy futó alkalmazás a következő paranccsal tudunk monitorozni:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sjobcheck JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez a job 4 node-on fut. A LOAD csoport a gép általános terheléséről ad információt és kb. a core-ok számával egyezik meg. A helyes felhasználásról a CPU csoport ad tájékoztatást. Ideális esetben a &amp;lt;code&amp;gt;User&amp;lt;/code&amp;gt; oszlop értékei 90 fölött vannak. Ez alatt valamilyen probléma lépett fel és a futást érdemes megszakítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hostname                     LOAD                       CPU              Gexec  &lt;br /&gt;
 CPUs (Procs/Total) [     1,     5, 15min] [  User,  Nice, System, Idle, Wio]&lt;br /&gt;
cn08    24 (   25/  529) [ 24.83, 24.84, 20.98] [  99.8,   0.0,   0.2,   0.0,   0.0] OFF&lt;br /&gt;
cn07    24 (   25/  529) [ 24.93, 24.88, 20.98] [  99.8,   0.0,   0.2,   0.0,   0.0] OFF&lt;br /&gt;
cn06    24 (   25/  529) [ 25.00, 24.90, 20.97] [  99.9,   0.0,   0.1,   0.0,   0.0] OFF&lt;br /&gt;
cn05    24 (   25/  544) [ 25.11, 24.96, 20.97] [  99.8,   0.0,   0.2,   0.0,   0.0] OFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=niif Start=2014-01-01&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
niif helyett a saját projektünk azonosítóját kell megadni.&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni. Az ütemezők összehasonlításáról és a Slurm-ban elérhető direktívákról a következő [http://slurm.schedmd.com/rosetta.pdf táblázat] ad bővebb tájékoztatást.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sbatch jobscript.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépeken két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt; sor. Utóbbi az éles számolásokra való, előbbi fejlesztés és tesztelés céljára használható. A teszt sorban összesen 1 node-ot, maximum fél órára lehet lefoglalni. Az alapértelmezett sor a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt;. A teszt partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
A memória a CPU-hoz hasonlóan korlátozott, foglalható erőforrás. A felhasználás mérése a memória / core alapon történik: 1 core óra, 2600 MB órának felel meg. Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. Budapesten és Szegeden a maximális memória/core 2600 MB.&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 24 órára ad fel 96 db soros jobot. A &amp;lt;code&amp;gt;#SBATCH --array=1-96&amp;lt;/code&amp;gt; direktíva jelzi, hogy tömbfeladatról van szó. Az alkalmazást az &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; paranccsal kell indítani. Ebben az esetben ez egy shell szkript.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&lt;br /&gt;
A következő példában a test sorban 3 egy szálon dutó programot indítunk el. A programok és az inputok lehetnek különbözőek. Fontos, hogy az utolsó parancsot nem kell a háttérben (&amp;amp;) indítani és a wait-tel kell befejezni a job szkriptet.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&lt;br /&gt;
Bob felhasználó a barfoo számla terhére 2 node-ot, 12 órára foglal le egy MPI job számára. Az egyes node-okon 24 MPI szálat fog elindítani. A program stdout kimenetét a &amp;lt;code&amp;gt;slurm.out&amp;lt;/code&amp;gt; fájlba irányítja (&amp;lt;code&amp;gt;#SBATCH -o&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=24&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI UV SMP (Pécs) ====&lt;br /&gt;
A pécsi gépen legalább 6 szálon működő jobok futtatása lehetságes. Az egyetlen elfogadott paraméter a szálak szám (`-n`), amelynek 6 többszörösének kell lenni. Ezen a gépen nincs teszt sor. Kérjük, hogy 48-nál kevesebb szálon futó programokat az UV-n ne futtassanak! Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
===== OMP Példa =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH -n 48&lt;br /&gt;
#SBATCH --time=03:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
/opt/nce/bin/numainfo&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_NTASKS ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== SGI MPT MPI Példa =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH -n 48&lt;br /&gt;
#SBATCH --time=03:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
/opt/nce/bin/numainfo&lt;br /&gt;
mpirun $SLURM_NTASKS ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Jobok monitorozása =====&lt;br /&gt;
CPU használat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smonitor -n &amp;lt;JOBID&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Memória használat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smonitor -m &amp;lt;JOBID&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ütemezés sor foglaltsága:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sinfo_uv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI MPT MPI feladatok (Debrecen) ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani. Az SGI MPT MPI paraméterezése kicsit más, mint az OpenMPI. '''Debrecen az SGI MPT az alpértelmezett MPI környezet!'''&lt;br /&gt;
&lt;br /&gt;
Bob felhasználó a barfoo számla terhére 2 node-ot, 12 órára foglal le egy MPI job számára. Az egyes node-okon 24 MPI szálat fog elindítani. A program stdout kimenetét a &amp;lt;code&amp;gt;slurm.out&amp;lt;/code&amp;gt; fájlba irányítja (&amp;lt;code&amp;gt;#SBATCH -o&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=12&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
source /opt/nce/bin/machines&lt;br /&gt;
export MPI_OPT=&amp;quot;${MACHINES} -np ${SLURM_NTASKS_PER_NODE}&amp;quot;&lt;br /&gt;
mpirun ${MPI_OPT} ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI PerfBoost egyéb MPI feladatokra (Debrecen) ====&lt;br /&gt;
Az SGI MPT lehetőséget ad arra, hogy nem MPT MPI-vel fordított MPI programok is használjunk. Ebben az esetben az MPI hívások MPT hívásokkal cserélődnek ki.&lt;br /&gt;
&lt;br /&gt;
Egy OpenMPI-re fordított program indítása:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=12&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
source /opt/nce/bin/machines&lt;br /&gt;
export MPI_OPT=&amp;quot;${MACHINES} -np ${SLURM_NTASKS_PER_NODE}&amp;quot;&lt;br /&gt;
mpirun ${MPI_OPT} perfboost -ompi ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU binding ====&lt;br /&gt;
Az MPI programok teljesítménye általában javítható a processzek CPU magokhoz kötésével. Ilyenkor a párhuzamos program szálait az operációs rendszer nem ütemezi a CPU magok között, ezért javulhat a memória lokalizáció (kevesebb cache miss). A kötés használata ajánlott. Tesztekkel meg kell győződni, hogy egy adott alkalmazás esetén melyik kötési stratégia adja a legjobb eredményt. A következő beállítások az OpenMPI környezetre vontakoznak. A kötésekről részletes információt a &amp;lt;code&amp;gt;--report-bindings&amp;lt;/code&amp;gt; MPI opcióval kaphatunk. Az indítási parancsok melett a részletes binding információ néhány sora is látható. Fontos, hogy az ütemező task binding-ját nem kell használni!&lt;br /&gt;
&lt;br /&gt;
===== Kötés CPU magonként =====&lt;br /&gt;
Ebben az esetben az MPI szálak (rank) sorban töltik fel a CPU magokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Indítási parancs: mpirun --bind-to-core --bycore&lt;br /&gt;
&lt;br /&gt;
[cn05:05493] MCW rank 0 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05493] MCW rank 1 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05493] MCW rank 2 bound to socket 0[core 2]: [. . B . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05493] MCW rank 3 bound to socket 0[core 3]: [. . . B . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Kötés CPU foglalat szerint =====&lt;br /&gt;
Ebben az esetben az MPI szálak váltakozva töltik fel a CPU-kat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Indítási parancs: mpirun --bind-to-core --bysocket&lt;br /&gt;
&lt;br /&gt;
[cn05:05659] MCW rank 0 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05659] MCW rank 1 bound to socket 1[core 0]: [. . . . . . . . . . . .][B . . . . . . . . . . .]&lt;br /&gt;
[cn05:05659] MCW rank 2 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05659] MCW rank 3 bound to socket 1[core 1]: [. . . . . . . . . . . .][. B . . . . . . . . . .]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Kötés node-ok szerint =====&lt;br /&gt;
Ebben az esetben az MPI szálak váltakozva töltik fel a node-okat. Lagalább 2 node foglalása szükséges.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Indítási parancs: mpirun --bind-to-core --bynode&lt;br /&gt;
&lt;br /&gt;
[cn05:05904] MCW rank 0 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05904] MCW rank 2 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn06:05969] MCW rank 1 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn06:05969] MCW rank 3 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 24 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 24 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 24 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=24&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Maple Grid feladatok ====&lt;br /&gt;
Maple-t az OMP feladatokhoz hasonlóan 1 node-on lehet futtatni. Használatához be kell tölteni a maple modult is. A Maple kliens-szerver üzemmódban működik ezért a Maple feladat futtatása előtt szükség van a grid szerver elindítására is (&amp;lt;code&amp;gt;${MAPLE}/toolbox/Grid/bin/startserver&amp;lt;/code&amp;gt;). Ez az alkalmazás licensz köteles, amit a jobszkriptben meg kell adni (&amp;lt;code&amp;gt;#SBATCH --licenses=maplegrid:1&amp;lt;/code&amp;gt;). A Maple feladat indátását a &amp;lt;code&amp;gt;${MAPLE}/toolbox/Grid/bin/joblauncher&amp;lt;/code&amp;gt; paranccsal kell elvégezni.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, 6 órára indítja el a Maple Grid alkalmazást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=maple&lt;br /&gt;
#SBATCH -N 1&lt;br /&gt;
#SBATCH --ntasks-per-node=24&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
#SBATCH --licenses=maplegrid:1&lt;br /&gt;
&lt;br /&gt;
module load maple&lt;br /&gt;
&lt;br /&gt;
${MAPLE}/toolbox/Grid/bin/startserver&lt;br /&gt;
${MAPLE}/toolbox/Grid/bin/joblauncher ${MAPLE}/toolbox/Grid/samples/Simple.mpl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Matlab feladatok ====&lt;br /&gt;
Ez az alkalmazás licensz köteles, amit a jobszkriptben meg kell adni (&amp;lt;code&amp;gt;#SBATCH --licenses=matlabdce:1,matlabdct:1,matlab:1&amp;lt;/code&amp;gt;). Összesen 96 darab &lt;br /&gt;
Distributed Computing Server, 13 darab Distributed Computing Toolbox és 13 Matlab licensz lett megvásárolva.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=&amp;quot;Matlab test job&amp;quot;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH --licenses=matlabdce:1,matlabdct:1,matlab:1&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
&lt;br /&gt;
matlab -nodisplay &amp;lt; job.m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPU-k használata ====&lt;br /&gt;
A szegedi szuperszámítógép rendelkezik 2db GPU kártyákkal is felszerelt compute node-dal. A GPU node-okban 2x6db Nvidia Tesla M2070-es kártya található. A GPU-s node-ok külön job sorban található (&amp;lt;code&amp;gt;--partition gpu&amp;lt;/code&amp;gt;). A GPU-k számát a &amp;lt;code&amp;gt;--gres gpu:#&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, 4GPU-n, 6 órára indítja a következő jobot.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=GPU&lt;br /&gt;
#SBATCH --partition gpu&lt;br /&gt;
#SBATCH --gres gpu:4&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
&lt;br /&gt;
$PWD/gpu_burnout 3600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások beállításai ==&lt;br /&gt;
=== Saját programok telepítése ===&lt;br /&gt;
A saját fordítású programokat a HOME könyvtáradba kell telepíteni, ezt általában a fordítás előtti lefuttatott configure szkripttel lehet beállítani. Az adott program a $HOME/local alá fog települni. A PATH és egyéb környezeti változókat értelem szerűen kell beállítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME&lt;br /&gt;
mkdir local&lt;br /&gt;
(belépés az alklamazás könyvtárába)&lt;br /&gt;
./configure --prefix=$HOME/local&lt;br /&gt;
make; make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A frontend gépeken felhasználói limitek vannak beállítva. Ezekről a következő paranccsal kapunk információt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ulimit -a&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A limitek a compute node-okon és az UV-n nincsenek beállítva.&lt;br /&gt;
&lt;br /&gt;
=== Java JVM heap méret ===&lt;br /&gt;
A memória limit miatt a Java virtuális gépen és fordító nem jól működik, ezért meg kell adni a maximális heap méretét:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
java -Xmx512m -version&lt;br /&gt;
javac -J-Xmx512m -version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
vagy exportálni kell a következő változót:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export _JAVA_OPTIONS=&amp;quot;-Xms1g -Xmx1g&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python Numpy és Scipy használat ===&lt;br /&gt;
A numerikus Python használatához a következő csomagokat kell betölteni:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load python numpy scipy&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A numpy és a scipy csomagok az Intel MKL OpenMP gyorsítását használják. A jobokat az &amp;lt;code&amp;gt;openmp&amp;lt;/code&amp;gt; párhuzamos környezetbe kell elküldeni.&lt;br /&gt;
&lt;br /&gt;
== HP Budapest ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fordítás ===&lt;br /&gt;
Elérhető fordítók listája&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Forító&lt;br /&gt;
! Soros&lt;br /&gt;
! Párhuzamos&lt;br /&gt;
|-&lt;br /&gt;
| Intel Fortran&lt;br /&gt;
| ifort&lt;br /&gt;
| mpiif90&lt;br /&gt;
|-&lt;br /&gt;
| Intel C&lt;br /&gt;
| icc&lt;br /&gt;
| mpiicc&lt;br /&gt;
|-&lt;br /&gt;
| GNU Fortran&lt;br /&gt;
| gfotran&lt;br /&gt;
| mpif90&lt;br /&gt;
|-&lt;br /&gt;
| GNU C&lt;br /&gt;
| gcc&lt;br /&gt;
| mpicc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A fordítási paramétereket az NCE környezeti változókból érdemes kiolvasni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NCE_OFLAGS - optimalizációs kapcsolók C és Fortran&lt;br /&gt;
NCE_FFLAGS - Fortran kapcsolók&lt;br /&gt;
NCE_CFLAGS - C kapcsolók&lt;br /&gt;
NCE_LDFLAGS - könyvtárak C és Fortran&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az NCE környezeti változó listáját az &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; paranccsal kérhetjük le.&lt;br /&gt;
&lt;br /&gt;
A budapesti gépen elérhető a PRACE környezet is, amely tartalmaz egy ajánlott kapcsoló és könyvtár összeállítást tartalmaz. A PRACE környezet betöltése:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load prace&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A PRACE környezet az AMD ACML matematikai könyvtárakat használja, amennyiben az Intel MKL-re van szükségünk, akkor a PRACE környezetet nem kell betölteni. A megfelelő MKL kapcsolókat az [http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor Intel Link Advisor] szerint kell beállítani, pl.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FFLAGS=-openmp -I$(MKLROOT)/include&lt;br /&gt;
CFLAGS=-openmp -I$(MKLROOT)/include&lt;br /&gt;
LDFLAGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \&lt;br /&gt;
  -Wl,--start-group \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_intel_thread.a \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_core.a \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_blacs_openmpi_lp64.a \&lt;br /&gt;
  -Wl,--end-group -lpthread -lm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Párhuzamos környezet ===&lt;br /&gt;
==== OpenMP ====&lt;br /&gt;
Az OpenMP paraméterket környezeti változókon keresztül kell beállítani. Az &amp;lt;code&amp;gt;openmp&amp;lt;/code&amp;gt; párhuzamos SLURM környezet az OpenMP szálak számát beállítja. Tovább környezeti változókat az [https://computing.llnl.gov/tutorials/openMP/#EnvironmentVariables LLNL OpenMP oldalán] találtok.&lt;br /&gt;
&lt;br /&gt;
==== MPI ====&lt;br /&gt;
Az alapértelmezett MPI könyvtár az Open MPI. Ajánlott optimalizációs kapcsolók (CPU binding):&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
--bind-to-core --bycore&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SGI ICE Debrecen ==&lt;br /&gt;
Az alapértelmezett MPI könyvtár az SGI MPT. A felhasználói programokat ehhez a könyvtárhoz érdemes fordítani. Ajánlott fordítás opciók:&lt;br /&gt;
&lt;br /&gt;
=== MPI fordítási opciók ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    CFLAGS=-O2 -xSSE4.2&lt;br /&gt;
    FFLAGS=-O2 -xSSE4.2&lt;br /&gt;
    LDFLAGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \&lt;br /&gt;
      -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_sequential.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_core.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_blacs_sgimpt_lp64.a -Wl,--end-group \&lt;br /&gt;
      -lpthread -lm&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MPI és OpenMP fordítási opciók ===&lt;br /&gt;
Ebben az esetben az MKL műveletek OpenMP szálasíthatók, a program hibrid MPI és OMP módban is tud üzemelni.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    CFLAGS=-O2 -xSSE4.2 -openmp&lt;br /&gt;
    FFLAGS=-O2 -xSSE4.2 -openmp&lt;br /&gt;
    LDFALGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \&lt;br /&gt;
      -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_intel_thread.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_core.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_blacs_sgimpt_lp64.a -Wl,--end-group \&lt;br /&gt;
      -liomp5 -lpthread -lm -openmp&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ARC köztesréteg ==&lt;br /&gt;
Ez a NorduGrid közösség által fejlesztett Grid köztesréteg. Részletes dokumentációkért [http://www.nordugrid.org/documents ezt a weboldalt] érdemes felkeresni.&lt;br /&gt;
&lt;br /&gt;
=== Miért is használjuk?! ===&lt;br /&gt;
* Jobb terhelés elosztást tesz lehetővé a szuperszámítógépek között&lt;br /&gt;
* A jobok azon a gépen fognak elindulni, ami a legmegfelelőbb a számára&lt;br /&gt;
* Egy nagy egységgé kapcsolja össze a szuperszámítógépeket&lt;br /&gt;
* Szabványos webservice interfésszel ([https://www.ogf.org/documents/GFD.108.pdf OGSA-BES], [https://www.ogf.org/documents/GFD.114.pdf HPC Basic Profile]) rendelkezik. Ezáltal könnyen lehet integrálni más rendszerekkel&lt;br /&gt;
* Nagyon sok operációs rendszert támogat&lt;br /&gt;
* A saját számítógépünkről tudjuk kezelni a szuperszámítógépes jobokat&lt;br /&gt;
* A [http://pulse.fgi.csc.fi/gridrer/htdocs/index.phtml futás idejű környezetek használatával] a megfelelő módon lefordított alkalmazást tudjuk használni és nem kell észben tartani, hogy éppen melyik szuperszámítógépen van telepítve a program&lt;br /&gt;
&lt;br /&gt;
=== Grid tanúsítvány igénylése ===&lt;br /&gt;
Első lépésként szükségünk lesz egy '''Grides X.509 tanúsítványra''', amivel az ARC klienseket használni tudjuk. A [https://portal.hpc.niif.hu HPC portálon] keresztül lehetőségünk van igényelni egy 2 hétig érvényes SLCS tanúsítványt. A személyes adatok menüpontra kell kattintani és az oldal végén lesz az igénylő felület. '''Fontos: legalább egy HPC projekt tagsággal rendelkeznünk kell a HPC portálon. ''' Itt található az a letölthető UNIX script is, ami minden szükséges beállítást elvégez a számunkra: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           &lt;br /&gt;
 $ chmod +x slcs_unix_install.sh &lt;br /&gt;
 $ ./slcs_unix_install.sh &lt;br /&gt;
 $HOME/.globus/usercert.pem and $HOME/.globus/userkey.pem installed&lt;br /&gt;
 NIIF HPC SLCS Root CA installed: $HOME/.globus/certificates/SLCSCA.pem&lt;br /&gt;
 Default ARC client configuration created: $HOME/.arc/client.conf&lt;br /&gt;
 NIIF Root CA 2 installed: $HOME/.globus/certificates/NIIFCA.pem&lt;br /&gt;
 $ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Az SLCS másik nagy előnye az egyszerűsített igénylésen kívül az, hogy 1 órán belül az összes szuperszámítógépen automatikusan engedélyezve lesz. Viszont ha nem szeretnénk minden második héten új X.509-es tanúsítványt igényelni, akkor lehetőség van arra is, hogy 1 évig érvényes [https://www.igtf.net IGTF] tanúsítványt igényeljünk az NIIF Intézettől [http://www.ca.niif.hu/hu/igenyles ezen az oldal keresztül]. Ebben az esetben a [mailto:hpc-support@niif.hu] címre kell elküldenünk az IGTF-es tanúsítványunk publikus részét és meg kell adnunk, hogy melyik témaszámunkhoz legyen majd rendelve a szuperszámítógépeken.&lt;br /&gt;
&lt;br /&gt;
=== ARC kliensek használatba vétele ===&lt;br /&gt;
==== Telepítés ====&lt;br /&gt;
A csomagok telepítéséhez az itt leírt repo-kat lehet használni: http://download.nordugrid.org/repos-15.03.html&lt;br /&gt;
'''Fontos''': 5.0-ás ARC verziót telepítsük.&lt;br /&gt;
&lt;br /&gt;
Debian alapú rendszerek esetén:  &lt;br /&gt;
  apt-get install nordugrid-arc-client  &lt;br /&gt;
&lt;br /&gt;
Redhat alapú rendszerek esetén:  &lt;br /&gt;
  yum install nordugrid-arc-client&lt;br /&gt;
&lt;br /&gt;
OSX csomag telepítése [http://brew.sh brew] segítségével:&lt;br /&gt;
  brew install nordugrid-arc&lt;br /&gt;
&lt;br /&gt;
Ha nem találtunk megfelelő csomagot, akkor [http://download.nordugrid.org/packages/nordugrid-arc/releases/5.0.0/src/nordugrid-arc-5.0.0.tar.gz innen] le tudjuk tölteni a forráskódját és le tudjuk fordítani.&lt;br /&gt;
&lt;br /&gt;
==== Konfigurálás ====&lt;br /&gt;
$HOME/.arc/client.conf:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [common]&lt;br /&gt;
            &lt;br /&gt;
 [computing/budapest] &lt;br /&gt;
 url=https://login.budapest.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
 &lt;br /&gt;
 [computing/szeged]&lt;br /&gt;
 url=https://login.szeged.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
 &lt;br /&gt;
 [computing/debrecen]&lt;br /&gt;
 url=https://login.debrecen.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
 &lt;br /&gt;
 [computing/pecs]&lt;br /&gt;
 url=https://login.pecs.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
  &lt;br /&gt;
 # FastestQueue – ranks targets according to their queue length&lt;br /&gt;
 brokername=FastestQueue&lt;br /&gt;
 &lt;br /&gt;
 # Random – ranks targets randomly&lt;br /&gt;
 #brokername=Random&lt;br /&gt;
 &lt;br /&gt;
 # Data – ranks targets according the amount of megabytes of the requested input files that are already&lt;br /&gt;
 # in the computing resources cache. &lt;br /&gt;
 #brokername=Data&lt;br /&gt;
 &lt;br /&gt;
 # PythonBroker:&amp;lt;module&amp;gt;.&amp;lt;class&amp;gt;[:arguments] – ranks targets using any user-supplied custom&lt;br /&gt;
 # Python broker module, optionally with broker arguments. Such module can reside anywhere in&lt;br /&gt;
 # user’s PYTHONPATH&lt;br /&gt;
 #brokername=PythonBroker&lt;br /&gt;
 &lt;br /&gt;
 [alias]&lt;br /&gt;
 pecs=computing:ARC1:https://login.pecs.hpc.niif.hu:60000/arex&lt;br /&gt;
 szeged=computing:ARC1:https://login.szeged.hpc.niif.hu:60000/arex&lt;br /&gt;
 debrecen=computing:ARC1:https://login.debrecen.hpc.niif.hu:60000/arex&lt;br /&gt;
 budapest=computing:ARC1:https://login.budapest.hpc.niif.hu:60000/arex&lt;br /&gt;
 hp=budapest szeged&lt;br /&gt;
 sgi=pecs debrecen   &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Érdemes beállítani, hogy alapértelmezés szerint a FastestQueue brókert használja, ezáltal mindig arra a szuperszámítógépre fogja küldeni a jobokat, ahol a legkevesebb a várakozó jobok száma. A konfigurációs fájl részletes dokumentációját és az ARC kliensek leírásait [http://www.nordugrid.org/documents/arc-ui.pdf itt lehet] megnézni.&lt;br /&gt;
&lt;br /&gt;
=== Grid proxy készítése ===&lt;br /&gt;
&lt;br /&gt;
Ha már telepítettük a tanúsítványunkat és az ARC klienseket akkor a következő lépés az, hogy egy proxy tanúsítványt kell készítenünk, ami alapértelmezés szerint 12 óráig érvényes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ arcproxy &lt;br /&gt;
 Enter pass phrase for private key:&lt;br /&gt;
 Your identity: /C=HU/O=NIIF/OU=SLCS/L=hpcteszt/CN=joe&lt;br /&gt;
 Proxy generation succeeded&lt;br /&gt;
 Your proxy is valid until: 2015-03-30 05:01:09&lt;br /&gt;
 $    &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
Tesztelési célból ezeket a parancsokat érdemes kipróbálni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ arcinfo -c szeged  &lt;br /&gt;
 $ arcinfo -c hp -l&lt;br /&gt;
 $ arcinfo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid job készítése ===&lt;br /&gt;
A jobok leírására több formátumot is használhatunk: [https://www.ogf.org/documents/GFD.56.pdf JSDL], vagy [http://www.nordugrid.org/documents/xrsl.pdf xRSL]. Így adjuk meg, hogy a jobunknak mire van szüksége. Itt egy példa job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
 $ cat job.xrsl &lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 (executable=&amp;quot;matlab.sh&amp;quot;)&lt;br /&gt;
 (arguments=&amp;quot;matlab.m&amp;quot;)&lt;br /&gt;
 (stdout=&amp;quot;stdout.txt&amp;quot;)&lt;br /&gt;
 (stderr=&amp;quot;stderr.txt&amp;quot;)&lt;br /&gt;
 (jobname=&amp;quot;Matlab test&amp;quot;)&lt;br /&gt;
 (inputFiles=&lt;br /&gt;
 (&amp;quot;matlab.m&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
 )&lt;br /&gt;
 (memory&amp;gt;=&amp;quot;1000&amp;quot;)&lt;br /&gt;
 (gmlog=&amp;quot;gm.log&amp;quot;)&lt;br /&gt;
 (wallTime=&amp;quot;240&amp;quot;)&lt;br /&gt;
 (runTimeEnvironment=&amp;quot;APPS/MATH/MATLAB-7.13&amp;quot;)  &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cat matlab.sh &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo&lt;br /&gt;
 echo &amp;quot;Compute node: &amp;quot; `/bin/hostname -f`&lt;br /&gt;
 echo&lt;br /&gt;
 matlab -nodisplay &amp;lt; $1&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cat matlab.m&lt;br /&gt;
 2+3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennél a példánál a '''APPS/MATH/MATLAB-7.13''' futásidejű környezetet kértük, ezáltal ez a job csak azon a szuperszámítógépen fog elindulni, ahol ez telepítve van. Továbbá azt kértük még, hogy 240 percig futhasson és legalább 1000 MByte memória rendelkezésre álljon.&lt;br /&gt;
&lt;br /&gt;
Az '''arcinfo -l''' paranccsal tudjuk megnézni, hogy a szuperszámítógépeken milyen futás idejű környezetek (runtime environment-ek) vannak telepítve. Ha szeretnénk egy új környezet beállíttatni, akkor [mailto:hpc-support@niif.hu ide] kell levelet küldeni.&lt;br /&gt;
&lt;br /&gt;
==== OpenMP példa ====&lt;br /&gt;
&lt;br /&gt;
Job elkészítése:&lt;br /&gt;
&amp;lt;code&amp;gt;        &lt;br /&gt;
 $ cat job-openmp.xrsl &lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 (executable=&amp;quot;omp_mm&amp;quot;)&lt;br /&gt;
 (stdout=&amp;quot;stdout.txt&amp;quot;)&lt;br /&gt;
 (stderr=&amp;quot;stderr.txt&amp;quot;)&lt;br /&gt;
 (jobname=&amp;quot;OpenMP test&amp;quot;)&lt;br /&gt;
 (queue=&amp;quot;test&amp;quot;)&lt;br /&gt;
 (executables=&amp;quot;omp_mm&amp;quot;)&lt;br /&gt;
 (count=&amp;quot;10&amp;quot;)&lt;br /&gt;
 (countpernode=&amp;quot;10&amp;quot;)&lt;br /&gt;
 (environment=(&amp;quot;OMP_NUM_THREADS&amp;quot; &amp;quot;10&amp;quot;))&lt;br /&gt;
 (queue=&amp;quot;test&amp;quot;)&lt;br /&gt;
 (inputFiles=&lt;br /&gt;
    (&amp;quot;omp_mm&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
 )&lt;br /&gt;
 (memory&amp;gt;=&amp;quot;2600&amp;quot;)&lt;br /&gt;
 (gmlog=&amp;quot;gm.log&amp;quot;)&lt;br /&gt;
 (wallTime=&amp;quot;20&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Job elküldése:&lt;br /&gt;
&lt;br /&gt;
 $ arcsub job-openmp.xrsl&lt;br /&gt;
 Job submitted with jobid: https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
&lt;br /&gt;
Job állapotának a lekérdezése:&lt;br /&gt;
&lt;br /&gt;
 $ arcstat https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 Job: https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
  Name: OpenMP test&lt;br /&gt;
  State: Finished&lt;br /&gt;
  Exit Code: 0&lt;br /&gt;
 &lt;br /&gt;
 Status of 1 jobs was queried, 1 jobs returned information&lt;br /&gt;
&lt;br /&gt;
Job letöltése:&lt;br /&gt;
&lt;br /&gt;
 $ arcget https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 Results stored at: cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 Jobs processed: 1, successfully retrieved: 1, successfully cleaned: 1&lt;br /&gt;
 zion:~ joe $ cd cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $ ls -l&lt;br /&gt;
 total 16&lt;br /&gt;
 drwx------  12 joe  staff   408 Mar 29 21:24 gm.log&lt;br /&gt;
 -rw-------   1 joe  staff     0 Mar 29 21:24 stderr.txt&lt;br /&gt;
 -rw-------   1 joe  staff  6362 Mar 29 21:24 stdout.txt&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $&lt;br /&gt;
&lt;br /&gt;
Adatok ellenőrzése:&lt;br /&gt;
&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $ head stdout.txt &lt;br /&gt;
 Starting matrix multiple example with 10 threads&lt;br /&gt;
 Initializing matrices...&lt;br /&gt;
 Thread 0 starting matrix multiply...&lt;br /&gt;
 Thread=0 did row=0&lt;br /&gt;
 Thread 9 starting matrix multiply...&lt;br /&gt;
 Thread 6 starting matrix multiply...&lt;br /&gt;
 Thread=0 did row=1&lt;br /&gt;
 Thread 5 starting matrix multiply...&lt;br /&gt;
 Thread=5 did row=50&lt;br /&gt;
 Thread=5 did row=51&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe$           &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== MPI példa ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cat job-mpi.xrsl &lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 (executable=&amp;quot;mpi.sh&amp;quot;)&lt;br /&gt;
 (stdout=&amp;quot;stdout.txt&amp;quot;)&lt;br /&gt;
 (stderr=&amp;quot;stderr.txt&amp;quot;)&lt;br /&gt;
 (jobname=&amp;quot;MPI test&amp;quot;)&lt;br /&gt;
 (executables=&amp;quot;connectivity&amp;quot; &amp;quot;mpi.sh&amp;quot;)&lt;br /&gt;
 (count=&amp;quot;10&amp;quot;)&lt;br /&gt;
 (inputFiles=&lt;br /&gt;
     (&amp;quot;connectivity&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
     (&amp;quot;mpi.sh&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
 )&lt;br /&gt;
 (memory&amp;gt;=&amp;quot;2600&amp;quot;)&lt;br /&gt;
 (gmlog=&amp;quot;gm.log&amp;quot;)&lt;br /&gt;
 (wallTime=&amp;quot;20&amp;quot;)&lt;br /&gt;
 (runTimeEnvironment&amp;gt;=ENV/GCC/MPI/OPENMPI-1.4.3)  &lt;br /&gt;
&lt;br /&gt;
 $ cat mpi.sh &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mpirun -np 10 ./connectivity -v   &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Grafikus felületű ARC kliens ====&lt;br /&gt;
Parancssoros klienseken kívül használni lehet még grafikus klienseket is. [http://sourceforge.net/projects/arc-gui-clients/?source=directory Innen tudják] letölteni őket.&lt;br /&gt;
&lt;br /&gt;
[[Category: HPC]]&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=NIIF_HPC_(English)&amp;diff=3441</id>
		<title>NIIF HPC (English)</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=NIIF_HPC_(English)&amp;diff=3441"/>
				<updated>2015-11-02T14:25:41Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Supercomputing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[HPC|Magyar változat]]&lt;br /&gt;
== Supercomputing ==&lt;br /&gt;
NIIF Institute has been operating supercomputer since 2001. The service provides scientific computation and data storage facilities. The components of the supercomputing infrastructure found in five locations:&lt;br /&gt;
 &lt;br /&gt;
* NIIF centre Budapest&lt;br /&gt;
* University of Debrecen&lt;br /&gt;
* University of Pécs&lt;br /&gt;
* University of Szeged&lt;br /&gt;
* University of Miskolc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Orszagos-attekinto_hpc.png|center|700px|Az NIIF szuperszámítógépei térképen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Various supercomputer architectures are available in different locations, because we need to support different types of scientific computing tasks. In order to support all kinds of scientific computational needs different computer architectures are available. We have cluster based supercomputers in three locations and two ccNUMA machine. The supercomputers are operated by NIIF Institute staff. The latest development tools and scientific applications are available for the users. The documentation of the supercomputers can be found here.&lt;br /&gt;
 &lt;br /&gt;
Any person or research group who has a contractual relationship with the NIIF Institute can use the service. Usage of the supercomputers is free for authorised users. New users should request a HPC project here. After the project is accepted invitations can be sent out for group members by the principal investigator. Invitations for the HPC portal can be managed [https://portal.hpc.niif.hu/ here].&lt;br /&gt;
&lt;br /&gt;
==== NIIF HPC resources ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Location&lt;br /&gt;
| Budapest&lt;br /&gt;
| [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
| Szeged&lt;br /&gt;
| Debrecen&lt;br /&gt;
| [[Debrecen2_GPU_klaszter|Debrecen2-GPU (LEO)]] (setup in progress)&lt;br /&gt;
| Debrecen2-Phi (setup in progress)&lt;br /&gt;
| Pécs&lt;br /&gt;
| Miskolc (setup in progress)&lt;br /&gt;
|- &lt;br /&gt;
| Type&lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| HP SL250s &lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| SGI ICE8400EX&lt;br /&gt;
| HP SL250s&lt;br /&gt;
&lt;br /&gt;
| HP Apollo 8000&lt;br /&gt;
| SGI UV 1000&lt;br /&gt;
&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| CPU / node &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 4 &lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
&lt;br /&gt;
| 2 &lt;br /&gt;
| 192&lt;br /&gt;
&lt;br /&gt;
| 44 &lt;br /&gt;
|- &lt;br /&gt;
| Core / CPU &lt;br /&gt;
| 12&lt;br /&gt;
| 10&lt;br /&gt;
| 12&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
|- &lt;br /&gt;
| Memory / node &lt;br /&gt;
| 66 GB&lt;br /&gt;
| 63 GB &lt;br /&gt;
| 132 GB&lt;br /&gt;
| 47 GB&lt;br /&gt;
| 125 GB&lt;br /&gt;
| 128 GB&lt;br /&gt;
| 6 TB&lt;br /&gt;
| 1.4 TB&lt;br /&gt;
|- &lt;br /&gt;
| Memory / core &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 3 GB &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 7.5 GB&lt;br /&gt;
| 8 GB&lt;br /&gt;
| 5 GB&lt;br /&gt;
| 4 GB&lt;br /&gt;
|- &lt;br /&gt;
| CPU &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz&lt;br /&gt;
| Intel Xeon E5-2680 v2 @ 2.80GHz    &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz &lt;br /&gt;
| Intel Xeon X5680 @ 3.33 GHz&lt;br /&gt;
| Intel Xeon E5-2650 v2 @ 2.60GHz &lt;br /&gt;
&lt;br /&gt;
| Intel Xeon E5-2670&lt;br /&gt;
| Intel Xeon X7542 @ 2.66 GHz&lt;br /&gt;
| Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| GPU &lt;br /&gt;
| -&lt;br /&gt;
| -   &lt;br /&gt;
| 2 * 6 Nvidia M2070&lt;br /&gt;
| -&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Intel Xeon Phi &lt;br /&gt;
| -&lt;br /&gt;
| 14 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -  &lt;br /&gt;
| -&lt;br /&gt;
&lt;br /&gt;
| 45 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| Linpack Performance (Rmax)&lt;br /&gt;
| 5 Tflops&lt;br /&gt;
| 27 Tflops&lt;br /&gt;
| 20 Tflops&lt;br /&gt;
| 18 Tlops&lt;br /&gt;
| ~280 Tflops&lt;br /&gt;
| ~106 Tflops&lt;br /&gt;
| 10 Tflops&lt;br /&gt;
| 8 Tflops&lt;br /&gt;
|- &lt;br /&gt;
| Compute nodes&lt;br /&gt;
| 32&lt;br /&gt;
| 14&lt;br /&gt;
| 50&lt;br /&gt;
| 128&lt;br /&gt;
| 84&lt;br /&gt;
| 45&lt;br /&gt;
| 1&lt;br /&gt;
&lt;br /&gt;
| 1&lt;br /&gt;
|-  &lt;br /&gt;
| Dedicated storage &lt;br /&gt;
| 50 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 250 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 585 TB (combined with Phi)&lt;br /&gt;
| 585 TB (combined with GPU)&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 240 TB&lt;br /&gt;
|- &lt;br /&gt;
| Scheduler &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]  &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
|- &lt;br /&gt;
| MPI &lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| IntelMPI (impi) &lt;br /&gt;
| OpenMPI (ompi) &lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Contact ====&lt;br /&gt;
 &lt;br /&gt;
If you have any questions send email to the following address: hpc-support@niif.hu&lt;br /&gt;
 &lt;br /&gt;
Or contact the HPC users in Hungary on the following mailing list: hpc-forum@listserv.niif.hu, you can subscribe [https://listserv.niif.hu/mailman/listinfo/hpc-forum here].&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
* [http://www.niif.hu/node/679 General information]&lt;br /&gt;
&lt;br /&gt;
* [[PRACE_User_Support|User Support (PRACE, and general)]]&lt;br /&gt;
* [http://www.training.prace-ri.eu PRACE training portal]&lt;br /&gt;
&lt;br /&gt;
[[Kategória: HPC]]&lt;br /&gt;
[[Kategória: Összefoglaló lapok]]&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=HPC&amp;diff=3440</id>
		<title>HPC</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=HPC&amp;diff=3440"/>
				<updated>2015-11-02T14:25:23Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* A szuperszámítógépekről */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[HPC_en|NIIF HPC in ENGLISH]]&lt;br /&gt;
&lt;br /&gt;
== A szuperszámítógépekről ==&lt;br /&gt;
Az NIIF Intézet szuperszámítógép szolgáltatása tudományos számítási feladatok futtatására, valamint tudományos célú adattárolásra szolgál. A jelenleg integrált szuperszámítógép-rendszer komponensei négy helyszínen találhatók:&lt;br /&gt;
&lt;br /&gt;
* Debreceni Egyetem&lt;br /&gt;
* NIIFI központ&lt;br /&gt;
* Pécsi Tudományegyetem&lt;br /&gt;
* Szegedi Tudományegyetem&lt;br /&gt;
* Miskolci Egyetem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Orszagos-attekinto_hpc.png|center|700px|alt=Az NIIF szuperszámítógépei térképen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A tudományos számítási feladatok különböző típusainak minél szélesebb körű lefedettsége érdekében az egyes helyszíneken különböző felépítésű gépek találhatók: két helyszínen ccNUMA, három helyszínen pedig &amp;quot;fat-node&amp;quot; fürtözött megoldás. Az alrendszereket az NIIFI nagy sávszélességű, alacsony késleltetésű HBONE+ adathálózatán keresztül, ARC grid köztesréteg, valamint harmonizált felhasználói azonosítás segítségével integráljuk egységes elvek mentén elérhető számítási egységgé. Az erőforrás jelenleg Magyarország legnagyobb tudományos számítás céljára felhasználható erőforrása, amely összesen 50 billió lebegőpontos művelet elvégzését teszi lehetővé másodpercenként.&lt;br /&gt;
A szuperszámítógép-rendszert az NIIFI üzemelteti és fejleszti. A rendszerhez regisztrációt követően, minden olyan személy vagy kutatócsoport hozzáférhet, amely tagintézményi szerződéses kapcsolatban áll az NIIF Intézettel.&lt;br /&gt;
A gépen megtalálhatók és futtathatók a legkorszerűbb fejlesztőeszközök és tudományos számításra szolgáló alkalmazások, valamint, az NIIF adatközpontban elhelyezett alrendszer kivételével, valamennyi alrendszer kiegészül a számítási feladatok eredményeit megjelenítő vizualizációs eszközökkel.&lt;br /&gt;
&lt;br /&gt;
==== Magyar Szuperszámítógépek összehasonlítása ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Helyszín&lt;br /&gt;
| Budapest&lt;br /&gt;
| [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
| Szeged&lt;br /&gt;
| Debrecen&lt;br /&gt;
| [[Debrecen2_GPU_klaszter|Debrecen2-GPU]] (beüzemelése folyamatban van)&lt;br /&gt;
| Debrecen2-Phi (beüzemelése folyamatban van)&lt;br /&gt;
| Pécs&lt;br /&gt;
&lt;br /&gt;
| Miskolc (beüzemelése folyamatban van)&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| HP SL250s &lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| SGI ICE8400EX&lt;br /&gt;
| HP SL250s&lt;br /&gt;
&lt;br /&gt;
| HP Apollo 8000&lt;br /&gt;
| SGI UV 1000&lt;br /&gt;
&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| CPU-k / node &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 4 &lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
&lt;br /&gt;
| 2 &lt;br /&gt;
| 192&lt;br /&gt;
&lt;br /&gt;
| 44 &lt;br /&gt;
|- &lt;br /&gt;
| Core-ok / CPU &lt;br /&gt;
| 12&lt;br /&gt;
| 10&lt;br /&gt;
| 12&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
|- &lt;br /&gt;
| Memória / node &lt;br /&gt;
| 66 GB&lt;br /&gt;
| 63 GB &lt;br /&gt;
| 132 GB&lt;br /&gt;
| 47 GB&lt;br /&gt;
| 125 GB&lt;br /&gt;
| 128 GB&lt;br /&gt;
| 6 TB&lt;br /&gt;
| 1.4 TB&lt;br /&gt;
|- &lt;br /&gt;
| Memória / core &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 3 GB &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 7.5 GB&lt;br /&gt;
| 8 GB&lt;br /&gt;
| 5 GB&lt;br /&gt;
| 4 GB&lt;br /&gt;
|- &lt;br /&gt;
| CPU &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz&lt;br /&gt;
| Intel Xeon E5-2680 v2 @ 2.80GHz    &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz &lt;br /&gt;
| Intel Xeon X5680 @ 3.33 GHz&lt;br /&gt;
| Intel Xeon E5-2650 v2 @ 2.60GHz &lt;br /&gt;
&lt;br /&gt;
| Intel Xeon E5-2670&lt;br /&gt;
| Intel Xeon X7542 @ 2.66 GHz&lt;br /&gt;
| Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| GPU &lt;br /&gt;
| -&lt;br /&gt;
| -   &lt;br /&gt;
| 2 * 6 Nvidia M2070&lt;br /&gt;
| -&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Intel Xeon Phi &lt;br /&gt;
| -&lt;br /&gt;
| 14 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -  &lt;br /&gt;
| -&lt;br /&gt;
&lt;br /&gt;
| 45 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| Linpack teljesítmény (Rmax)&lt;br /&gt;
| 5 Tflops&lt;br /&gt;
| 27 Tflops&lt;br /&gt;
| 20 Tflops&lt;br /&gt;
| 18 Tlops&lt;br /&gt;
| ~280 Tflops&lt;br /&gt;
| ~106 Tflops&lt;br /&gt;
| 10 Tflops&lt;br /&gt;
| 8 Tflops&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok száma &lt;br /&gt;
| 32&lt;br /&gt;
| 14&lt;br /&gt;
| 50&lt;br /&gt;
| 128&lt;br /&gt;
| 84&lt;br /&gt;
| 45&lt;br /&gt;
| 1&lt;br /&gt;
&lt;br /&gt;
| 1&lt;br /&gt;
|-  &lt;br /&gt;
| Dedikált storage &lt;br /&gt;
| 50 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 250 TB&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 585 TB (Phi-vel közös)&lt;br /&gt;
| 585 TB (GPU-val közös)&lt;br /&gt;
| 500 TB&lt;br /&gt;
| 240 TB&lt;br /&gt;
|- &lt;br /&gt;
| Scheduler &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]  &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
|- &lt;br /&gt;
| MPI &lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| IntelMPI (impi) &lt;br /&gt;
| OpenMPI (ompi) &lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== További információ ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Debrecen2_GPU_klaszter|Debrecen2]]&lt;br /&gt;
* [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
* [[HPC-Portal|HPC portál: projekt és témaszámok kezelése, leállások, statisztikák]]&lt;br /&gt;
* [[NIIF_szuperszámítógépek_használata|A szuperszámítógépek használata]]&lt;br /&gt;
* [[HPC-GYIK|GY.I.K]]&lt;br /&gt;
* [http://www.niif.hu/hu/niif_intezet/az_niifi_szuperszamitogepek_hasznalata NIIF HPC oldal]&lt;br /&gt;
* [http://conference.niif.hu/event/3/session/23/contribution/25 HPC tutorial (Networkshop 2015)]&lt;br /&gt;
* [http://www.training.prace-ri.eu PRACE training portal]&lt;br /&gt;
* [[PRACE_User_Support|PRACE User Support]]&lt;br /&gt;
[[Kategória: HPC]]&lt;br /&gt;
[[Kategória: Összefoglaló lapok]]&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3439</id>
		<title>Miskolc UV 2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3439"/>
				<updated>2015-11-02T14:17:04Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* A szolgáltatás minősége (QOS) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| ccNUMA&lt;br /&gt;
| Miskolc&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 44 × Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 1 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 4000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.miskolc.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.miskolc.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.miskolc.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.miskolc.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.miskolc.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
      MISKOLC[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -c CORES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;CORES&amp;lt;/code&amp;gt; a lefoglalni kívánt core-ok száma, amelynek 8 többszörösének kell lenni. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a core-ok számát. A &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje. &lt;br /&gt;
 &lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
&lt;br /&gt;
A miskolci  gépen legalább 8 szálon működő jobok futtatása lehetságes. Az egyetlen elfogadott paraméter a szálak száma (`-n`), amelynek 8 többszörösének kell lennie. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a szálak számát. Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás. A gépen lévő QOS limitek részletes paramétereit így tudjuk kilistázni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacctmgr show qos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tesztelés ====&lt;br /&gt;
Teszt job bekuldesehez a --qos=test opciot kell hasznalni a job scriptben. Ebben az esetben maximum 30 percig futhat a job es osszesen 24 szal kerheto.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IntelMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 10 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 10 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3438</id>
		<title>Miskolc UV 2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3438"/>
				<updated>2015-11-02T14:16:28Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* A szolgáltatás minősége (QOS) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| ccNUMA&lt;br /&gt;
| Miskolc&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 44 × Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 1 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 4000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.miskolc.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.miskolc.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.miskolc.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.miskolc.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.miskolc.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
      MISKOLC[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -c CORES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;CORES&amp;lt;/code&amp;gt; a lefoglalni kívánt core-ok száma, amelynek 8 többszörösének kell lenni. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a core-ok számát. A &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje. &lt;br /&gt;
 &lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
&lt;br /&gt;
A miskolci  gépen legalább 8 szálon működő jobok futtatása lehetságes. Az egyetlen elfogadott paraméter a szálak száma (`-n`), amelynek 8 többszörösének kell lennie. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a szálak számát. Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás. Aktuális QOS limitek és paramétereiket így tudjuk kilistázni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacctmgr show qos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tesztelés ====&lt;br /&gt;
Teszt job bekuldesehez a --qos=test opciot kell hasznalni a job scriptben. Ebben az esetben maximum 30 percig futhat a job es osszesen 24 szal kerheto.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IntelMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 10 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 10 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3437</id>
		<title>Miskolc UV 2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3437"/>
				<updated>2015-11-02T14:14:55Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Job-ok indítása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| ccNUMA&lt;br /&gt;
| Miskolc&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 44 × Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 1 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 4000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.miskolc.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.miskolc.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.miskolc.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.miskolc.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.miskolc.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
      MISKOLC[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -c CORES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;CORES&amp;lt;/code&amp;gt; a lefoglalni kívánt core-ok száma, amelynek 8 többszörösének kell lenni. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a core-ok számát. A &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje. &lt;br /&gt;
 &lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
&lt;br /&gt;
A miskolci  gépen legalább 8 szálon működő jobok futtatása lehetságes. Az egyetlen elfogadott paraméter a szálak száma (`-n`), amelynek 8 többszörösének kell lennie. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a szálak számát. Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tesztelés ====&lt;br /&gt;
Teszt job bekuldesehez a --qos=test opciot kell hasznalni a job scriptben. Ebben az esetben maximum 30 percig futhat a job es osszesen 24 szal kerheto.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IntelMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 10 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 10 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3436</id>
		<title>Miskolc UV 2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3436"/>
				<updated>2015-11-02T14:14:11Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Job-ok indítása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| ccNUMA&lt;br /&gt;
| Miskolc&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 44 × Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 1 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 4000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.miskolc.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.miskolc.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.miskolc.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.miskolc.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.miskolc.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
      MISKOLC[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -c CORES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;CORES&amp;lt;/code&amp;gt; a lefoglalni kívánt core-ok száma, amelynek 8 többszörösének kell lenni. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a core-ok számát. A &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje. &lt;br /&gt;
 &lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
&lt;br /&gt;
A miskolci  gépen legalább 8 szálon működő jobok futtatása lehetságes. Az egyetlen elfogadott paraméter a szálak száma (`-n`), amelynek 8 többszörösének kell lenni. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a szálak számát. Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tesztelés ====&lt;br /&gt;
Teszt job bekuldesehez a --qos=test opciot kell hasznalni a job scriptben. Ebben az esetben maximum 30 percig futhat a job es osszesen 24 szal kerheto.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IntelMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 10 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 10 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3435</id>
		<title>Miskolc UV 2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3435"/>
				<updated>2015-11-02T14:13:13Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* A gépidő becslése */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| ccNUMA&lt;br /&gt;
| Miskolc&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 44 × Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 1 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 4000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.miskolc.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.miskolc.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.miskolc.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.miskolc.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.miskolc.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
      MISKOLC[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -c CORES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;CORES&amp;lt;/code&amp;gt; a lefoglalni kívánt core-ok száma, amelynek 8 többszörösének kell lenni. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a core-ok számát. A &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje. &lt;br /&gt;
 &lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
&lt;br /&gt;
A miskolci  gépen legalább 8 szálon működő jobok futtatása lehetságes. Az egyetlen elfogadott paraméter a szálak szám (`-n`), amelynek 8 többszörösének kell lenni. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a szálak számát. Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tesztelés ====&lt;br /&gt;
Teszt job bekuldesehez a --qos=test opciot kell hasznalni a job scriptben. Ebben az esetben maximum 30 percig futhat a job es osszesen 24 szal kerheto.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IntelMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 10 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 10 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3434</id>
		<title>Miskolc UV 2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3434"/>
				<updated>2015-11-02T14:00:24Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| ccNUMA&lt;br /&gt;
| Miskolc&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 44 × Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 1 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 4000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.miskolc.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.miskolc.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.miskolc.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.miskolc.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.miskolc.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
      MISKOLC[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
&lt;br /&gt;
A miskolci  gépen legalább 8 szálon működő jobok futtatása lehetságes. Az egyetlen elfogadott paraméter a szálak szám (`-n`), amelynek 8 többszörösének kell lenni. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a szálak számát. Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tesztelés ====&lt;br /&gt;
Teszt job bekuldesehez a --qos=test opciot kell hasznalni a job scriptben. Ebben az esetben maximum 30 percig futhat a job es osszesen 24 szal kerheto.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IntelMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 10 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 10 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3433</id>
		<title>Miskolc UV 2000</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Miskolc_UV_2000&amp;diff=3433"/>
				<updated>2015-11-02T13:59:47Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: Új oldal, tartalma: „  {| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  |-  | ccNUMA | Miskolc |-  | Típus | SGI UV 2000 |-  | core / node | 44 × Intel Xeon E5-4627 v2 @ 3.33 GHz |-  | Compute node-ok | …”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| ccNUMA&lt;br /&gt;
| Miskolc&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| SGI UV 2000&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 44 × Intel Xeon E5-4627 v2 @ 3.33 GHz&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 1 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max core-ok / projekt&lt;br /&gt;
| 140 (7db node)&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 4000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.miskolc.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.miskolc.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.miskolc.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.miskolc.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.miskolc.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
      MISKOLC[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
&lt;br /&gt;
A miskolci  gépen legalább 8 szálon működő jobok futtatása lehetságes. Az egyetlen elfogadott paraméter a szálak szám (`-n`), amelynek 8 többszörösének kell lenni. 8 szálhoz 30 GByte memória tartozik. Ha több memóriára van szükségünk, akkor meg kell növelni a szálak számát. Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tesztelés ====&lt;br /&gt;
Teszt job bekuldesehez a --qos=test opciot kell hasznalni a job scriptben. Ebben az esetben maximum 30 percig futhat a job es osszesen 24 szal kerheto.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IntelMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 10 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 10 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=HPC&amp;diff=3379</id>
		<title>HPC</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=HPC&amp;diff=3379"/>
				<updated>2015-10-08T18:39:36Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Magyar Szuperszámítógépek összehasonlítása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[PRACE_User_Support|NIIF HPC Support in English]]&lt;br /&gt;
== A szuperszámítógépekről ==&lt;br /&gt;
Az NIIF Intézet szuperszámítógép szolgáltatása tudományos számítási feladatok futtatására, valamint tudományos célú adattárolásra szolgál. A jelenleg integrált szuperszámítógép-rendszer komponensei négy helyszínen találhatók:&lt;br /&gt;
&lt;br /&gt;
* Debreceni Egyetem&lt;br /&gt;
* NIIFI központ&lt;br /&gt;
* Pécsi Tudományegyetem&lt;br /&gt;
* Szegedi Tudományegyetem&lt;br /&gt;
&lt;br /&gt;
A tudományos számítási feladatok különböző típusainak minél szélesebb körű lefedettsége érdekében az egyes helyszíneken különböző felépítésű gépek találhatók: egy helyszínen SMP/ccNUMA, három helyszínen pedig &amp;quot;fat-node&amp;quot; fürtözött megoldás. Az alrendszereket az NIIFI nagy sávszélességű, alacsony késleltetésű HBONE+ adathálózatán keresztül, ARC grid köztesréteg, valamint harmonizált felhasználói azonosítás segítségével integráljuk egységes elvek mentén elérhető számítási egységgé. Az erőforrás jelenleg Magyarország legnagyobb tudományos számítás céljára felhasználható erőforrása, amely összesen 50 billió lebegőpontos művelet elvégzését teszi lehetővé másodpercenként.&lt;br /&gt;
A szuperszámítógép-rendszert az NIIFI üzemelteti és fejleszti. A rendszerhez regisztrációt követően, minden olyan személy vagy kutatócsoport hozzáférhet, amely tagintézményi szerződéses kapcsolatban áll az NIIF Intézettel.&lt;br /&gt;
A gépen megtalálhatók és futtathatók a legkorszerűbb fejlesztőeszközök és tudományos számításra szolgáló alkalmazások, valamint, az NIIF adatközpontban elhelyezett alrendszer kivételével, valamennyi alrendszer kiegészül a számítási feladatok eredményeit megjelenítő vizualizációs eszközökkel.&lt;br /&gt;
&lt;br /&gt;
==== Magyar Szuperszámítógépek összehasonlítása ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Helyszín&lt;br /&gt;
| Budapest&lt;br /&gt;
| Budapest2&lt;br /&gt;
| Szeged&lt;br /&gt;
| Debrecen&lt;br /&gt;
| Debrecen2 (beüzemelése folyamatban van)&lt;br /&gt;
| Pécs&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| HP SL250s &lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| SGI ICE8400EX&lt;br /&gt;
| HP SL250s&lt;br /&gt;
| SGI UV 1000&lt;br /&gt;
|- &lt;br /&gt;
| CPU-k / node &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 4 &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 192 &lt;br /&gt;
|- &lt;br /&gt;
| Core-ok / CPU &lt;br /&gt;
| 12&lt;br /&gt;
| 10&lt;br /&gt;
| 12&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|- &lt;br /&gt;
| Memória / node &lt;br /&gt;
| 66 GB&lt;br /&gt;
| 63 GB &lt;br /&gt;
| 132 GB&lt;br /&gt;
| 47 GB&lt;br /&gt;
| 125 GB&lt;br /&gt;
| 6 TB&lt;br /&gt;
|- &lt;br /&gt;
| Memória / core &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 3 GB &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 7.5 GB&lt;br /&gt;
| 5 GB&lt;br /&gt;
|- &lt;br /&gt;
| CPU &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz&lt;br /&gt;
| Intel Xeon E5-2680 v2 @ 2.80GHz    &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz &lt;br /&gt;
| Intel Xeon X5680 @ 3.33 GHz&lt;br /&gt;
| Intel Xeon E5-2650 v2 @ 2.60GHz &lt;br /&gt;
| Intel Xeon X7542 @ 2.66 GHz&lt;br /&gt;
|- &lt;br /&gt;
| GPU &lt;br /&gt;
| -&lt;br /&gt;
| -   &lt;br /&gt;
| 2 * 6 Nvidia M2070&lt;br /&gt;
| -&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x &lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Intel Xeon Phi &lt;br /&gt;
| -&lt;br /&gt;
| 14 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -  &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| Linpack teljesítmény (Rmax)&lt;br /&gt;
| 5 Tflops&lt;br /&gt;
| 27 Tflops&lt;br /&gt;
| 20 Tflops&lt;br /&gt;
| 18 Tlops&lt;br /&gt;
| 202 Tflops&lt;br /&gt;
| 10 Tflops&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok száma &lt;br /&gt;
| 32&lt;br /&gt;
| 14&lt;br /&gt;
| 50&lt;br /&gt;
| 128&lt;br /&gt;
| 84&lt;br /&gt;
| 1&lt;br /&gt;
|-  &lt;br /&gt;
| Scheduler &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]  &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
|- &lt;br /&gt;
| MPI &lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| IntelMPI (impi) &lt;br /&gt;
| OpenMPI (ompi) &lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== További információ ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Debrecen2_GPU_klaszter|Debrecen2]]&lt;br /&gt;
* [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
* [[HPC-Portal|HPC portál: projekt és témaszámok kezelése, leállások, statisztikák]]&lt;br /&gt;
* [[NIIF_szuperszámítógépek_használata|A szuperszámítógépek használata]]&lt;br /&gt;
* [[HPC-GYIK|GY.I.K]]&lt;br /&gt;
* [http://www.niif.hu/hu/niif_intezet/az_niifi_szuperszamitogepek_hasznalata NIIF HPC oldal]&lt;br /&gt;
* [http://conference.niif.hu/event/3/session/23/contribution/25 HPC tutorial (Networkshop 2015)]&lt;br /&gt;
* [http://www.training.prace-ri.eu PRACE training portal]&lt;br /&gt;
* [[PRACE_User_Support|PRACE User Support]]&lt;br /&gt;
[[Kategória: HPC]]&lt;br /&gt;
[[Kategória: Összefoglaló lapok]]&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Budapest2_klaszter&amp;diff=3378</id>
		<title>Budapest2 klaszter</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Budapest2_klaszter&amp;diff=3378"/>
				<updated>2015-10-08T18:38:21Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* OpenMPI feladatok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Klaszter&lt;br /&gt;
| Budapest2&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 10 × 2 Xeon E5-2680v2 2.80GHz  &lt;br /&gt;
|- &lt;br /&gt;
| Intel Xeon Phi / node&lt;br /&gt;
| 2 × Intel(R) Xeon Phi(TM) MIC SE10/7120 &lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 14 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max core-ok / projekt&lt;br /&gt;
| 140 (7db node)&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 3000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.budapest2.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.budapest2.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.budapest2.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.budapest2.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.budapest2.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
    BUDAPEST2[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== Intel Xeon Phi használata ==&lt;br /&gt;
&lt;br /&gt;
* [http://software.intel.com/en-us/mic-developer Itt] található az Intel hivatalos dokumentációja ezzel kapcsolatban&lt;br /&gt;
* [http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor Itt] tájékozódhatnak az Intel matematikai könyvtárainak a linkeléséről&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Intel Xeon Phi-k lefoglalása ====&lt;br /&gt;
A Intel Xeon Phi-k lefoglalása a következő direktívával történik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=mic:N&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; az Intel Xeon Phi-k/node számát adja meg, ami 1 és 2 lehet maximum.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépeken két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt; sor. Utóbbi az éles számolásokra való, előbbi fejlesztés és tesztelés céljára használható. A teszt sorban összesen 1 node-ot, maximum fél órára lehet lefoglalni. Az alapértelmezett sor a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt;. A teszt partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. A maximális memória/core 3000 MB lehet.&lt;br /&gt;
&lt;br /&gt;
Amennyiben a szálaknak 4GB-nál több virtuális memóriára van szükségük, akkor az indítandó program elé a következő parancsot is el kell helyezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -v unlimited&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IntelMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 10 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 10 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=HPC&amp;diff=3377</id>
		<title>HPC</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=HPC&amp;diff=3377"/>
				<updated>2015-10-08T18:25:12Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Magyar Szuperszámítógépek összehasonlítása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[PRACE_User_Support|NIIF HPC Support in English]]&lt;br /&gt;
== A szuperszámítógépekről ==&lt;br /&gt;
Az NIIF Intézet szuperszámítógép szolgáltatása tudományos számítási feladatok futtatására, valamint tudományos célú adattárolásra szolgál. A jelenleg integrált szuperszámítógép-rendszer komponensei négy helyszínen találhatók:&lt;br /&gt;
&lt;br /&gt;
* Debreceni Egyetem&lt;br /&gt;
* NIIFI központ&lt;br /&gt;
* Pécsi Tudományegyetem&lt;br /&gt;
* Szegedi Tudományegyetem&lt;br /&gt;
&lt;br /&gt;
A tudományos számítási feladatok különböző típusainak minél szélesebb körű lefedettsége érdekében az egyes helyszíneken különböző felépítésű gépek találhatók: egy helyszínen SMP/ccNUMA, három helyszínen pedig &amp;quot;fat-node&amp;quot; fürtözött megoldás. Az alrendszereket az NIIFI nagy sávszélességű, alacsony késleltetésű HBONE+ adathálózatán keresztül, ARC grid köztesréteg, valamint harmonizált felhasználói azonosítás segítségével integráljuk egységes elvek mentén elérhető számítási egységgé. Az erőforrás jelenleg Magyarország legnagyobb tudományos számítás céljára felhasználható erőforrása, amely összesen 50 billió lebegőpontos művelet elvégzését teszi lehetővé másodpercenként.&lt;br /&gt;
A szuperszámítógép-rendszert az NIIFI üzemelteti és fejleszti. A rendszerhez regisztrációt követően, minden olyan személy vagy kutatócsoport hozzáférhet, amely tagintézményi szerződéses kapcsolatban áll az NIIF Intézettel.&lt;br /&gt;
A gépen megtalálhatók és futtathatók a legkorszerűbb fejlesztőeszközök és tudományos számításra szolgáló alkalmazások, valamint, az NIIF adatközpontban elhelyezett alrendszer kivételével, valamennyi alrendszer kiegészül a számítási feladatok eredményeit megjelenítő vizualizációs eszközökkel.&lt;br /&gt;
&lt;br /&gt;
==== Magyar Szuperszámítógépek összehasonlítása ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Helyszín&lt;br /&gt;
| Budapest&lt;br /&gt;
| Budapest2&lt;br /&gt;
| Szeged&lt;br /&gt;
| Debrecen&lt;br /&gt;
| Debrecen2 (beüzemelése folyamatban van)&lt;br /&gt;
| Pécs&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| HP SL250s &lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| SGI ICE8400EX&lt;br /&gt;
| HP SL250s&lt;br /&gt;
| SGI UV 1000&lt;br /&gt;
|- &lt;br /&gt;
| CPU-k / node &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 4 &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 192 &lt;br /&gt;
|- &lt;br /&gt;
| Core-ok / CPU &lt;br /&gt;
| 12&lt;br /&gt;
| 10&lt;br /&gt;
| 12&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|- &lt;br /&gt;
| Memória / node &lt;br /&gt;
| 66 GB&lt;br /&gt;
| 63 GB &lt;br /&gt;
| 132 GB&lt;br /&gt;
| 47 GB&lt;br /&gt;
| 125 GB&lt;br /&gt;
| 6 TB&lt;br /&gt;
|- &lt;br /&gt;
| Memória / core &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 3 GB &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 7.5 GB&lt;br /&gt;
| 5 GB&lt;br /&gt;
|- &lt;br /&gt;
| CPU &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz&lt;br /&gt;
| Intel Xeon E5-2680 v2 @ 2.80GHz    &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz &lt;br /&gt;
| Intel Xeon X5680 @ 3.33 GHz&lt;br /&gt;
| Intel Xeon E5-2650 v2 @ 2.60GHz &lt;br /&gt;
| Intel Xeon X7542 @ 2.66 GHz&lt;br /&gt;
|- &lt;br /&gt;
| GPU &lt;br /&gt;
| -&lt;br /&gt;
| -   &lt;br /&gt;
| 2 * 6 Nvidia M2070&lt;br /&gt;
| -&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x &lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Intel Xeon Phi &lt;br /&gt;
| -&lt;br /&gt;
| 14 * 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -  &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| Linpack teljesítmény (Rmax)&lt;br /&gt;
| 5 Tflops&lt;br /&gt;
| 27 Tflops&lt;br /&gt;
| 20 Tflops&lt;br /&gt;
| 18 Tlops&lt;br /&gt;
| 202 Tflops&lt;br /&gt;
| 10 Tflops&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok száma &lt;br /&gt;
| 32&lt;br /&gt;
| 14&lt;br /&gt;
| 50&lt;br /&gt;
| 128&lt;br /&gt;
| 84&lt;br /&gt;
| 1&lt;br /&gt;
|-  &lt;br /&gt;
| Scheduler &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]  &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
|- &lt;br /&gt;
| MPI &lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| OpenMPI (ompi) &lt;br /&gt;
| OpenMPI (ompi) &lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== További információ ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Debrecen2_GPU_klaszter|Debrecen2]]&lt;br /&gt;
* [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
* [[HPC-Portal|HPC portál: projekt és témaszámok kezelése, leállások, statisztikák]]&lt;br /&gt;
* [[NIIF_szuperszámítógépek_használata|A szuperszámítógépek használata]]&lt;br /&gt;
* [[HPC-GYIK|GY.I.K]]&lt;br /&gt;
* [http://www.niif.hu/hu/niif_intezet/az_niifi_szuperszamitogepek_hasznalata NIIF HPC oldal]&lt;br /&gt;
* [http://conference.niif.hu/event/3/session/23/contribution/25 HPC tutorial (Networkshop 2015)]&lt;br /&gt;
* [http://www.training.prace-ri.eu PRACE training portal]&lt;br /&gt;
* [[PRACE_User_Support|PRACE User Support]]&lt;br /&gt;
[[Kategória: HPC]]&lt;br /&gt;
[[Kategória: Összefoglaló lapok]]&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Debrecen2_GPU_klaszter&amp;diff=3376</id>
		<title>Debrecen2 GPU klaszter</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Debrecen2_GPU_klaszter&amp;diff=3376"/>
				<updated>2015-10-08T16:26:50Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* OpenMPI feladatok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Klaszter&lt;br /&gt;
| Debrecen2 (Leo)&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 8 × 2 Xeon E5-2650v2 2.60GHz  &lt;br /&gt;
|- &lt;br /&gt;
| GPU / node&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 84 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max core-ok / projekt&lt;br /&gt;
| 336 (21db node)&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 7800 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CPU idő kérés ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{ATTENTION|A CPU idő igénylésekor egy olyan rövid indoklást várunk a HPC projekt vezetőktől, amiből kiderül, hogy a futtatandó alkalmazás képes GPU-t használni. Erre azért van szükség, mert az erőforrás teljesítményének nagyobbik része GPU gyorsításból származik, egy gyorsítás nélküli program a CPU-kat lefoglalja, korlátozva ezzel a GPU-k használatát, ami kihasználatlansághoz vezet. Az NVidia  [http://www.nvidia.com/object/gpu-applications.html közzétett egy listát] arról, hogy melyik alkalmazás rendelkezik jelenleg hivatalosan NVidia GPU támogatással, de természetesen egyéb, GPU-t használó program is nagy valószínűséggel jól fut a gépen.}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.debrecen2.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.debrecen2.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.debrecen2.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.debrecen2.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.debrecen2.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
    DEBRECEN2[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== GPU-k lefoglalása ====&lt;br /&gt;
A GPU-k lefoglalása a következő direktívával törénik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=gpu:N&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; a GPU-k/node számát adja meg, ami 1, 2 és 3 lehet maximum.&lt;br /&gt;
&lt;br /&gt;
==== Interaktív használat ====&lt;br /&gt;
Rövid interaktív feladatokat az 'srun' paranccsal tudunk beküldeni, pl.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun -l -n 1 -t TIME --gres=gpu:1 -A ACCOUNT APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Batch job-ok indítása ====&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépeken két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt; sor. Utóbbi az éles számolásokra való, előbbi fejlesztés és tesztelés céljára használható. A teszt sorban összesen 1 node-ot, maximum fél órára lehet lefoglalni. Az alapértelmezett sor a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt;. A teszt partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A teszt partícióban 1 GPU található (&amp;lt;code&amp;gt;--gres=gpu:1&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. A maximális memória/core 7800 MB lehet.&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=8&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
mpirun --report-pid ${TMPDIR}/mpirun.pid PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=8&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 8 CPU core-t rendeltunk, a 8 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 8 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=8&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 8 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 8 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=8&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Budapest2_klaszter&amp;diff=3375</id>
		<title>Budapest2 klaszter</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Budapest2_klaszter&amp;diff=3375"/>
				<updated>2015-10-08T16:24:57Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Alkalmazás-specifikus beállítások */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Klaszter&lt;br /&gt;
| Budapest2&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 10 × 2 Xeon E5-2680v2 2.80GHz  &lt;br /&gt;
|- &lt;br /&gt;
| Intel Xeon Phi / node&lt;br /&gt;
| 2 × Intel(R) Xeon Phi(TM) MIC SE10/7120 &lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 14 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max core-ok / projekt&lt;br /&gt;
| 140 (7db node)&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 3000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.budapest2.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.budapest2.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.budapest2.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.budapest2.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.budapest2.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
    BUDAPEST2[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== Intel Xeon Phi használata ==&lt;br /&gt;
&lt;br /&gt;
* [http://software.intel.com/en-us/mic-developer Itt] található az Intel hivatalos dokumentációja ezzel kapcsolatban&lt;br /&gt;
* [http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor Itt] tájékozódhatnak az Intel matematikai könyvtárainak a linkeléséről&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Intel Xeon Phi-k lefoglalása ====&lt;br /&gt;
A Intel Xeon Phi-k lefoglalása a következő direktívával történik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=mic:N&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; az Intel Xeon Phi-k/node számát adja meg, ami 1 és 2 lehet maximum.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépeken két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt; sor. Utóbbi az éles számolásokra való, előbbi fejlesztés és tesztelés céljára használható. A teszt sorban összesen 1 node-ot, maximum fél órára lehet lefoglalni. Az alapértelmezett sor a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt;. A teszt partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. A maximális memória/core 3000 MB lehet.&lt;br /&gt;
&lt;br /&gt;
Amennyiben a szálaknak 4GB-nál több virtuális memóriára van szükségük, akkor az indítandó program elé a következő parancsot is el kell helyezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -v unlimited&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
&lt;br /&gt;
mpirun --report-pid ${TMPDIR}/mpirun.pid PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 10 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 10 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Budapest2_klaszter&amp;diff=3374</id>
		<title>Budapest2 klaszter</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Budapest2_klaszter&amp;diff=3374"/>
				<updated>2015-10-08T16:24:46Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* OpenMPI feladatok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Klaszter&lt;br /&gt;
| Budapest2&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 10 × 2 Xeon E5-2680v2 2.80GHz  &lt;br /&gt;
|- &lt;br /&gt;
| Intel Xeon Phi / node&lt;br /&gt;
| 2 × Intel(R) Xeon Phi(TM) MIC SE10/7120 &lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 14 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max core-ok / projekt&lt;br /&gt;
| 140 (7db node)&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 3000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.budapest2.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.budapest2.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.budapest2.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.budapest2.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.budapest2.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
    BUDAPEST2[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== Intel Xeon Phi használata ==&lt;br /&gt;
&lt;br /&gt;
* [http://software.intel.com/en-us/mic-developer Itt] található az Intel hivatalos dokumentációja ezzel kapcsolatban&lt;br /&gt;
* [http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor Itt] tájékozódhatnak az Intel matematikai könyvtárainak a linkeléséről&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Intel Xeon Phi-k lefoglalása ====&lt;br /&gt;
A Intel Xeon Phi-k lefoglalása a következő direktívával történik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=mic:N&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; az Intel Xeon Phi-k/node számát adja meg, ami 1 és 2 lehet maximum.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépeken két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt; sor. Utóbbi az éles számolásokra való, előbbi fejlesztés és tesztelés céljára használható. A teszt sorban összesen 1 node-ot, maximum fél órára lehet lefoglalni. Az alapértelmezett sor a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt;. A teszt partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. A maximális memória/core 3000 MB lehet.&lt;br /&gt;
&lt;br /&gt;
Amennyiben a szálaknak 4GB-nál több virtuális memóriára van szükségük, akkor az indítandó program elé a következő parancsot is el kell helyezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -v unlimited&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
&lt;br /&gt;
mpirun --report-pid ${TMPDIR}/mpirun.pid PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 10 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 10 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alkalmazás-specifikus beállítások ===&lt;br /&gt;
==== Gromacs ====&lt;br /&gt;
A Gromacs programot a következő mpirun paraméterrel kell indítani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mpirun --report-pid ${TMPDIR}/mpirun.pid ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Budapest2_klaszter&amp;diff=3373</id>
		<title>Budapest2 klaszter</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Budapest2_klaszter&amp;diff=3373"/>
				<updated>2015-10-08T16:22:33Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Intel Xeon Phi-k lefoglalása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Klaszter&lt;br /&gt;
| Budapest2&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 10 × 2 Xeon E5-2680v2 2.80GHz  &lt;br /&gt;
|- &lt;br /&gt;
| Intel Xeon Phi / node&lt;br /&gt;
| 2 × Intel(R) Xeon Phi(TM) MIC SE10/7120 &lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 14 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max core-ok / projekt&lt;br /&gt;
| 140 (7db node)&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 3000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.budapest2.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.budapest2.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.budapest2.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.budapest2.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.budapest2.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
    BUDAPEST2[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== Intel Xeon Phi használata ==&lt;br /&gt;
&lt;br /&gt;
* [http://software.intel.com/en-us/mic-developer Itt] található az Intel hivatalos dokumentációja ezzel kapcsolatban&lt;br /&gt;
* [http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor Itt] tájékozódhatnak az Intel matematikai könyvtárainak a linkeléséről&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Intel Xeon Phi-k lefoglalása ====&lt;br /&gt;
A Intel Xeon Phi-k lefoglalása a következő direktívával történik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=mic:N&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; az Intel Xeon Phi-k/node számát adja meg, ami 1 és 2 lehet maximum.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépeken két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt; sor. Utóbbi az éles számolásokra való, előbbi fejlesztés és tesztelés céljára használható. A teszt sorban összesen 1 node-ot, maximum fél órára lehet lefoglalni. Az alapértelmezett sor a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt;. A teszt partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. A maximális memória/core 3000 MB lehet.&lt;br /&gt;
&lt;br /&gt;
Amennyiben a szálaknak 4GB-nál több virtuális memóriára van szükségük, akkor az indítandó program elé a következő parancsot is el kell helyezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -v unlimited&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 10 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 10 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alkalmazás-specifikus beállítások ===&lt;br /&gt;
==== Gromacs ====&lt;br /&gt;
A Gromacs programot a következő mpirun paraméterrel kell indítani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mpirun --report-pid ${TMPDIR}/mpirun.pid ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Debrecen2_GPU_klaszter&amp;diff=3372</id>
		<title>Debrecen2 GPU klaszter</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Debrecen2_GPU_klaszter&amp;diff=3372"/>
				<updated>2015-10-08T16:20:08Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* OpenMPI feladatok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Klaszter&lt;br /&gt;
| Debrecen2 (Leo)&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 8 × 2 Xeon E5-2650v2 2.60GHz  &lt;br /&gt;
|- &lt;br /&gt;
| GPU / node&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 84 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max core-ok / projekt&lt;br /&gt;
| 336 (21db node)&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 7800 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CPU idő kérés ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{ATTENTION|A CPU idő igénylésekor egy olyan rövid indoklást várunk a HPC projekt vezetőktől, amiből kiderül, hogy a futtatandó alkalmazás képes GPU-t használni. Erre azért van szükség, mert az erőforrás teljesítményének nagyobbik része GPU gyorsításból származik, egy gyorsítás nélküli program a CPU-kat lefoglalja, korlátozva ezzel a GPU-k használatát, ami kihasználatlansághoz vezet. Az NVidia  [http://www.nvidia.com/object/gpu-applications.html közzétett egy listát] arról, hogy melyik alkalmazás rendelkezik jelenleg hivatalosan NVidia GPU támogatással, de természetesen egyéb, GPU-t használó program is nagy valószínűséggel jól fut a gépen.}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.debrecen2.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.debrecen2.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.debrecen2.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.debrecen2.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.debrecen2.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
    DEBRECEN2[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== GPU-k lefoglalása ====&lt;br /&gt;
A GPU-k lefoglalása a következő direktívával törénik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=gpu:N&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; a GPU-k/node számát adja meg, ami 1, 2 és 3 lehet maximum.&lt;br /&gt;
&lt;br /&gt;
==== Interaktív használat ====&lt;br /&gt;
Rövid interaktív feladatokat az 'srun' paranccsal tudunk beküldeni, pl.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun -l -n 1 -t TIME --gres=gpu:1 -A ACCOUNT APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Batch job-ok indítása ====&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépeken két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt; sor. Utóbbi az éles számolásokra való, előbbi fejlesztés és tesztelés céljára használható. A teszt sorban összesen 1 node-ot, maximum fél órára lehet lefoglalni. Az alapértelmezett sor a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt;. A teszt partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A teszt partícióban 1 GPU található (&amp;lt;code&amp;gt;--gres=gpu:1&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. A maximális memória/core 7800 MB lehet.&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=8&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=8&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 8 CPU core-t rendeltunk, a 8 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 8 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=8&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 8 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 8 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=8&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Budapest2_klaszter&amp;diff=3371</id>
		<title>Budapest2 klaszter</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Budapest2_klaszter&amp;diff=3371"/>
				<updated>2015-10-08T16:17:52Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* OpenMP (OMP) feladatok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Klaszter&lt;br /&gt;
| Budapest2&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 10 × 2 Xeon E5-2680v2 2.80GHz  &lt;br /&gt;
|- &lt;br /&gt;
| Intel Xeon Phi / node&lt;br /&gt;
| 2 × Intel(R) Xeon Phi(TM) MIC SE10/7120 &lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 14 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max core-ok / projekt&lt;br /&gt;
| 140 (7db node)&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 3000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.budapest2.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.budapest2.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.budapest2.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.budapest2.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.budapest2.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
    BUDAPEST2[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== Intel Xeon Phi használata ==&lt;br /&gt;
&lt;br /&gt;
* [http://software.intel.com/en-us/mic-developer Itt] található az Intel hivatalos dokumentációja ezzel kapcsolatban&lt;br /&gt;
* [http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor Itt] tájékozódhatnak az Intel matematikai könyvtárainak a linkeléséről&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Intel Xeon Phi-k lefoglalása ====&lt;br /&gt;
A Intel Xeon Phi-k lefoglalása a következő direktívával történik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=mic:N&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; a Intel Xeon Phi-k/node számát adja meg, ami 1 és 2 lehet maximum.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépeken két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt; sor. Utóbbi az éles számolásokra való, előbbi fejlesztés és tesztelés céljára használható. A teszt sorban összesen 1 node-ot, maximum fél órára lehet lefoglalni. Az alapértelmezett sor a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt;. A teszt partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. A maximális memória/core 3000 MB lehet.&lt;br /&gt;
&lt;br /&gt;
Amennyiben a szálaknak 4GB-nál több virtuális memóriára van szükségük, akkor az indítandó program elé a következő parancsot is el kell helyezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -v unlimited&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 10 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 10 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 10 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alkalmazás-specifikus beállítások ===&lt;br /&gt;
==== Gromacs ====&lt;br /&gt;
A Gromacs programot a következő mpirun paraméterrel kell indítani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mpirun --report-pid ${TMPDIR}/mpirun.pid ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Budapest2_klaszter&amp;diff=3370</id>
		<title>Budapest2 klaszter</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Budapest2_klaszter&amp;diff=3370"/>
				<updated>2015-10-08T16:16:34Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* OpenMPI feladatok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Klaszter&lt;br /&gt;
| Budapest2&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 10 × 2 Xeon E5-2680v2 2.80GHz  &lt;br /&gt;
|- &lt;br /&gt;
| Intel Xeon Phi / node&lt;br /&gt;
| 2 × Intel(R) Xeon Phi(TM) MIC SE10/7120 &lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 14 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max core-ok / projekt&lt;br /&gt;
| 140 (7db node)&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 3000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.budapest2.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.budapest2.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.budapest2.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.budapest2.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.budapest2.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
    BUDAPEST2[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== Intel Xeon Phi használata ==&lt;br /&gt;
&lt;br /&gt;
* [http://software.intel.com/en-us/mic-developer Itt] található az Intel hivatalos dokumentációja ezzel kapcsolatban&lt;br /&gt;
* [http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor Itt] tájékozódhatnak az Intel matematikai könyvtárainak a linkeléséről&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Intel Xeon Phi-k lefoglalása ====&lt;br /&gt;
A Intel Xeon Phi-k lefoglalása a következő direktívával történik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=mic:N&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; a Intel Xeon Phi-k/node számát adja meg, ami 1 és 2 lehet maximum.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépeken két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt; sor. Utóbbi az éles számolásokra való, előbbi fejlesztés és tesztelés céljára használható. A teszt sorban összesen 1 node-ot, maximum fél órára lehet lefoglalni. Az alapértelmezett sor a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt;. A teszt partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. A maximális memória/core 3000 MB lehet.&lt;br /&gt;
&lt;br /&gt;
Amennyiben a szálaknak 4GB-nál több virtuális memóriára van szükségük, akkor az indítandó program elé a következő parancsot is el kell helyezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -v unlimited&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alkalmazás-specifikus beállítások ===&lt;br /&gt;
==== Gromacs ====&lt;br /&gt;
A Gromacs programot a következő mpirun paraméterrel kell indítani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mpirun --report-pid ${TMPDIR}/mpirun.pid ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=NIIF_szupersz%C3%A1m%C3%ADt%C3%B3g%C3%A9pek_haszn%C3%A1lata&amp;diff=3369</id>
		<title>NIIF szuperszámítógépek használata</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=NIIF_szupersz%C3%A1m%C3%ADt%C3%B3g%C3%A9pek_haszn%C3%A1lata&amp;diff=3369"/>
				<updated>2015-10-08T16:16:30Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* OpenMP (OMP) feladatok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== A szuperszámítógépekről ==&lt;br /&gt;
Az NIIF Intézet szuperszámítógép szolgáltatása tudományos számítási feladatok futtatására, valamint tudományos célú adattárolásra szolgál. A jelenleg integrált szuperszámítógép-rendszer komponensei négy helyszínen találhatók:&lt;br /&gt;
&lt;br /&gt;
* Debreceni Egyetem&lt;br /&gt;
* NIIFI központ&lt;br /&gt;
* Pécsi Tudományegyetem&lt;br /&gt;
* Szegedi Tudományegyetem&lt;br /&gt;
&lt;br /&gt;
A tudományos számítási feladatok különböző típusainak minél szélesebb körű lefedettsége érdekében az egyes helyszíneken különböző felépítésű gépek találhatók: egy helyszínen SMP/ccNUMA, három helyszínen pedig &amp;quot;fat-node&amp;quot; fürtözött megoldás. Az alrendszereket az NIIFI nagy sávszélességű, alacsony késleltetésű HBONE+ adathálózatán keresztül, ARC grid köztesréteg, valamint harmonizált felhasználói azonosítás segítségével integráljuk egységes elvek mentén elérhető számítási egységgé. Az erőforrás jelenleg Magyarország legnagyobb tudományos számítás céljára felhasználható erőforrása, amely összesen 50 billió lebegőpontos művelet elvégzését teszi lehetővé másodpercenként.&lt;br /&gt;
A szuperszámítógép-rendszert az NIIFI üzemelteti és fejleszti. A rendszerhez regisztrációt követően, minden olyan személy vagy kutatócsoport hozzáférhet, amely tagintézményi szerződéses kapcsolatban áll az NIIF Intézettel.&lt;br /&gt;
A gépen megtalálhatók és futtathatók a legkorszerűbb fejlesztőeszközök és tudományos számításra szolgáló alkalmazások, valamint, az NIIF adatközpontban elhelyezett alrendszer kivételével, valamennyi alrendszer kiegészül a számítási feladatok eredményeit megjelenítő vizualizációs eszközökkel.&lt;br /&gt;
&lt;br /&gt;
=== Köszönetnyilvánítás ===&lt;br /&gt;
Tudományos publikációkban a következő köszönetnyilvánítást javasoljuk:&lt;br /&gt;
&lt;br /&gt;
'''We acknowledge [PRACE/NIIF] for awarding us access to resource based in Hungary at [Budapest/Debrecen/Pécs/Szeged].'''&lt;br /&gt;
&lt;br /&gt;
Where technical support has been received the following additional text should also be used:&lt;br /&gt;
&lt;br /&gt;
'''The support of [name of person/people] from NIIF Institute, Hungary to the technical work is gratefully acknowledged.'''&lt;br /&gt;
&lt;br /&gt;
== Hozzáférés a szuperszámítógépekhez == &lt;br /&gt;
A szuperszámítógépekhez kulcsos SSH használatával lehet hozzáférni. Ajánlott UTF-8 képes terminált használ az ékezetes betűk megjeelenítése érdekében. PUTTY terminál esetén a ''Window/Translation'' beállítás alatt a character set-et kell UTF-8-ra állítani.&lt;br /&gt;
&lt;br /&gt;
=== SSH belépés ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ssh USER@login.SITE.hpc.niif.hu&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;USER&amp;lt;/code&amp;gt; a felhasználónév, a &amp;lt;code&amp;gt;SITE&amp;lt;/code&amp;gt; pedig a belépéshez használt szupergép neve: '''budapest''', '''debrecen''', '''pecs''', '''szeged'''. Nem alapértelmezett kulcs használata a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval lehetséges.&lt;br /&gt;
&lt;br /&gt;
Belépés a szegedi gépre alice felhasználóként, az SSH privát kulcsot a &amp;lt;code&amp;gt;keys/szeged&amp;lt;/code&amp;gt; fájlból olvasva:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ssh -i keys/szeged alice@login.szeged.hpc.niif.hu&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fájl másolás SCP segítségével ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scp USER@login.SITE.hpc.niif.hu:FILE FILE&lt;br /&gt;
scp FILE USER@login.SITE.hpc.niif.hu:FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A szegedi gép HOME könyvtárában lévő &amp;lt;code&amp;gt;stuff.tgz&amp;lt;/code&amp;gt; fájl letöltése a helyi gép aktuális könyvtárába:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
scp bob@login.szeged.hpc.niif.hu:stuff.tgz .&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatátvitel rsync segítségével ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához az SSH-t és az rsync-et együtt kell használni. Fel- és leszinkronizálás:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -a -e ssh DIRECTORY USER@login.budapest.hpc.niif.hu:/home/USER&lt;br /&gt;
rsync -a -e ssh USER@login.budapest.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A budapesti gépre szinkronizálom a helyi &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; könyvtár tartalmát (nem az alapértelmezett kulcsot használva) és a másolás folyamatát nyomonkövetem:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
rsync -a -h --progress -e &amp;quot;ssh -i keys/budapest&amp;quot; ./src alice@login.budapest.hpc.niif.hu:/home/alice&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
A szupergépek elsődleges felhasználói felülete a Bash shell. Az automatikusan betöltődő NIIF Common Environment (NCE) a PS1 promptot a következőképp állítja be:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                    |&lt;br /&gt;
    BUDAPEST[login] ~ (0)$&lt;br /&gt;
        |      |       |&lt;br /&gt;
   HPC állomás |       |&lt;br /&gt;
         rövid gép név |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
A szupergépekre telepített alkalmazásokat az ún. modul rendszer segítségével lehet használ. A modul rendszer lehetővé teszi egy adott alkalmazás több verziójának használatát is. Feladata a shell környezeti változók helyes beállítása. Normál felhasználók számára az alapértelmezett modul környezet automatikusan betöltődik. Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load APPS&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;APPS&amp;lt;/code&amp;gt; a betöltendő modulok space-szel elválasztott listája.&lt;br /&gt;
&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
==== Példa ====&lt;br /&gt;
A Maple, netcfd és az R csomagok betöltése:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load maple netcdf R&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához használjuk a [http://www.techrepublic.com/blog/linux-and-open-source/learn-to-use-extended-file-attributes-in-linux-to-boost-security/](fájlrendszer ACL-eket). Az ACL-ekkel a hagyományos unix engedélyeken felül finoman szabályozhatjuk a fájlok és könyvtárak hozzáférési engedélyeit. A következő példában a &amp;lt;code&amp;gt;$HOME/Shared&amp;lt;/code&amp;gt; könyvtárat osztjuk egy munkatárs számára:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# a home könyvtár beállítása&lt;br /&gt;
# user1 user számára belépsi engedély: u:user1:x &lt;br /&gt;
$ setfacl -m u:user1:x $HOME&lt;br /&gt;
$ getfacl $HOME&lt;br /&gt;
# file: user2/user2&lt;br /&gt;
# owner: user2&lt;br /&gt;
# group: user2&lt;br /&gt;
user::rwx&lt;br /&gt;
user:user1:--x&lt;br /&gt;
group::r-x&lt;br /&gt;
mask::r-x&lt;br /&gt;
other::---&lt;br /&gt;
# Shared könyvtár megosztása&lt;br /&gt;
# user1 számára minden unix jog&lt;br /&gt;
$ cd&lt;br /&gt;
$ mkdir Shared&lt;br /&gt;
$ setfacl -m u:user1:rwx $HOME/Shared&lt;br /&gt;
$ getfacl Shared&lt;br /&gt;
# file: Shared&lt;br /&gt;
# owner: user2&lt;br /&gt;
# group: user2&lt;br /&gt;
user::rwx&lt;br /&gt;
user:user1:rwx&lt;br /&gt;
group::rwx&lt;br /&gt;
mask::rwx&lt;br /&gt;
other::r-x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Python csomag telepítése a saját home könyvtárunkba ==&lt;br /&gt;
Itt egy példa arra, hogy hogyan tudjuk feltelepíteni a mercurial python csomagot.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module load python &lt;br /&gt;
$ pip install --user mercurial&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login és vserver node-jai osztott home könyvtárral vannak összekötve. Fontos, hogy az osztott könyvtárat a számítási node-ok nem érik el, ezért az osztott home-ot csak tárolásra ill. megosztásra lehet használni. Az osztott terület Debrecenben van, ezért ott a leggyorsabb. A másik három helyen lassabb a hozzáférés a nagyobb távolság miatt. A programok kimenetét továbbra is a lokális scratch vagy home könyvtárba kell írni. Amelyik login node-on használni szeretnénk az osztott home könyvtárat, ott adjuk ki a következő parancsokat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd; mkdir shared; ln -s /mnt/fhgfs/home/$USER shared/$USER &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ezek után a &amp;lt;code&amp;gt;$HOME/shared/$USER&amp;lt;/code&amp;gt; könyvtárba másoljuk a megosztott fájlokat. Ez a könyvtár a következő környezeti változóba is exportálódik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$NCE_SHARED &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Biztonsági mentés, adatmegosztás ===&lt;br /&gt;
A következő példa mentést végez a &amp;lt;code&amp;gt;$HOME/data&amp;lt;/code&amp;gt; könyvtárról:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP $HOME/data $NCE_SHARED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Törölje a fájlokat a mentésben is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/data $NCE_SHARED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
Weboldal: http://slurm.schedmd.com&lt;br /&gt;
&lt;br /&gt;
A szupergépeken CPU óra (gépidő) alapú ütemezés működik. Ez azt jelenti, hogy a fogyasztási időtartamra (hónap) az elérhető maximális gépidő fel van osztva a felhasználók között. Minden UNIX felhasználó egy vagy több számlához (''Account'') tartozhat. Az ütemező számla egy adott HPC-s projekthez tartozik, hasonló a UNIX csoporthoz. Szupergépes feladatokat csak az egyes számlák terhére lehet indítani. A CPU óra az elhasznált idő (''Walltime'') és az igényelt processzorok számának szorzata. Például a budapesti gépen 2 db node (48 processzor mag) foglalása 30 percre 48 * 30 = 1440 CPU perc = 24 CPU óra. A CPU órát az ütemező a futás kezdetétől a befejezésig méri.&lt;br /&gt;
&lt;br /&gt;
'''Rendkívül fontos arról meggyőződni, hogy a futtatandó alkalmazás rendesen kihasználja-e a szupergépet. Egy üres vagy rosszul futó job hamar elhasználja a rendelkezésre álló gépidőt. Elfogyasztott gépidő esetén új jobokat már nem lehet indítani, és meg kell várni a számlázási időszak végét. A gépidő limitek (Account Limit) minden hónap elején jóváíródnak.'''&lt;br /&gt;
&lt;br /&gt;
Számláink állapotáról a következő paranccsal kapunk információt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A parancs a következő táblázatot jeleníti meg. A felhasználó két számlához (foobar,barfoo) is hozzáfér, futatthat a számla terhére. Saját magát megcsillagozva látja a listában. Bobbal mindkét számlán (Account oszlop) Alice is osztozik. A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyeik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még alérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
alice                0 |           foobar           0 |             0           0&lt;br /&gt;
bob *                0 |           foobar           0 |             0           0&lt;br /&gt;
&lt;br /&gt;
bob *                7 |           barfoo           7 |         1,000         993&lt;br /&gt;
alice                0 |           barfoo           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
Alice 2 nap 10 órára és 2 node-ra szeretne foglalást kérni, megnézi van-e elég gépidő a számláján:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N 2 -t 2-10:00:00&lt;br /&gt;
&lt;br /&gt;
Estimated CPU hours: 2784&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Sajnos ebben a hónapban erre már nem telik.&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csőkkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
Az ütemezőben 3 feladat van. Az első egy arrayjob, éppen erőforrásra vár (PENDING). A második egy MPI job, ami 4 node-on fut már 25 perce (TIME). A harmadik egy egy node-os OMP futtatás, éppen most indult el. A feladatik nevei (NAME) egyénileg adható meg. Rövid, informatív neveket érdemes adni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
squeue -l&lt;br /&gt;
&lt;br /&gt;
Wed Oct 16 08:30:07 2013              &lt;br /&gt;
     JOBID PARTITION     NAME     USER    STATE       TIME TIMELIMIT  NODES NODELIST(REASON)&lt;br /&gt;
591_[1-96]    normal    array    alice  PENDING       0:00     30:00      1 (None)&lt;br /&gt;
       589    normal      mpi      bob  RUNNING      25:55   2:00:00      4 cn[05-08]&lt;br /&gt;
       590    normal      omp    alice  RUNNING       0:25   1:00:00      1 cn09&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a 2 node-os batch jobnak a jellemző memóriaterhelés a következő volt: kb. 10GB virtuális és 6.5GB RSS memóriát használt el node-onként.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory 430&lt;br /&gt;
&lt;br /&gt;
 MaxVMSize  MaxVMSizeNode  AveVMSize     MaxRSS MaxRSSNode     AveRSS&lt;br /&gt;
---------- -------------- ---------- ---------- ---------- ----------&lt;br /&gt;
10271792K           cn06  10271792K   6544524K       cn06   6544524K   &lt;br /&gt;
10085152K           cn07  10085152K   6538492K       cn07   6534876K &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU felhasználás ellenőrzése ====&lt;br /&gt;
Nagyon fontos meggyőződni arról, hogy az alkalmazás kihasználja-e a rendelkezésre álló gépidőt. Egy futó alkalmazás a következő paranccsal tudunk monitorozni:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sjobcheck JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez a job 4 node-on fut. A LOAD csoport a gép általános terheléséről ad információt és kb. a core-ok számával egyezik meg. A helyes felhasználásról a CPU csoport ad tájékoztatást. Ideális esetben a &amp;lt;code&amp;gt;User&amp;lt;/code&amp;gt; oszlop értékei 90 fölött vannak. Ez alatt valamilyen probléma lépett fel és a futást érdemes megszakítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hostname                     LOAD                       CPU              Gexec  &lt;br /&gt;
 CPUs (Procs/Total) [     1,     5, 15min] [  User,  Nice, System, Idle, Wio]&lt;br /&gt;
cn08    24 (   25/  529) [ 24.83, 24.84, 20.98] [  99.8,   0.0,   0.2,   0.0,   0.0] OFF&lt;br /&gt;
cn07    24 (   25/  529) [ 24.93, 24.88, 20.98] [  99.8,   0.0,   0.2,   0.0,   0.0] OFF&lt;br /&gt;
cn06    24 (   25/  529) [ 25.00, 24.90, 20.97] [  99.9,   0.0,   0.1,   0.0,   0.0] OFF&lt;br /&gt;
cn05    24 (   25/  544) [ 25.11, 24.96, 20.97] [  99.8,   0.0,   0.2,   0.0,   0.0] OFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=niif Start=2014-01-01&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
niif helyett a saját projektünk azonosítóját kell megadni.&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni. Az ütemezők összehasonlításáról és a Slurm-ban elérhető direktívákról a következő [http://slurm.schedmd.com/rosetta.pdf táblázat] ad bővebb tájékoztatást.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sbatch jobscript.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépeken két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt; sor. Utóbbi az éles számolásokra való, előbbi fejlesztés és tesztelés céljára használható. A teszt sorban összesen 1 node-ot, maximum fél órára lehet lefoglalni. Az alapértelmezett sor a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt;. A teszt partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
A memória a CPU-hoz hasonlóan korlátozott, foglalható erőforrás. A felhasználás mérése a memória / core alapon történik: 1 core óra, 2600 MB órának felel meg. Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. Budapesten és Szegeden a maximális memória/core 2600 MB.&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 24 órára ad fel 96 db soros jobot. A &amp;lt;code&amp;gt;#SBATCH --array=1-96&amp;lt;/code&amp;gt; direktíva jelzi, hogy tömbfeladatról van szó. Az alkalmazást az &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; paranccsal kell indítani. Ebben az esetben ez egy shell szkript.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&lt;br /&gt;
A következő példában a test sorban 3 egy szálon dutó programot indítunk el. A programok és az inputok lehetnek különbözőek. Fontos, hogy az utolsó parancsot nem kell a háttérben (&amp;amp;) indítani és a wait-tel kell befejezni a job szkriptet.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&lt;br /&gt;
Bob felhasználó a barfoo számla terhére 2 node-ot, 12 órára foglal le egy MPI job számára. Az egyes node-okon 24 MPI szálat fog elindítani. A program stdout kimenetét a &amp;lt;code&amp;gt;slurm.out&amp;lt;/code&amp;gt; fájlba irányítja (&amp;lt;code&amp;gt;#SBATCH -o&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=24&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI UV SMP (Pécs) ====&lt;br /&gt;
A pécsi gépen legalább 6 szálon működő jobok futtatása lehetságes. Az egyetlen elfogadott paraméter a szálak szám (`-n`), amelynek 6 többszörösének kell lenni. Ezen a gépen nincs teszt sor. Kérjük, hogy 48-nál kevesebb szálon futó programokat az UV-n ne futtassanak! Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
===== OMP Példa =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH -n 48&lt;br /&gt;
#SBATCH --time=03:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
/opt/nce/bin/numainfo&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_NTASKS ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== SGI MPT MPI Példa =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH -n 48&lt;br /&gt;
#SBATCH --time=03:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
/opt/nce/bin/numainfo&lt;br /&gt;
mpirun $SLURM_NTASKS ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Jobok monitorozása =====&lt;br /&gt;
CPU használat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smonitor -n &amp;lt;JOBID&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Memória használat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smonitor -m &amp;lt;JOBID&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ütemezés sor foglaltsága:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sinfo_uv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI MPT MPI feladatok (Debrecen) ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani. Az SGI MPT MPI paraméterezése kicsit más, mint az OpenMPI. '''Debrecen az SGI MPT az alpértelmezett MPI környezet!'''&lt;br /&gt;
&lt;br /&gt;
Bob felhasználó a barfoo számla terhére 2 node-ot, 12 órára foglal le egy MPI job számára. Az egyes node-okon 24 MPI szálat fog elindítani. A program stdout kimenetét a &amp;lt;code&amp;gt;slurm.out&amp;lt;/code&amp;gt; fájlba irányítja (&amp;lt;code&amp;gt;#SBATCH -o&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=12&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
source /opt/nce/bin/machines&lt;br /&gt;
export MPI_OPT=&amp;quot;${MACHINES} -np ${SLURM_NTASKS_PER_NODE}&amp;quot;&lt;br /&gt;
mpirun ${MPI_OPT} ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI PerfBoost egyéb MPI feladatokra (Debrecen) ====&lt;br /&gt;
Az SGI MPT lehetőséget ad arra, hogy nem MPT MPI-vel fordított MPI programok is használjunk. Ebben az esetben az MPI hívások MPT hívásokkal cserélődnek ki.&lt;br /&gt;
&lt;br /&gt;
Egy OpenMPI-re fordított program indítása:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=12&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
source /opt/nce/bin/machines&lt;br /&gt;
export MPI_OPT=&amp;quot;${MACHINES} -np ${SLURM_NTASKS_PER_NODE}&amp;quot;&lt;br /&gt;
mpirun ${MPI_OPT} perfboost -ompi ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU binding ====&lt;br /&gt;
Az MPI programok teljesítménye általában javítható a processzek CPU magokhoz kötésével. Ilyenkor a párhuzamos program szálait az operációs rendszer nem ütemezi a CPU magok között, ezért javulhat a memória lokalizáció (kevesebb cache miss). A kötés használata ajánlott. Tesztekkel meg kell győződni, hogy egy adott alkalmazás esetén melyik kötési stratégia adja a legjobb eredményt. A következő beállítások az OpenMPI környezetre vontakoznak. A kötésekről részletes információt a &amp;lt;code&amp;gt;--report-bindings&amp;lt;/code&amp;gt; MPI opcióval kaphatunk. Az indítási parancsok melett a részletes binding információ néhány sora is látható. Fontos, hogy az ütemező task binding-ját nem kell használni!&lt;br /&gt;
&lt;br /&gt;
===== Kötés CPU magonként =====&lt;br /&gt;
Ebben az esetben az MPI szálak (rank) sorban töltik fel a CPU magokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Indítási parancs: mpirun --bind-to-core --bycore&lt;br /&gt;
&lt;br /&gt;
[cn05:05493] MCW rank 0 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05493] MCW rank 1 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05493] MCW rank 2 bound to socket 0[core 2]: [. . B . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05493] MCW rank 3 bound to socket 0[core 3]: [. . . B . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Kötés CPU foglalat szerint =====&lt;br /&gt;
Ebben az esetben az MPI szálak váltakozva töltik fel a CPU-kat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Indítási parancs: mpirun --bind-to-core --bysocket&lt;br /&gt;
&lt;br /&gt;
[cn05:05659] MCW rank 0 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05659] MCW rank 1 bound to socket 1[core 0]: [. . . . . . . . . . . .][B . . . . . . . . . . .]&lt;br /&gt;
[cn05:05659] MCW rank 2 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05659] MCW rank 3 bound to socket 1[core 1]: [. . . . . . . . . . . .][. B . . . . . . . . . .]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Kötés node-ok szerint =====&lt;br /&gt;
Ebben az esetben az MPI szálak váltakozva töltik fel a node-okat. Lagalább 2 node foglalása szükséges.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Indítási parancs: mpirun --bind-to-core --bynode&lt;br /&gt;
&lt;br /&gt;
[cn05:05904] MCW rank 0 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05904] MCW rank 2 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn06:05969] MCW rank 1 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn06:05969] MCW rank 3 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=10&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 10 CPU core-t rendeltunk, a 10 CPU core-nak egy node-on kell lennie. A CPU core-ok számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 10 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=10&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 24 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 24 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 24 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=24&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Maple Grid feladatok ====&lt;br /&gt;
Maple-t az OMP feladatokhoz hasonlóan 1 node-on lehet futtatni. Használatához be kell tölteni a maple modult is. A Maple kliens-szerver üzemmódban működik ezért a Maple feladat futtatása előtt szükség van a grid szerver elindítására is (&amp;lt;code&amp;gt;${MAPLE}/toolbox/Grid/bin/startserver&amp;lt;/code&amp;gt;). Ez az alkalmazás licensz köteles, amit a jobszkriptben meg kell adni (&amp;lt;code&amp;gt;#SBATCH --licenses=maplegrid:1&amp;lt;/code&amp;gt;). A Maple feladat indátását a &amp;lt;code&amp;gt;${MAPLE}/toolbox/Grid/bin/joblauncher&amp;lt;/code&amp;gt; paranccsal kell elvégezni.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, 6 órára indítja el a Maple Grid alkalmazást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=maple&lt;br /&gt;
#SBATCH -N 1&lt;br /&gt;
#SBATCH --ntasks-per-node=24&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
#SBATCH --licenses=maplegrid:1&lt;br /&gt;
&lt;br /&gt;
module load maple&lt;br /&gt;
&lt;br /&gt;
${MAPLE}/toolbox/Grid/bin/startserver&lt;br /&gt;
${MAPLE}/toolbox/Grid/bin/joblauncher ${MAPLE}/toolbox/Grid/samples/Simple.mpl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Matlab feladatok ====&lt;br /&gt;
Ez az alkalmazás licensz köteles, amit a jobszkriptben meg kell adni (&amp;lt;code&amp;gt;#SBATCH --licenses=matlabdce:1,matlabdct:1,matlab:1&amp;lt;/code&amp;gt;). Összesen 96 darab &lt;br /&gt;
Distributed Computing Server, 13 darab Distributed Computing Toolbox és 13 Matlab licensz lett megvásárolva.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=&amp;quot;Matlab test job&amp;quot;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH --licenses=matlabdce:1,matlabdct:1,matlab:1&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
&lt;br /&gt;
matlab -nodisplay &amp;lt; job.m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPU-k használata ====&lt;br /&gt;
A szegedi szuperszámítógép rendelkezik 2db GPU kártyákkal is felszerelt compute node-dal. A GPU node-okban 2x6db Nvidia Tesla M2070-es kártya található. A GPU-s node-ok külön job sorban található (&amp;lt;code&amp;gt;--partition gpu&amp;lt;/code&amp;gt;). A GPU-k számát a &amp;lt;code&amp;gt;--gres gpu:#&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, 4GPU-n, 6 órára indítja a következő jobot.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=GPU&lt;br /&gt;
#SBATCH --partition gpu&lt;br /&gt;
#SBATCH --gres gpu:4&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
&lt;br /&gt;
$PWD/gpu_burnout 3600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások beállításai ==&lt;br /&gt;
=== Saját programok telepítése ===&lt;br /&gt;
A saját fordítású programokat a HOME könyvtáradba kell telepíteni, ezt általában a fordítás előtti lefuttatott configure szkripttel lehet beállítani. Az adott program a $HOME/local alá fog települni. A PATH és egyéb környezeti változókat értelem szerűen kell beállítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME&lt;br /&gt;
mkdir local&lt;br /&gt;
(belépés az alklamazás könyvtárába)&lt;br /&gt;
./configure --prefix=$HOME/local&lt;br /&gt;
make; make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A frontend gépeken felhasználói limitek vannak beállítva. Ezekről a következő paranccsal kapunk információt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ulimit -a&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A limitek a compute node-okon és az UV-n nincsenek beállítva.&lt;br /&gt;
&lt;br /&gt;
=== Java JVM heap méret ===&lt;br /&gt;
A memória limit miatt a Java virtuális gépen és fordító nem jól működik, ezért meg kell adni a maximális heap méretét:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
java -Xmx512m -version&lt;br /&gt;
javac -J-Xmx512m -version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
vagy exportálni kell a következő változót:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export _JAVA_OPTIONS=&amp;quot;-Xms1g -Xmx1g&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python Numpy és Scipy használat ===&lt;br /&gt;
A numerikus Python használatához a következő csomagokat kell betölteni:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load python numpy scipy&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A numpy és a scipy csomagok az Intel MKL OpenMP gyorsítását használják. A jobokat az &amp;lt;code&amp;gt;openmp&amp;lt;/code&amp;gt; párhuzamos környezetbe kell elküldeni.&lt;br /&gt;
&lt;br /&gt;
== HP Budapest ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fordítás ===&lt;br /&gt;
Elérhető fordítók listája&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Forító&lt;br /&gt;
! Soros&lt;br /&gt;
! Párhuzamos&lt;br /&gt;
|-&lt;br /&gt;
| Intel Fortran&lt;br /&gt;
| ifort&lt;br /&gt;
| mpiif90&lt;br /&gt;
|-&lt;br /&gt;
| Intel C&lt;br /&gt;
| icc&lt;br /&gt;
| mpiicc&lt;br /&gt;
|-&lt;br /&gt;
| GNU Fortran&lt;br /&gt;
| gfotran&lt;br /&gt;
| mpif90&lt;br /&gt;
|-&lt;br /&gt;
| GNU C&lt;br /&gt;
| gcc&lt;br /&gt;
| mpicc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A fordítási paramétereket az NCE környezeti változókból érdemes kiolvasni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NCE_OFLAGS - optimalizációs kapcsolók C és Fortran&lt;br /&gt;
NCE_FFLAGS - Fortran kapcsolók&lt;br /&gt;
NCE_CFLAGS - C kapcsolók&lt;br /&gt;
NCE_LDFLAGS - könyvtárak C és Fortran&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az NCE környezeti változó listáját az &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; paranccsal kérhetjük le.&lt;br /&gt;
&lt;br /&gt;
A budapesti gépen elérhető a PRACE környezet is, amely tartalmaz egy ajánlott kapcsoló és könyvtár összeállítást tartalmaz. A PRACE környezet betöltése:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load prace&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A PRACE környezet az AMD ACML matematikai könyvtárakat használja, amennyiben az Intel MKL-re van szükségünk, akkor a PRACE környezetet nem kell betölteni. A megfelelő MKL kapcsolókat az [http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor Intel Link Advisor] szerint kell beállítani, pl.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FFLAGS=-openmp -I$(MKLROOT)/include&lt;br /&gt;
CFLAGS=-openmp -I$(MKLROOT)/include&lt;br /&gt;
LDFLAGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \&lt;br /&gt;
  -Wl,--start-group \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_intel_thread.a \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_core.a \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_blacs_openmpi_lp64.a \&lt;br /&gt;
  -Wl,--end-group -lpthread -lm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Párhuzamos környezet ===&lt;br /&gt;
==== OpenMP ====&lt;br /&gt;
Az OpenMP paraméterket környezeti változókon keresztül kell beállítani. Az &amp;lt;code&amp;gt;openmp&amp;lt;/code&amp;gt; párhuzamos SLURM környezet az OpenMP szálak számát beállítja. Tovább környezeti változókat az [https://computing.llnl.gov/tutorials/openMP/#EnvironmentVariables LLNL OpenMP oldalán] találtok.&lt;br /&gt;
&lt;br /&gt;
==== MPI ====&lt;br /&gt;
Az alapértelmezett MPI könyvtár az Open MPI. Ajánlott optimalizációs kapcsolók (CPU binding):&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
--bind-to-core --bycore&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SGI ICE Debrecen ==&lt;br /&gt;
Az alapértelmezett MPI könyvtár az SGI MPT. A felhasználói programokat ehhez a könyvtárhoz érdemes fordítani. Ajánlott fordítás opciók:&lt;br /&gt;
&lt;br /&gt;
=== MPI fordítási opciók ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    CFLAGS=-O2 -xSSE4.2&lt;br /&gt;
    FFLAGS=-O2 -xSSE4.2&lt;br /&gt;
    LDFLAGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \&lt;br /&gt;
      -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_sequential.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_core.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_blacs_sgimpt_lp64.a -Wl,--end-group \&lt;br /&gt;
      -lpthread -lm&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MPI és OpenMP fordítási opciók ===&lt;br /&gt;
Ebben az esetben az MKL műveletek OpenMP szálasíthatók, a program hibrid MPI és OMP módban is tud üzemelni.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    CFLAGS=-O2 -xSSE4.2 -openmp&lt;br /&gt;
    FFLAGS=-O2 -xSSE4.2 -openmp&lt;br /&gt;
    LDFALGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \&lt;br /&gt;
      -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_intel_thread.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_core.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_blacs_sgimpt_lp64.a -Wl,--end-group \&lt;br /&gt;
      -liomp5 -lpthread -lm -openmp&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ARC köztesréteg ==&lt;br /&gt;
Ez a NorduGrid közösség által fejlesztett Grid köztesréteg. Részletes dokumentációkért [http://www.nordugrid.org/documents ezt a weboldalt] érdemes felkeresni.&lt;br /&gt;
&lt;br /&gt;
=== Miért is használjuk?! ===&lt;br /&gt;
* Jobb terhelés elosztást tesz lehetővé a szuperszámítógépek között&lt;br /&gt;
* A jobok azon a gépen fognak elindulni, ami a legmegfelelőbb a számára&lt;br /&gt;
* Egy nagy egységgé kapcsolja össze a szuperszámítógépeket&lt;br /&gt;
* Szabványos webservice interfésszel ([https://www.ogf.org/documents/GFD.108.pdf OGSA-BES], [https://www.ogf.org/documents/GFD.114.pdf HPC Basic Profile]) rendelkezik. Ezáltal könnyen lehet integrálni más rendszerekkel&lt;br /&gt;
* Nagyon sok operációs rendszert támogat&lt;br /&gt;
* A saját számítógépünkről tudjuk kezelni a szuperszámítógépes jobokat&lt;br /&gt;
* A [http://pulse.fgi.csc.fi/gridrer/htdocs/index.phtml futás idejű környezetek használatával] a megfelelő módon lefordított alkalmazást tudjuk használni és nem kell észben tartani, hogy éppen melyik szuperszámítógépen van telepítve a program&lt;br /&gt;
&lt;br /&gt;
=== Grid tanúsítvány igénylése ===&lt;br /&gt;
Első lépésként szükségünk lesz egy '''Grides X.509 tanúsítványra''', amivel az ARC klienseket használni tudjuk. A [https://portal.hpc.niif.hu HPC portálon] keresztül lehetőségünk van igényelni egy 2 hétig érvényes SLCS tanúsítványt. A személyes adatok menüpontra kell kattintani és az oldal végén lesz az igénylő felület. '''Fontos: legalább egy HPC projekt tagsággal rendelkeznünk kell a HPC portálon. ''' Itt található az a letölthető UNIX script is, ami minden szükséges beállítást elvégez a számunkra: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           &lt;br /&gt;
 $ chmod +x slcs_unix_install.sh &lt;br /&gt;
 $ ./slcs_unix_install.sh &lt;br /&gt;
 $HOME/.globus/usercert.pem and $HOME/.globus/userkey.pem installed&lt;br /&gt;
 NIIF HPC SLCS Root CA installed: $HOME/.globus/certificates/SLCSCA.pem&lt;br /&gt;
 Default ARC client configuration created: $HOME/.arc/client.conf&lt;br /&gt;
 NIIF Root CA 2 installed: $HOME/.globus/certificates/NIIFCA.pem&lt;br /&gt;
 $ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Az SLCS másik nagy előnye az egyszerűsített igénylésen kívül az, hogy 1 órán belül az összes szuperszámítógépen automatikusan engedélyezve lesz. Viszont ha nem szeretnénk minden második héten új X.509-es tanúsítványt igényelni, akkor lehetőség van arra is, hogy 1 évig érvényes [https://www.igtf.net IGTF] tanúsítványt igényeljünk az NIIF Intézettől [http://www.ca.niif.hu/hu/igenyles ezen az oldal keresztül]. Ebben az esetben a [mailto:hpc-support@niif.hu] címre kell elküldenünk az IGTF-es tanúsítványunk publikus részét és meg kell adnunk, hogy melyik témaszámunkhoz legyen majd rendelve a szuperszámítógépeken.&lt;br /&gt;
&lt;br /&gt;
=== ARC kliensek használatba vétele ===&lt;br /&gt;
==== Telepítés ====&lt;br /&gt;
A csomagok telepítéséhez az itt leírt repo-kat lehet használni: http://download.nordugrid.org/repos-15.03.html&lt;br /&gt;
'''Fontos''': 5.0-ás ARC verziót telepítsük.&lt;br /&gt;
&lt;br /&gt;
Debian alapú rendszerek esetén:  &lt;br /&gt;
  apt-get install nordugrid-arc-client  &lt;br /&gt;
&lt;br /&gt;
Redhat alapú rendszerek esetén:  &lt;br /&gt;
  yum install nordugrid-arc-client&lt;br /&gt;
&lt;br /&gt;
OSX csomag telepítése [http://brew.sh brew] segítségével:&lt;br /&gt;
  brew install nordugrid-arc&lt;br /&gt;
&lt;br /&gt;
Ha nem találtunk megfelelő csomagot, akkor [http://download.nordugrid.org/packages/nordugrid-arc/releases/5.0.0/src/nordugrid-arc-5.0.0.tar.gz innen] le tudjuk tölteni a forráskódját és le tudjuk fordítani.&lt;br /&gt;
&lt;br /&gt;
==== Konfigurálás ====&lt;br /&gt;
$HOME/.arc/client.conf:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [common]&lt;br /&gt;
            &lt;br /&gt;
 [computing/budapest] &lt;br /&gt;
 url=https://login.budapest.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
 &lt;br /&gt;
 [computing/szeged]&lt;br /&gt;
 url=https://login.szeged.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
 &lt;br /&gt;
 [computing/debrecen]&lt;br /&gt;
 url=https://login.debrecen.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
 &lt;br /&gt;
 [computing/pecs]&lt;br /&gt;
 url=https://login.pecs.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
  &lt;br /&gt;
 # FastestQueue – ranks targets according to their queue length&lt;br /&gt;
 brokername=FastestQueue&lt;br /&gt;
 &lt;br /&gt;
 # Random – ranks targets randomly&lt;br /&gt;
 #brokername=Random&lt;br /&gt;
 &lt;br /&gt;
 # Data – ranks targets according the amount of megabytes of the requested input files that are already&lt;br /&gt;
 # in the computing resources cache. &lt;br /&gt;
 #brokername=Data&lt;br /&gt;
 &lt;br /&gt;
 # PythonBroker:&amp;lt;module&amp;gt;.&amp;lt;class&amp;gt;[:arguments] – ranks targets using any user-supplied custom&lt;br /&gt;
 # Python broker module, optionally with broker arguments. Such module can reside anywhere in&lt;br /&gt;
 # user’s PYTHONPATH&lt;br /&gt;
 #brokername=PythonBroker&lt;br /&gt;
 &lt;br /&gt;
 [alias]&lt;br /&gt;
 pecs=computing:ARC1:https://login.pecs.hpc.niif.hu:60000/arex&lt;br /&gt;
 szeged=computing:ARC1:https://login.szeged.hpc.niif.hu:60000/arex&lt;br /&gt;
 debrecen=computing:ARC1:https://login.debrecen.hpc.niif.hu:60000/arex&lt;br /&gt;
 budapest=computing:ARC1:https://login.budapest.hpc.niif.hu:60000/arex&lt;br /&gt;
 hp=budapest szeged&lt;br /&gt;
 sgi=pecs debrecen   &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Érdemes beállítani, hogy alapértelmezés szerint a FastestQueue brókert használja, ezáltal mindig arra a szuperszámítógépre fogja küldeni a jobokat, ahol a legkevesebb a várakozó jobok száma. A konfigurációs fájl részletes dokumentációját és az ARC kliensek leírásait [http://www.nordugrid.org/documents/arc-ui.pdf itt lehet] megnézni.&lt;br /&gt;
&lt;br /&gt;
=== Grid proxy készítése ===&lt;br /&gt;
&lt;br /&gt;
Ha már telepítettük a tanúsítványunkat és az ARC klienseket akkor a következő lépés az, hogy egy proxy tanúsítványt kell készítenünk, ami alapértelmezés szerint 12 óráig érvényes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ arcproxy &lt;br /&gt;
 Enter pass phrase for private key:&lt;br /&gt;
 Your identity: /C=HU/O=NIIF/OU=SLCS/L=hpcteszt/CN=joe&lt;br /&gt;
 Proxy generation succeeded&lt;br /&gt;
 Your proxy is valid until: 2015-03-30 05:01:09&lt;br /&gt;
 $    &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
Tesztelési célból ezeket a parancsokat érdemes kipróbálni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ arcinfo -c szeged  &lt;br /&gt;
 $ arcinfo -c hp -l&lt;br /&gt;
 $ arcinfo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid job készítése ===&lt;br /&gt;
A jobok leírására több formátumot is használhatunk: [https://www.ogf.org/documents/GFD.56.pdf JSDL], vagy [http://www.nordugrid.org/documents/xrsl.pdf xRSL]. Így adjuk meg, hogy a jobunknak mire van szüksége. Itt egy példa job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
 $ cat job.xrsl &lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 (executable=&amp;quot;matlab.sh&amp;quot;)&lt;br /&gt;
 (arguments=&amp;quot;matlab.m&amp;quot;)&lt;br /&gt;
 (stdout=&amp;quot;stdout.txt&amp;quot;)&lt;br /&gt;
 (stderr=&amp;quot;stderr.txt&amp;quot;)&lt;br /&gt;
 (jobname=&amp;quot;Matlab test&amp;quot;)&lt;br /&gt;
 (inputFiles=&lt;br /&gt;
 (&amp;quot;matlab.m&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
 )&lt;br /&gt;
 (memory&amp;gt;=&amp;quot;1000&amp;quot;)&lt;br /&gt;
 (gmlog=&amp;quot;gm.log&amp;quot;)&lt;br /&gt;
 (wallTime=&amp;quot;240&amp;quot;)&lt;br /&gt;
 (runTimeEnvironment=&amp;quot;APPS/MATH/MATLAB-7.13&amp;quot;)  &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cat matlab.sh &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo&lt;br /&gt;
 echo &amp;quot;Compute node: &amp;quot; `/bin/hostname -f`&lt;br /&gt;
 echo&lt;br /&gt;
 matlab -nodisplay &amp;lt; $1&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cat matlab.m&lt;br /&gt;
 2+3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennél a példánál a '''APPS/MATH/MATLAB-7.13''' futásidejű környezetet kértük, ezáltal ez a job csak azon a szuperszámítógépen fog elindulni, ahol ez telepítve van. Továbbá azt kértük még, hogy 240 percig futhasson és legalább 1000 MByte memória rendelkezésre álljon.&lt;br /&gt;
&lt;br /&gt;
Az '''arcinfo -l''' paranccsal tudjuk megnézni, hogy a szuperszámítógépeken milyen futás idejű környezetek (runtime environment-ek) vannak telepítve. Ha szeretnénk egy új környezet beállíttatni, akkor [mailto:hpc-support@niif.hu ide] kell levelet küldeni.&lt;br /&gt;
&lt;br /&gt;
==== OpenMP példa ====&lt;br /&gt;
&lt;br /&gt;
Job elkészítése:&lt;br /&gt;
&amp;lt;code&amp;gt;        &lt;br /&gt;
 $ cat job-openmp.xrsl &lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 (executable=&amp;quot;omp_mm&amp;quot;)&lt;br /&gt;
 (stdout=&amp;quot;stdout.txt&amp;quot;)&lt;br /&gt;
 (stderr=&amp;quot;stderr.txt&amp;quot;)&lt;br /&gt;
 (jobname=&amp;quot;OpenMP test&amp;quot;)&lt;br /&gt;
 (queue=&amp;quot;test&amp;quot;)&lt;br /&gt;
 (executables=&amp;quot;omp_mm&amp;quot;)&lt;br /&gt;
 (count=&amp;quot;10&amp;quot;)&lt;br /&gt;
 (countpernode=&amp;quot;10&amp;quot;)&lt;br /&gt;
 (environment=(&amp;quot;OMP_NUM_THREADS&amp;quot; &amp;quot;10&amp;quot;))&lt;br /&gt;
 (queue=&amp;quot;test&amp;quot;)&lt;br /&gt;
 (inputFiles=&lt;br /&gt;
    (&amp;quot;omp_mm&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
 )&lt;br /&gt;
 (memory&amp;gt;=&amp;quot;2600&amp;quot;)&lt;br /&gt;
 (gmlog=&amp;quot;gm.log&amp;quot;)&lt;br /&gt;
 (wallTime=&amp;quot;20&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Job elküldése:&lt;br /&gt;
&lt;br /&gt;
 $ arcsub job-openmp.xrsl&lt;br /&gt;
 Job submitted with jobid: https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
&lt;br /&gt;
Job állapotának a lekérdezése:&lt;br /&gt;
&lt;br /&gt;
 $ arcstat https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 Job: https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
  Name: OpenMP test&lt;br /&gt;
  State: Finished&lt;br /&gt;
  Exit Code: 0&lt;br /&gt;
 &lt;br /&gt;
 Status of 1 jobs was queried, 1 jobs returned information&lt;br /&gt;
&lt;br /&gt;
Job letöltése:&lt;br /&gt;
&lt;br /&gt;
 $ arcget https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 Results stored at: cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 Jobs processed: 1, successfully retrieved: 1, successfully cleaned: 1&lt;br /&gt;
 zion:~ joe $ cd cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $ ls -l&lt;br /&gt;
 total 16&lt;br /&gt;
 drwx------  12 joe  staff   408 Mar 29 21:24 gm.log&lt;br /&gt;
 -rw-------   1 joe  staff     0 Mar 29 21:24 stderr.txt&lt;br /&gt;
 -rw-------   1 joe  staff  6362 Mar 29 21:24 stdout.txt&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $&lt;br /&gt;
&lt;br /&gt;
Adatok ellenőrzése:&lt;br /&gt;
&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $ head stdout.txt &lt;br /&gt;
 Starting matrix multiple example with 10 threads&lt;br /&gt;
 Initializing matrices...&lt;br /&gt;
 Thread 0 starting matrix multiply...&lt;br /&gt;
 Thread=0 did row=0&lt;br /&gt;
 Thread 9 starting matrix multiply...&lt;br /&gt;
 Thread 6 starting matrix multiply...&lt;br /&gt;
 Thread=0 did row=1&lt;br /&gt;
 Thread 5 starting matrix multiply...&lt;br /&gt;
 Thread=5 did row=50&lt;br /&gt;
 Thread=5 did row=51&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe$           &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== MPI példa ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cat job-mpi.xrsl &lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 (executable=&amp;quot;mpi.sh&amp;quot;)&lt;br /&gt;
 (stdout=&amp;quot;stdout.txt&amp;quot;)&lt;br /&gt;
 (stderr=&amp;quot;stderr.txt&amp;quot;)&lt;br /&gt;
 (jobname=&amp;quot;MPI test&amp;quot;)&lt;br /&gt;
 (executables=&amp;quot;connectivity&amp;quot; &amp;quot;mpi.sh&amp;quot;)&lt;br /&gt;
 (count=&amp;quot;10&amp;quot;)&lt;br /&gt;
 (inputFiles=&lt;br /&gt;
     (&amp;quot;connectivity&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
     (&amp;quot;mpi.sh&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
 )&lt;br /&gt;
 (memory&amp;gt;=&amp;quot;2600&amp;quot;)&lt;br /&gt;
 (gmlog=&amp;quot;gm.log&amp;quot;)&lt;br /&gt;
 (wallTime=&amp;quot;20&amp;quot;)&lt;br /&gt;
 (runTimeEnvironment&amp;gt;=ENV/GCC/MPI/OPENMPI-1.4.3)  &lt;br /&gt;
&lt;br /&gt;
 $ cat mpi.sh &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mpirun -np 10 ./connectivity -v   &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Grafikus felületű ARC kliens ====&lt;br /&gt;
Parancssoros klienseken kívül használni lehet még grafikus klienseket is. [http://sourceforge.net/projects/arc-gui-clients/?source=directory Innen tudják] letölteni őket.&lt;br /&gt;
&lt;br /&gt;
[[Category: HPC]]&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=NIIF_szupersz%C3%A1m%C3%ADt%C3%B3g%C3%A9pek_haszn%C3%A1lata&amp;diff=3366</id>
		<title>NIIF szuperszámítógépek használata</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=NIIF_szupersz%C3%A1m%C3%ADt%C3%B3g%C3%A9pek_haszn%C3%A1lata&amp;diff=3366"/>
				<updated>2015-10-07T05:21:48Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Az NIIF Szuperszámítógépek összehasonlítása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== A szuperszámítógépekről ==&lt;br /&gt;
Az NIIF Intézet szuperszámítógép szolgáltatása tudományos számítási feladatok futtatására, valamint tudományos célú adattárolásra szolgál. A jelenleg integrált szuperszámítógép-rendszer komponensei négy helyszínen találhatók:&lt;br /&gt;
&lt;br /&gt;
* Debreceni Egyetem&lt;br /&gt;
* NIIFI központ&lt;br /&gt;
* Pécsi Tudományegyetem&lt;br /&gt;
* Szegedi Tudományegyetem&lt;br /&gt;
&lt;br /&gt;
A tudományos számítási feladatok különböző típusainak minél szélesebb körű lefedettsége érdekében az egyes helyszíneken különböző felépítésű gépek találhatók: egy helyszínen SMP/ccNUMA, három helyszínen pedig &amp;quot;fat-node&amp;quot; fürtözött megoldás. Az alrendszereket az NIIFI nagy sávszélességű, alacsony késleltetésű HBONE+ adathálózatán keresztül, ARC grid köztesréteg, valamint harmonizált felhasználói azonosítás segítségével integráljuk egységes elvek mentén elérhető számítási egységgé. Az erőforrás jelenleg Magyarország legnagyobb tudományos számítás céljára felhasználható erőforrása, amely összesen 50 billió lebegőpontos művelet elvégzését teszi lehetővé másodpercenként.&lt;br /&gt;
A szuperszámítógép-rendszert az NIIFI üzemelteti és fejleszti. A rendszerhez regisztrációt követően, minden olyan személy vagy kutatócsoport hozzáférhet, amely tagintézményi szerződéses kapcsolatban áll az NIIF Intézettel.&lt;br /&gt;
A gépen megtalálhatók és futtathatók a legkorszerűbb fejlesztőeszközök és tudományos számításra szolgáló alkalmazások, valamint, az NIIF adatközpontban elhelyezett alrendszer kivételével, valamennyi alrendszer kiegészül a számítási feladatok eredményeit megjelenítő vizualizációs eszközökkel.&lt;br /&gt;
&lt;br /&gt;
=== Köszönetnyilvánítás ===&lt;br /&gt;
Tudományos publikációkban a következő köszönetnyilvánítást javasoljuk:&lt;br /&gt;
&lt;br /&gt;
'''We acknowledge [PRACE/NIIF] for awarding us access to resource based in Hungary at [Budapest/Debrecen/Pécs/Szeged].'''&lt;br /&gt;
&lt;br /&gt;
Where technical support has been received the following additional text should also be used:&lt;br /&gt;
&lt;br /&gt;
'''The support of [name of person/people] from NIIF Institute, Hungary to the technical work is gratefully acknowledged.'''&lt;br /&gt;
&lt;br /&gt;
== Hozzáférés a szuperszámítógépekhez == &lt;br /&gt;
A szuperszámítógépekhez kulcsos SSH használatával lehet hozzáférni. Ajánlott UTF-8 képes terminált használ az ékezetes betűk megjeelenítése érdekében. PUTTY terminál esetén a ''Window/Translation'' beállítás alatt a character set-et kell UTF-8-ra állítani.&lt;br /&gt;
&lt;br /&gt;
=== SSH belépés ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ssh USER@login.SITE.hpc.niif.hu&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;USER&amp;lt;/code&amp;gt; a felhasználónév, a &amp;lt;code&amp;gt;SITE&amp;lt;/code&amp;gt; pedig a belépéshez használt szupergép neve: '''budapest''', '''debrecen''', '''pecs''', '''szeged'''. Nem alapértelmezett kulcs használata a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval lehetséges.&lt;br /&gt;
&lt;br /&gt;
Belépés a szegedi gépre alice felhasználóként, az SSH privát kulcsot a &amp;lt;code&amp;gt;keys/szeged&amp;lt;/code&amp;gt; fájlból olvasva:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ssh -i keys/szeged alice@login.szeged.hpc.niif.hu&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fájl másolás SCP segítségével ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scp USER@login.SITE.hpc.niif.hu:FILE FILE&lt;br /&gt;
scp FILE USER@login.SITE.hpc.niif.hu:FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A szegedi gép HOME könyvtárában lévő &amp;lt;code&amp;gt;stuff.tgz&amp;lt;/code&amp;gt; fájl letöltése a helyi gép aktuális könyvtárába:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
scp bob@login.szeged.hpc.niif.hu:stuff.tgz .&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatátvitel rsync segítségével ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához az SSH-t és az rsync-et együtt kell használni. Fel- és leszinkronizálás:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -a -e ssh DIRECTORY USER@login.budapest.hpc.niif.hu:/home/USER&lt;br /&gt;
rsync -a -e ssh USER@login.budapest.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A budapesti gépre szinkronizálom a helyi &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; könyvtár tartalmát (nem az alapértelmezett kulcsot használva) és a másolás folyamatát nyomonkövetem:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
rsync -a -h --progress -e &amp;quot;ssh -i keys/budapest&amp;quot; ./src alice@login.budapest.hpc.niif.hu:/home/alice&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
A szupergépek elsődleges felhasználói felülete a Bash shell. Az automatikusan betöltődő NIIF Common Environment (NCE) a PS1 promptot a következőképp állítja be:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                    |&lt;br /&gt;
    BUDAPEST[login] ~ (0)$&lt;br /&gt;
        |      |       |&lt;br /&gt;
   HPC állomás |       |&lt;br /&gt;
         rövid gép név |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
A szupergépekre telepített alkalmazásokat az ún. modul rendszer segítségével lehet használ. A modul rendszer lehetővé teszi egy adott alkalmazás több verziójának használatát is. Feladata a shell környezeti változók helyes beállítása. Normál felhasználók számára az alapértelmezett modul környezet automatikusan betöltődik. Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load APPS&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;APPS&amp;lt;/code&amp;gt; a betöltendő modulok space-szel elválasztott listája.&lt;br /&gt;
&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
==== Példa ====&lt;br /&gt;
A Maple, netcfd és az R csomagok betöltése:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load maple netcdf R&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához használjuk a [http://www.techrepublic.com/blog/linux-and-open-source/learn-to-use-extended-file-attributes-in-linux-to-boost-security/](fájlrendszer ACL-eket). Az ACL-ekkel a hagyományos unix engedélyeken felül finoman szabályozhatjuk a fájlok és könyvtárak hozzáférési engedélyeit. A következő példában a &amp;lt;code&amp;gt;$HOME/Shared&amp;lt;/code&amp;gt; könyvtárat osztjuk egy munkatárs számára:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# a home könyvtár beállítása&lt;br /&gt;
# user1 user számára belépsi engedély: u:user1:x &lt;br /&gt;
$ setfacl -m u:user1:x $HOME&lt;br /&gt;
$ getfacl $HOME&lt;br /&gt;
# file: user2/user2&lt;br /&gt;
# owner: user2&lt;br /&gt;
# group: user2&lt;br /&gt;
user::rwx&lt;br /&gt;
user:user1:--x&lt;br /&gt;
group::r-x&lt;br /&gt;
mask::r-x&lt;br /&gt;
other::---&lt;br /&gt;
# Shared könyvtár megosztása&lt;br /&gt;
# user1 számára minden unix jog&lt;br /&gt;
$ cd&lt;br /&gt;
$ mkdir Shared&lt;br /&gt;
$ setfacl -m u:user1:rwx $HOME/Shared&lt;br /&gt;
$ getfacl Shared&lt;br /&gt;
# file: Shared&lt;br /&gt;
# owner: user2&lt;br /&gt;
# group: user2&lt;br /&gt;
user::rwx&lt;br /&gt;
user:user1:rwx&lt;br /&gt;
group::rwx&lt;br /&gt;
mask::rwx&lt;br /&gt;
other::r-x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Python csomag telepítése a saját home könyvtárunkba ==&lt;br /&gt;
Itt egy példa arra, hogy hogyan tudjuk feltelepíteni a mercurial python csomagot.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module load python &lt;br /&gt;
$ pip install --user mercurial&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login és vserver node-jai osztott home könyvtárral vannak összekötve. Fontos, hogy az osztott könyvtárat a számítási node-ok nem érik el, ezért az osztott home-ot csak tárolásra ill. megosztásra lehet használni. Az osztott terület Debrecenben van, ezért ott a leggyorsabb. A másik három helyen lassabb a hozzáférés a nagyobb távolság miatt. A programok kimenetét továbbra is a lokális scratch vagy home könyvtárba kell írni. Amelyik login node-on használni szeretnénk az osztott home könyvtárat, ott adjuk ki a következő parancsokat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd; mkdir shared; ln -s /mnt/fhgfs/home/$USER shared/$USER &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ezek után a &amp;lt;code&amp;gt;$HOME/shared/$USER&amp;lt;/code&amp;gt; könyvtárba másoljuk a megosztott fájlokat. Ez a könyvtár a következő környezeti változóba is exportálódik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$NCE_SHARED &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Biztonsági mentés, adatmegosztás ===&lt;br /&gt;
A következő példa mentést végez a &amp;lt;code&amp;gt;$HOME/data&amp;lt;/code&amp;gt; könyvtárról:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP $HOME/data $NCE_SHARED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Törölje a fájlokat a mentésben is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/data $NCE_SHARED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
Weboldal: http://slurm.schedmd.com&lt;br /&gt;
&lt;br /&gt;
A szupergépeken CPU óra (gépidő) alapú ütemezés működik. Ez azt jelenti, hogy a fogyasztási időtartamra (hónap) az elérhető maximális gépidő fel van osztva a felhasználók között. Minden UNIX felhasználó egy vagy több számlához (''Account'') tartozhat. Az ütemező számla egy adott HPC-s projekthez tartozik, hasonló a UNIX csoporthoz. Szupergépes feladatokat csak az egyes számlák terhére lehet indítani. A CPU óra az elhasznált idő (''Walltime'') és az igényelt processzorok számának szorzata. Például a budapesti gépen 2 db node (48 processzor mag) foglalása 30 percre 48 * 30 = 1440 CPU perc = 24 CPU óra. A CPU órát az ütemező a futás kezdetétől a befejezésig méri.&lt;br /&gt;
&lt;br /&gt;
'''Rendkívül fontos arról meggyőződni, hogy a futtatandó alkalmazás rendesen kihasználja-e a szupergépet. Egy üres vagy rosszul futó job hamar elhasználja a rendelkezésre álló gépidőt. Elfogyasztott gépidő esetén új jobokat már nem lehet indítani, és meg kell várni a számlázási időszak végét. A gépidő limitek (Account Limit) minden hónap elején jóváíródnak.'''&lt;br /&gt;
&lt;br /&gt;
Számláink állapotáról a következő paranccsal kapunk információt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A parancs a következő táblázatot jeleníti meg. A felhasználó két számlához (foobar,barfoo) is hozzáfér, futatthat a számla terhére. Saját magát megcsillagozva látja a listában. Bobbal mindkét számlán (Account oszlop) Alice is osztozik. A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyeik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még alérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
alice                0 |           foobar           0 |             0           0&lt;br /&gt;
bob *                0 |           foobar           0 |             0           0&lt;br /&gt;
&lt;br /&gt;
bob *                7 |           barfoo           7 |         1,000         993&lt;br /&gt;
alice                0 |           barfoo           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
Alice 2 nap 10 órára és 2 node-ra szeretne foglalást kérni, megnézi van-e elég gépidő a számláján:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N 2 -t 2-10:00:00&lt;br /&gt;
&lt;br /&gt;
Estimated CPU hours: 2784&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Sajnos ebben a hónapban erre már nem telik.&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csőkkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
Az ütemezőben 3 feladat van. Az első egy arrayjob, éppen erőforrásra vár (PENDING). A második egy MPI job, ami 4 node-on fut már 25 perce (TIME). A harmadik egy egy node-os OMP futtatás, éppen most indult el. A feladatik nevei (NAME) egyénileg adható meg. Rövid, informatív neveket érdemes adni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
squeue -l&lt;br /&gt;
&lt;br /&gt;
Wed Oct 16 08:30:07 2013              &lt;br /&gt;
     JOBID PARTITION     NAME     USER    STATE       TIME TIMELIMIT  NODES NODELIST(REASON)&lt;br /&gt;
591_[1-96]    normal    array    alice  PENDING       0:00     30:00      1 (None)&lt;br /&gt;
       589    normal      mpi      bob  RUNNING      25:55   2:00:00      4 cn[05-08]&lt;br /&gt;
       590    normal      omp    alice  RUNNING       0:25   1:00:00      1 cn09&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a 2 node-os batch jobnak a jellemző memóriaterhelés a következő volt: kb. 10GB virtuális és 6.5GB RSS memóriát használt el node-onként.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory 430&lt;br /&gt;
&lt;br /&gt;
 MaxVMSize  MaxVMSizeNode  AveVMSize     MaxRSS MaxRSSNode     AveRSS&lt;br /&gt;
---------- -------------- ---------- ---------- ---------- ----------&lt;br /&gt;
10271792K           cn06  10271792K   6544524K       cn06   6544524K   &lt;br /&gt;
10085152K           cn07  10085152K   6538492K       cn07   6534876K &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU felhasználás ellenőrzése ====&lt;br /&gt;
Nagyon fontos meggyőződni arról, hogy az alkalmazás kihasználja-e a rendelkezésre álló gépidőt. Egy futó alkalmazás a következő paranccsal tudunk monitorozni:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sjobcheck JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez a job 4 node-on fut. A LOAD csoport a gép általános terheléséről ad információt és kb. a core-ok számával egyezik meg. A helyes felhasználásról a CPU csoport ad tájékoztatást. Ideális esetben a &amp;lt;code&amp;gt;User&amp;lt;/code&amp;gt; oszlop értékei 90 fölött vannak. Ez alatt valamilyen probléma lépett fel és a futást érdemes megszakítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hostname                     LOAD                       CPU              Gexec  &lt;br /&gt;
 CPUs (Procs/Total) [     1,     5, 15min] [  User,  Nice, System, Idle, Wio]&lt;br /&gt;
cn08    24 (   25/  529) [ 24.83, 24.84, 20.98] [  99.8,   0.0,   0.2,   0.0,   0.0] OFF&lt;br /&gt;
cn07    24 (   25/  529) [ 24.93, 24.88, 20.98] [  99.8,   0.0,   0.2,   0.0,   0.0] OFF&lt;br /&gt;
cn06    24 (   25/  529) [ 25.00, 24.90, 20.97] [  99.9,   0.0,   0.1,   0.0,   0.0] OFF&lt;br /&gt;
cn05    24 (   25/  544) [ 25.11, 24.96, 20.97] [  99.8,   0.0,   0.2,   0.0,   0.0] OFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=niif Start=2014-01-01&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
niif helyett a saját projektünk azonosítóját kell megadni.&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni. Az ütemezők összehasonlításáról és a Slurm-ban elérhető direktívákról a következő [http://slurm.schedmd.com/rosetta.pdf táblázat] ad bővebb tájékoztatást.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sbatch jobscript.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépeken két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt; sor. Utóbbi az éles számolásokra való, előbbi fejlesztés és tesztelés céljára használható. A teszt sorban összesen 1 node-ot, maximum fél órára lehet lefoglalni. Az alapértelmezett sor a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt;. A teszt partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
A memória a CPU-hoz hasonlóan korlátozott, foglalható erőforrás. A felhasználás mérése a memória / core alapon történik: 1 core óra, 2600 MB órának felel meg. Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. Budapesten és Szegeden a maximális memória/core 2600 MB.&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 24 órára ad fel 96 db soros jobot. A &amp;lt;code&amp;gt;#SBATCH --array=1-96&amp;lt;/code&amp;gt; direktíva jelzi, hogy tömbfeladatról van szó. Az alkalmazást az &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; paranccsal kell indítani. Ebben az esetben ez egy shell szkript.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&lt;br /&gt;
A következő példában a test sorban 3 egy szálon dutó programot indítunk el. A programok és az inputok lehetnek különbözőek. Fontos, hogy az utolsó parancsot nem kell a háttérben (&amp;amp;) indítani és a wait-tel kell befejezni a job szkriptet.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&lt;br /&gt;
Bob felhasználó a barfoo számla terhére 2 node-ot, 12 órára foglal le egy MPI job számára. Az egyes node-okon 24 MPI szálat fog elindítani. A program stdout kimenetét a &amp;lt;code&amp;gt;slurm.out&amp;lt;/code&amp;gt; fájlba irányítja (&amp;lt;code&amp;gt;#SBATCH -o&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=24&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI UV SMP (Pécs) ====&lt;br /&gt;
A pécsi gépen legalább 6 szálon működő jobok futtatása lehetságes. Az egyetlen elfogadott paraméter a szálak szám (`-n`), amelynek 6 többszörösének kell lenni. Ezen a gépen nincs teszt sor. Kérjük, hogy 48-nál kevesebb szálon futó programokat az UV-n ne futtassanak! Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
===== OMP Példa =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH -n 48&lt;br /&gt;
#SBATCH --time=03:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
/opt/nce/bin/numainfo&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_NTASKS ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== SGI MPT MPI Példa =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH -n 48&lt;br /&gt;
#SBATCH --time=03:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
/opt/nce/bin/numainfo&lt;br /&gt;
mpirun $SLURM_NTASKS ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Jobok monitorozása =====&lt;br /&gt;
CPU használat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smonitor -n &amp;lt;JOBID&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Memória használat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smonitor -m &amp;lt;JOBID&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ütemezés sor foglaltsága:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sinfo_uv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI MPT MPI feladatok (Debrecen) ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani. Az SGI MPT MPI paraméterezése kicsit más, mint az OpenMPI. '''Debrecen az SGI MPT az alpértelmezett MPI környezet!'''&lt;br /&gt;
&lt;br /&gt;
Bob felhasználó a barfoo számla terhére 2 node-ot, 12 órára foglal le egy MPI job számára. Az egyes node-okon 24 MPI szálat fog elindítani. A program stdout kimenetét a &amp;lt;code&amp;gt;slurm.out&amp;lt;/code&amp;gt; fájlba irányítja (&amp;lt;code&amp;gt;#SBATCH -o&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=12&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
source /opt/nce/bin/machines&lt;br /&gt;
export MPI_OPT=&amp;quot;${MACHINES} -np ${SLURM_NTASKS_PER_NODE}&amp;quot;&lt;br /&gt;
mpirun ${MPI_OPT} ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI PerfBoost egyéb MPI feladatokra (Debrecen) ====&lt;br /&gt;
Az SGI MPT lehetőséget ad arra, hogy nem MPT MPI-vel fordított MPI programok is használjunk. Ebben az esetben az MPI hívások MPT hívásokkal cserélődnek ki.&lt;br /&gt;
&lt;br /&gt;
Egy OpenMPI-re fordított program indítása:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=12&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
source /opt/nce/bin/machines&lt;br /&gt;
export MPI_OPT=&amp;quot;${MACHINES} -np ${SLURM_NTASKS_PER_NODE}&amp;quot;&lt;br /&gt;
mpirun ${MPI_OPT} perfboost -ompi ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU binding ====&lt;br /&gt;
Az MPI programok teljesítménye általában javítható a processzek CPU magokhoz kötésével. Ilyenkor a párhuzamos program szálait az operációs rendszer nem ütemezi a CPU magok között, ezért javulhat a memória lokalizáció (kevesebb cache miss). A kötés használata ajánlott. Tesztekkel meg kell győződni, hogy egy adott alkalmazás esetén melyik kötési stratégia adja a legjobb eredményt. A következő beállítások az OpenMPI környezetre vontakoznak. A kötésekről részletes információt a &amp;lt;code&amp;gt;--report-bindings&amp;lt;/code&amp;gt; MPI opcióval kaphatunk. Az indítási parancsok melett a részletes binding információ néhány sora is látható. Fontos, hogy az ütemező task binding-ját nem kell használni!&lt;br /&gt;
&lt;br /&gt;
===== Kötés CPU magonként =====&lt;br /&gt;
Ebben az esetben az MPI szálak (rank) sorban töltik fel a CPU magokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Indítási parancs: mpirun --bind-to-core --bycore&lt;br /&gt;
&lt;br /&gt;
[cn05:05493] MCW rank 0 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05493] MCW rank 1 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05493] MCW rank 2 bound to socket 0[core 2]: [. . B . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05493] MCW rank 3 bound to socket 0[core 3]: [. . . B . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Kötés CPU foglalat szerint =====&lt;br /&gt;
Ebben az esetben az MPI szálak váltakozva töltik fel a CPU-kat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Indítási parancs: mpirun --bind-to-core --bysocket&lt;br /&gt;
&lt;br /&gt;
[cn05:05659] MCW rank 0 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05659] MCW rank 1 bound to socket 1[core 0]: [. . . . . . . . . . . .][B . . . . . . . . . . .]&lt;br /&gt;
[cn05:05659] MCW rank 2 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05659] MCW rank 3 bound to socket 1[core 1]: [. . . . . . . . . . . .][. B . . . . . . . . . .]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Kötés node-ok szerint =====&lt;br /&gt;
Ebben az esetben az MPI szálak váltakozva töltik fel a node-okat. Lagalább 2 node foglalása szükséges.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Indítási parancs: mpirun --bind-to-core --bynode&lt;br /&gt;
&lt;br /&gt;
[cn05:05904] MCW rank 0 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05904] MCW rank 2 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn06:05969] MCW rank 1 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn06:05969] MCW rank 3 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=24&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 24 CPU-t rendeltunk, a 24 CPU-nak egy node-on kell lennie. A CPU-k számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 24 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=24&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 24 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 24 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 24 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=24&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Maple Grid feladatok ====&lt;br /&gt;
Maple-t az OMP feladatokhoz hasonlóan 1 node-on lehet futtatni. Használatához be kell tölteni a maple modult is. A Maple kliens-szerver üzemmódban működik ezért a Maple feladat futtatása előtt szükség van a grid szerver elindítására is (&amp;lt;code&amp;gt;${MAPLE}/toolbox/Grid/bin/startserver&amp;lt;/code&amp;gt;). Ez az alkalmazás licensz köteles, amit a jobszkriptben meg kell adni (&amp;lt;code&amp;gt;#SBATCH --licenses=maplegrid:1&amp;lt;/code&amp;gt;). A Maple feladat indátását a &amp;lt;code&amp;gt;${MAPLE}/toolbox/Grid/bin/joblauncher&amp;lt;/code&amp;gt; paranccsal kell elvégezni.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, 6 órára indítja el a Maple Grid alkalmazást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=maple&lt;br /&gt;
#SBATCH -N 1&lt;br /&gt;
#SBATCH --ntasks-per-node=24&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
#SBATCH --licenses=maplegrid:1&lt;br /&gt;
&lt;br /&gt;
module load maple&lt;br /&gt;
&lt;br /&gt;
${MAPLE}/toolbox/Grid/bin/startserver&lt;br /&gt;
${MAPLE}/toolbox/Grid/bin/joblauncher ${MAPLE}/toolbox/Grid/samples/Simple.mpl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Matlab feladatok ====&lt;br /&gt;
Ez az alkalmazás licensz köteles, amit a jobszkriptben meg kell adni (&amp;lt;code&amp;gt;#SBATCH --licenses=matlabdce:1,matlabdct:1,matlab:1&amp;lt;/code&amp;gt;). Összesen 96 darab &lt;br /&gt;
Distributed Computing Server, 13 darab Distributed Computing Toolbox és 13 Matlab licensz lett megvásárolva.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=&amp;quot;Matlab test job&amp;quot;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH --licenses=matlabdce:1,matlabdct:1,matlab:1&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
&lt;br /&gt;
matlab -nodisplay &amp;lt; job.m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPU-k használata ====&lt;br /&gt;
A szegedi szuperszámítógép rendelkezik 2db GPU kártyákkal is felszerelt compute node-dal. A GPU node-okban 2x6db Nvidia Tesla M2070-es kártya található. A GPU-s node-ok külön job sorban található (&amp;lt;code&amp;gt;--partition gpu&amp;lt;/code&amp;gt;). A GPU-k számát a &amp;lt;code&amp;gt;--gres gpu:#&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, 4GPU-n, 6 órára indítja a következő jobot.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=GPU&lt;br /&gt;
#SBATCH --partition gpu&lt;br /&gt;
#SBATCH --gres gpu:4&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
&lt;br /&gt;
$PWD/gpu_burnout 3600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások beállításai ==&lt;br /&gt;
=== Saját programok telepítése ===&lt;br /&gt;
A saját fordítású programokat a HOME könyvtáradba kell telepíteni, ezt általában a fordítás előtti lefuttatott configure szkripttel lehet beállítani. Az adott program a $HOME/local alá fog települni. A PATH és egyéb környezeti változókat értelem szerűen kell beállítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME&lt;br /&gt;
mkdir local&lt;br /&gt;
(belépés az alklamazás könyvtárába)&lt;br /&gt;
./configure --prefix=$HOME/local&lt;br /&gt;
make; make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A frontend gépeken felhasználói limitek vannak beállítva. Ezekről a következő paranccsal kapunk információt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ulimit -a&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A limitek a compute node-okon és az UV-n nincsenek beállítva.&lt;br /&gt;
&lt;br /&gt;
=== Java JVM heap méret ===&lt;br /&gt;
A memória limit miatt a Java virtuális gépen és fordító nem jól működik, ezért meg kell adni a maximális heap méretét:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
java -Xmx512m -version&lt;br /&gt;
javac -J-Xmx512m -version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
vagy exportálni kell a következő változót:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export _JAVA_OPTIONS=&amp;quot;-Xms1g -Xmx1g&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python Numpy és Scipy használat ===&lt;br /&gt;
A numerikus Python használatához a következő csomagokat kell betölteni:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load python numpy scipy&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A numpy és a scipy csomagok az Intel MKL OpenMP gyorsítását használják. A jobokat az &amp;lt;code&amp;gt;openmp&amp;lt;/code&amp;gt; párhuzamos környezetbe kell elküldeni.&lt;br /&gt;
&lt;br /&gt;
== HP Budapest ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fordítás ===&lt;br /&gt;
Elérhető fordítók listája&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Forító&lt;br /&gt;
! Soros&lt;br /&gt;
! Párhuzamos&lt;br /&gt;
|-&lt;br /&gt;
| Intel Fortran&lt;br /&gt;
| ifort&lt;br /&gt;
| mpiif90&lt;br /&gt;
|-&lt;br /&gt;
| Intel C&lt;br /&gt;
| icc&lt;br /&gt;
| mpiicc&lt;br /&gt;
|-&lt;br /&gt;
| GNU Fortran&lt;br /&gt;
| gfotran&lt;br /&gt;
| mpif90&lt;br /&gt;
|-&lt;br /&gt;
| GNU C&lt;br /&gt;
| gcc&lt;br /&gt;
| mpicc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A fordítási paramétereket az NCE környezeti változókból érdemes kiolvasni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NCE_OFLAGS - optimalizációs kapcsolók C és Fortran&lt;br /&gt;
NCE_FFLAGS - Fortran kapcsolók&lt;br /&gt;
NCE_CFLAGS - C kapcsolók&lt;br /&gt;
NCE_LDFLAGS - könyvtárak C és Fortran&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az NCE környezeti változó listáját az &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; paranccsal kérhetjük le.&lt;br /&gt;
&lt;br /&gt;
A budapesti gépen elérhető a PRACE környezet is, amely tartalmaz egy ajánlott kapcsoló és könyvtár összeállítást tartalmaz. A PRACE környezet betöltése:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load prace&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A PRACE környezet az AMD ACML matematikai könyvtárakat használja, amennyiben az Intel MKL-re van szükségünk, akkor a PRACE környezetet nem kell betölteni. A megfelelő MKL kapcsolókat az [http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor Intel Link Advisor] szerint kell beállítani, pl.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FFLAGS=-openmp -I$(MKLROOT)/include&lt;br /&gt;
CFLAGS=-openmp -I$(MKLROOT)/include&lt;br /&gt;
LDFLAGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \&lt;br /&gt;
  -Wl,--start-group \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_intel_thread.a \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_core.a \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_blacs_openmpi_lp64.a \&lt;br /&gt;
  -Wl,--end-group -lpthread -lm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Párhuzamos környezet ===&lt;br /&gt;
==== OpenMP ====&lt;br /&gt;
Az OpenMP paraméterket környezeti változókon keresztül kell beállítani. Az &amp;lt;code&amp;gt;openmp&amp;lt;/code&amp;gt; párhuzamos SLURM környezet az OpenMP szálak számát beállítja. Tovább környezeti változókat az [https://computing.llnl.gov/tutorials/openMP/#EnvironmentVariables LLNL OpenMP oldalán] találtok.&lt;br /&gt;
&lt;br /&gt;
==== MPI ====&lt;br /&gt;
Az alapértelmezett MPI könyvtár az Open MPI. Ajánlott optimalizációs kapcsolók (CPU binding):&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
--bind-to-core --bycore&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SGI ICE Debrecen ==&lt;br /&gt;
Az alapértelmezett MPI könyvtár az SGI MPT. A felhasználói programokat ehhez a könyvtárhoz érdemes fordítani. Ajánlott fordítás opciók:&lt;br /&gt;
&lt;br /&gt;
=== MPI fordítási opciók ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    CFLAGS=-O2 -xSSE4.2&lt;br /&gt;
    FFLAGS=-O2 -xSSE4.2&lt;br /&gt;
    LDFLAGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \&lt;br /&gt;
      -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_sequential.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_core.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_blacs_sgimpt_lp64.a -Wl,--end-group \&lt;br /&gt;
      -lpthread -lm&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MPI és OpenMP fordítási opciók ===&lt;br /&gt;
Ebben az esetben az MKL műveletek OpenMP szálasíthatók, a program hibrid MPI és OMP módban is tud üzemelni.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    CFLAGS=-O2 -xSSE4.2 -openmp&lt;br /&gt;
    FFLAGS=-O2 -xSSE4.2 -openmp&lt;br /&gt;
    LDFALGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \&lt;br /&gt;
      -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_intel_thread.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_core.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_blacs_sgimpt_lp64.a -Wl,--end-group \&lt;br /&gt;
      -liomp5 -lpthread -lm -openmp&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ARC köztesréteg ==&lt;br /&gt;
Ez a NorduGrid közösség által fejlesztett Grid köztesréteg. Részletes dokumentációkért [http://www.nordugrid.org/documents ezt a weboldalt] érdemes felkeresni.&lt;br /&gt;
&lt;br /&gt;
=== Miért is használjuk?! ===&lt;br /&gt;
* Jobb terhelés elosztást tesz lehetővé a szuperszámítógépek között&lt;br /&gt;
* A jobok azon a gépen fognak elindulni, ami a legmegfelelőbb a számára&lt;br /&gt;
* Egy nagy egységgé kapcsolja össze a szuperszámítógépeket&lt;br /&gt;
* Szabványos webservice interfésszel ([https://www.ogf.org/documents/GFD.108.pdf OGSA-BES], [https://www.ogf.org/documents/GFD.114.pdf HPC Basic Profile]) rendelkezik. Ezáltal könnyen lehet integrálni más rendszerekkel&lt;br /&gt;
* Nagyon sok operációs rendszert támogat&lt;br /&gt;
* A saját számítógépünkről tudjuk kezelni a szuperszámítógépes jobokat&lt;br /&gt;
* A [http://pulse.fgi.csc.fi/gridrer/htdocs/index.phtml futás idejű környezetek használatával] a megfelelő módon lefordított alkalmazást tudjuk használni és nem kell észben tartani, hogy éppen melyik szuperszámítógépen van telepítve a program&lt;br /&gt;
&lt;br /&gt;
=== Grid tanúsítvány igénylése ===&lt;br /&gt;
Első lépésként szükségünk lesz egy '''Grides X.509 tanúsítványra''', amivel az ARC klienseket használni tudjuk. A [https://portal.hpc.niif.hu HPC portálon] keresztül lehetőségünk van igényelni egy 2 hétig érvényes SLCS tanúsítványt. A személyes adatok menüpontra kell kattintani és az oldal végén lesz az igénylő felület. '''Fontos: legalább egy HPC projekt tagsággal rendelkeznünk kell a HPC portálon. ''' Itt található az a letölthető UNIX script is, ami minden szükséges beállítást elvégez a számunkra: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           &lt;br /&gt;
 $ chmod +x slcs_unix_install.sh &lt;br /&gt;
 $ ./slcs_unix_install.sh &lt;br /&gt;
 $HOME/.globus/usercert.pem and $HOME/.globus/userkey.pem installed&lt;br /&gt;
 NIIF HPC SLCS Root CA installed: $HOME/.globus/certificates/SLCSCA.pem&lt;br /&gt;
 Default ARC client configuration created: $HOME/.arc/client.conf&lt;br /&gt;
 NIIF Root CA 2 installed: $HOME/.globus/certificates/NIIFCA.pem&lt;br /&gt;
 $ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Az SLCS másik nagy előnye az egyszerűsített igénylésen kívül az, hogy 1 órán belül az összes szuperszámítógépen automatikusan engedélyezve lesz. Viszont ha nem szeretnénk minden második héten új X.509-es tanúsítványt igényelni, akkor lehetőség van arra is, hogy 1 évig érvényes [https://www.igtf.net IGTF] tanúsítványt igényeljünk az NIIF Intézettől [http://www.ca.niif.hu/hu/igenyles ezen az oldal keresztül]. Ebben az esetben a [mailto:hpc-support@niif.hu] címre kell elküldenünk az IGTF-es tanúsítványunk publikus részét és meg kell adnunk, hogy melyik témaszámunkhoz legyen majd rendelve a szuperszámítógépeken.&lt;br /&gt;
&lt;br /&gt;
=== ARC kliensek használatba vétele ===&lt;br /&gt;
==== Telepítés ====&lt;br /&gt;
A csomagok telepítéséhez az itt leírt repo-kat lehet használni: http://download.nordugrid.org/repos-15.03.html&lt;br /&gt;
'''Fontos''': 5.0-ás ARC verziót telepítsük.&lt;br /&gt;
&lt;br /&gt;
Debian alapú rendszerek esetén:  &lt;br /&gt;
  apt-get install nordugrid-arc-client  &lt;br /&gt;
&lt;br /&gt;
Redhat alapú rendszerek esetén:  &lt;br /&gt;
  yum install nordugrid-arc-client&lt;br /&gt;
&lt;br /&gt;
OSX csomag telepítése [http://brew.sh brew] segítségével:&lt;br /&gt;
  brew install nordugrid-arc&lt;br /&gt;
&lt;br /&gt;
Ha nem találtunk megfelelő csomagot, akkor [http://download.nordugrid.org/packages/nordugrid-arc/releases/5.0.0/src/nordugrid-arc-5.0.0.tar.gz innen] le tudjuk tölteni a forráskódját és le tudjuk fordítani.&lt;br /&gt;
&lt;br /&gt;
==== Konfigurálás ====&lt;br /&gt;
$HOME/.arc/client.conf:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [common]&lt;br /&gt;
            &lt;br /&gt;
 [computing/budapest] &lt;br /&gt;
 url=https://login.budapest.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
 &lt;br /&gt;
 [computing/szeged]&lt;br /&gt;
 url=https://login.szeged.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
 &lt;br /&gt;
 [computing/debrecen]&lt;br /&gt;
 url=https://login.debrecen.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
 &lt;br /&gt;
 [computing/pecs]&lt;br /&gt;
 url=https://login.pecs.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
  &lt;br /&gt;
 # FastestQueue – ranks targets according to their queue length&lt;br /&gt;
 brokername=FastestQueue&lt;br /&gt;
 &lt;br /&gt;
 # Random – ranks targets randomly&lt;br /&gt;
 #brokername=Random&lt;br /&gt;
 &lt;br /&gt;
 # Data – ranks targets according the amount of megabytes of the requested input files that are already&lt;br /&gt;
 # in the computing resources cache. &lt;br /&gt;
 #brokername=Data&lt;br /&gt;
 &lt;br /&gt;
 # PythonBroker:&amp;lt;module&amp;gt;.&amp;lt;class&amp;gt;[:arguments] – ranks targets using any user-supplied custom&lt;br /&gt;
 # Python broker module, optionally with broker arguments. Such module can reside anywhere in&lt;br /&gt;
 # user’s PYTHONPATH&lt;br /&gt;
 #brokername=PythonBroker&lt;br /&gt;
 &lt;br /&gt;
 [alias]&lt;br /&gt;
 pecs=computing:ARC1:https://login.pecs.hpc.niif.hu:60000/arex&lt;br /&gt;
 szeged=computing:ARC1:https://login.szeged.hpc.niif.hu:60000/arex&lt;br /&gt;
 debrecen=computing:ARC1:https://login.debrecen.hpc.niif.hu:60000/arex&lt;br /&gt;
 budapest=computing:ARC1:https://login.budapest.hpc.niif.hu:60000/arex&lt;br /&gt;
 hp=budapest szeged&lt;br /&gt;
 sgi=pecs debrecen   &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Érdemes beállítani, hogy alapértelmezés szerint a FastestQueue brókert használja, ezáltal mindig arra a szuperszámítógépre fogja küldeni a jobokat, ahol a legkevesebb a várakozó jobok száma. A konfigurációs fájl részletes dokumentációját és az ARC kliensek leírásait [http://www.nordugrid.org/documents/arc-ui.pdf itt lehet] megnézni.&lt;br /&gt;
&lt;br /&gt;
=== Grid proxy készítése ===&lt;br /&gt;
&lt;br /&gt;
Ha már telepítettük a tanúsítványunkat és az ARC klienseket akkor a következő lépés az, hogy egy proxy tanúsítványt kell készítenünk, ami alapértelmezés szerint 12 óráig érvényes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ arcproxy &lt;br /&gt;
 Enter pass phrase for private key:&lt;br /&gt;
 Your identity: /C=HU/O=NIIF/OU=SLCS/L=hpcteszt/CN=joe&lt;br /&gt;
 Proxy generation succeeded&lt;br /&gt;
 Your proxy is valid until: 2015-03-30 05:01:09&lt;br /&gt;
 $    &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
Tesztelési célból ezeket a parancsokat érdemes kipróbálni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ arcinfo -c szeged  &lt;br /&gt;
 $ arcinfo -c hp -l&lt;br /&gt;
 $ arcinfo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid job készítése ===&lt;br /&gt;
A jobok leírására több formátumot is használhatunk: [https://www.ogf.org/documents/GFD.56.pdf JSDL], vagy [http://www.nordugrid.org/documents/xrsl.pdf xRSL]. Így adjuk meg, hogy a jobunknak mire van szüksége. Itt egy példa job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
 $ cat job.xrsl &lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 (executable=&amp;quot;matlab.sh&amp;quot;)&lt;br /&gt;
 (arguments=&amp;quot;matlab.m&amp;quot;)&lt;br /&gt;
 (stdout=&amp;quot;stdout.txt&amp;quot;)&lt;br /&gt;
 (stderr=&amp;quot;stderr.txt&amp;quot;)&lt;br /&gt;
 (jobname=&amp;quot;Matlab test&amp;quot;)&lt;br /&gt;
 (inputFiles=&lt;br /&gt;
 (&amp;quot;matlab.m&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
 )&lt;br /&gt;
 (memory&amp;gt;=&amp;quot;1000&amp;quot;)&lt;br /&gt;
 (gmlog=&amp;quot;gm.log&amp;quot;)&lt;br /&gt;
 (wallTime=&amp;quot;240&amp;quot;)&lt;br /&gt;
 (runTimeEnvironment=&amp;quot;APPS/MATH/MATLAB-7.13&amp;quot;)  &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cat matlab.sh &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo&lt;br /&gt;
 echo &amp;quot;Compute node: &amp;quot; `/bin/hostname -f`&lt;br /&gt;
 echo&lt;br /&gt;
 matlab -nodisplay &amp;lt; $1&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cat matlab.m&lt;br /&gt;
 2+3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennél a példánál a '''APPS/MATH/MATLAB-7.13''' futásidejű környezetet kértük, ezáltal ez a job csak azon a szuperszámítógépen fog elindulni, ahol ez telepítve van. Továbbá azt kértük még, hogy 240 percig futhasson és legalább 1000 MByte memória rendelkezésre álljon.&lt;br /&gt;
&lt;br /&gt;
Az '''arcinfo -l''' paranccsal tudjuk megnézni, hogy a szuperszámítógépeken milyen futás idejű környezetek (runtime environment-ek) vannak telepítve. Ha szeretnénk egy új környezet beállíttatni, akkor [mailto:hpc-support@niif.hu ide] kell levelet küldeni.&lt;br /&gt;
&lt;br /&gt;
==== OpenMP példa ====&lt;br /&gt;
&lt;br /&gt;
Job elkészítése:&lt;br /&gt;
&amp;lt;code&amp;gt;        &lt;br /&gt;
 $ cat job-openmp.xrsl &lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 (executable=&amp;quot;omp_mm&amp;quot;)&lt;br /&gt;
 (stdout=&amp;quot;stdout.txt&amp;quot;)&lt;br /&gt;
 (stderr=&amp;quot;stderr.txt&amp;quot;)&lt;br /&gt;
 (jobname=&amp;quot;OpenMP test&amp;quot;)&lt;br /&gt;
 (queue=&amp;quot;test&amp;quot;)&lt;br /&gt;
 (executables=&amp;quot;omp_mm&amp;quot;)&lt;br /&gt;
 (count=&amp;quot;10&amp;quot;)&lt;br /&gt;
 (countpernode=&amp;quot;10&amp;quot;)&lt;br /&gt;
 (environment=(&amp;quot;OMP_NUM_THREADS&amp;quot; &amp;quot;10&amp;quot;))&lt;br /&gt;
 (queue=&amp;quot;test&amp;quot;)&lt;br /&gt;
 (inputFiles=&lt;br /&gt;
    (&amp;quot;omp_mm&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
 )&lt;br /&gt;
 (memory&amp;gt;=&amp;quot;2600&amp;quot;)&lt;br /&gt;
 (gmlog=&amp;quot;gm.log&amp;quot;)&lt;br /&gt;
 (wallTime=&amp;quot;20&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Job elküldése:&lt;br /&gt;
&lt;br /&gt;
 $ arcsub job-openmp.xrsl&lt;br /&gt;
 Job submitted with jobid: https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
&lt;br /&gt;
Job állapotának a lekérdezése:&lt;br /&gt;
&lt;br /&gt;
 $ arcstat https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 Job: https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
  Name: OpenMP test&lt;br /&gt;
  State: Finished&lt;br /&gt;
  Exit Code: 0&lt;br /&gt;
 &lt;br /&gt;
 Status of 1 jobs was queried, 1 jobs returned information&lt;br /&gt;
&lt;br /&gt;
Job letöltése:&lt;br /&gt;
&lt;br /&gt;
 $ arcget https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 Results stored at: cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 Jobs processed: 1, successfully retrieved: 1, successfully cleaned: 1&lt;br /&gt;
 zion:~ joe $ cd cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $ ls -l&lt;br /&gt;
 total 16&lt;br /&gt;
 drwx------  12 joe  staff   408 Mar 29 21:24 gm.log&lt;br /&gt;
 -rw-------   1 joe  staff     0 Mar 29 21:24 stderr.txt&lt;br /&gt;
 -rw-------   1 joe  staff  6362 Mar 29 21:24 stdout.txt&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $&lt;br /&gt;
&lt;br /&gt;
Adatok ellenőrzése:&lt;br /&gt;
&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $ head stdout.txt &lt;br /&gt;
 Starting matrix multiple example with 10 threads&lt;br /&gt;
 Initializing matrices...&lt;br /&gt;
 Thread 0 starting matrix multiply...&lt;br /&gt;
 Thread=0 did row=0&lt;br /&gt;
 Thread 9 starting matrix multiply...&lt;br /&gt;
 Thread 6 starting matrix multiply...&lt;br /&gt;
 Thread=0 did row=1&lt;br /&gt;
 Thread 5 starting matrix multiply...&lt;br /&gt;
 Thread=5 did row=50&lt;br /&gt;
 Thread=5 did row=51&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe$           &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== MPI példa ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cat job-mpi.xrsl &lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 (executable=&amp;quot;mpi.sh&amp;quot;)&lt;br /&gt;
 (stdout=&amp;quot;stdout.txt&amp;quot;)&lt;br /&gt;
 (stderr=&amp;quot;stderr.txt&amp;quot;)&lt;br /&gt;
 (jobname=&amp;quot;MPI test&amp;quot;)&lt;br /&gt;
 (executables=&amp;quot;connectivity&amp;quot; &amp;quot;mpi.sh&amp;quot;)&lt;br /&gt;
 (count=&amp;quot;10&amp;quot;)&lt;br /&gt;
 (inputFiles=&lt;br /&gt;
     (&amp;quot;connectivity&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
     (&amp;quot;mpi.sh&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
 )&lt;br /&gt;
 (memory&amp;gt;=&amp;quot;2600&amp;quot;)&lt;br /&gt;
 (gmlog=&amp;quot;gm.log&amp;quot;)&lt;br /&gt;
 (wallTime=&amp;quot;20&amp;quot;)&lt;br /&gt;
 (runTimeEnvironment&amp;gt;=ENV/GCC/MPI/OPENMPI-1.4.3)  &lt;br /&gt;
&lt;br /&gt;
 $ cat mpi.sh &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mpirun -np 10 ./connectivity -v   &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Grafikus felületű ARC kliens ====&lt;br /&gt;
Parancssoros klienseken kívül használni lehet még grafikus klienseket is. [http://sourceforge.net/projects/arc-gui-clients/?source=directory Innen tudják] letölteni őket.&lt;br /&gt;
&lt;br /&gt;
[[Category: HPC]]&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=NIIF_szupersz%C3%A1m%C3%ADt%C3%B3g%C3%A9pek_haszn%C3%A1lata&amp;diff=3365</id>
		<title>NIIF szuperszámítógépek használata</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=NIIF_szupersz%C3%A1m%C3%ADt%C3%B3g%C3%A9pek_haszn%C3%A1lata&amp;diff=3365"/>
				<updated>2015-10-07T05:21:22Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Az NIIF Szuperszámítógépek összehasonlítása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== A szuperszámítógépekről ==&lt;br /&gt;
Az NIIF Intézet szuperszámítógép szolgáltatása tudományos számítási feladatok futtatására, valamint tudományos célú adattárolásra szolgál. A jelenleg integrált szuperszámítógép-rendszer komponensei négy helyszínen találhatók:&lt;br /&gt;
&lt;br /&gt;
* Debreceni Egyetem&lt;br /&gt;
* NIIFI központ&lt;br /&gt;
* Pécsi Tudományegyetem&lt;br /&gt;
* Szegedi Tudományegyetem&lt;br /&gt;
&lt;br /&gt;
A tudományos számítási feladatok különböző típusainak minél szélesebb körű lefedettsége érdekében az egyes helyszíneken különböző felépítésű gépek találhatók: egy helyszínen SMP/ccNUMA, három helyszínen pedig &amp;quot;fat-node&amp;quot; fürtözött megoldás. Az alrendszereket az NIIFI nagy sávszélességű, alacsony késleltetésű HBONE+ adathálózatán keresztül, ARC grid köztesréteg, valamint harmonizált felhasználói azonosítás segítségével integráljuk egységes elvek mentén elérhető számítási egységgé. Az erőforrás jelenleg Magyarország legnagyobb tudományos számítás céljára felhasználható erőforrása, amely összesen 50 billió lebegőpontos művelet elvégzését teszi lehetővé másodpercenként.&lt;br /&gt;
A szuperszámítógép-rendszert az NIIFI üzemelteti és fejleszti. A rendszerhez regisztrációt követően, minden olyan személy vagy kutatócsoport hozzáférhet, amely tagintézményi szerződéses kapcsolatban áll az NIIF Intézettel.&lt;br /&gt;
A gépen megtalálhatók és futtathatók a legkorszerűbb fejlesztőeszközök és tudományos számításra szolgáló alkalmazások, valamint, az NIIF adatközpontban elhelyezett alrendszer kivételével, valamennyi alrendszer kiegészül a számítási feladatok eredményeit megjelenítő vizualizációs eszközökkel.&lt;br /&gt;
&lt;br /&gt;
==== Az NIIF Szuperszámítógépek összehasonlítása ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Helyszín&lt;br /&gt;
| Budapest&lt;br /&gt;
| Budapest2&lt;br /&gt;
| Szeged&lt;br /&gt;
| Debrecen&lt;br /&gt;
| Debrecen2 (beüzemelése folyamatban van)&lt;br /&gt;
| Pécs&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| HP SL250s &lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| SGI ICE8400EX&lt;br /&gt;
| HP SL250s&lt;br /&gt;
| SGI UV 1000&lt;br /&gt;
|- &lt;br /&gt;
| CPU-k / node &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 4 &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 192 &lt;br /&gt;
|- &lt;br /&gt;
| Core-ok / CPU &lt;br /&gt;
| 12&lt;br /&gt;
| 10&lt;br /&gt;
| 12&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|- &lt;br /&gt;
| Memória / node &lt;br /&gt;
| 66 GB&lt;br /&gt;
| 63 GB &lt;br /&gt;
| 132 GB&lt;br /&gt;
| 47 GB&lt;br /&gt;
| 125 GB&lt;br /&gt;
| 6 TB&lt;br /&gt;
|- &lt;br /&gt;
| Memória / core &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 3 GB &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 7.5 GB&lt;br /&gt;
| 5 GB&lt;br /&gt;
|- &lt;br /&gt;
| CPU &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz&lt;br /&gt;
| Intel Xeon E5-2680 v2 @ 2.80GHz    &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz &lt;br /&gt;
| Intel Xeon X5680 @ 3.33 GHz&lt;br /&gt;
| Intel Xeon E5-2650 v2 @ 2.60GHz &lt;br /&gt;
| Intel Xeon X7542 @ 2.66 GHz&lt;br /&gt;
|- &lt;br /&gt;
| GPU &lt;br /&gt;
| -&lt;br /&gt;
| -   &lt;br /&gt;
| 2 * 6 Nvidia M2070&lt;br /&gt;
| -&lt;br /&gt;
| 68 nodes * 3 Nvidia K20x + 16 nodes * 3 Nvidia K40x &lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Intel Xeon Phi &lt;br /&gt;
| -&lt;br /&gt;
| 2 * Intel(R) Xeon Phi(TM) coprocessor x100 family&lt;br /&gt;
| -&lt;br /&gt;
| -  &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| Linpack sebesség (Rmax)&lt;br /&gt;
| 5 Tflops&lt;br /&gt;
| 27 Tflops&lt;br /&gt;
| 20 Tflops&lt;br /&gt;
| 18 Tlops&lt;br /&gt;
| 202 Tflops&lt;br /&gt;
| 10 Tflops&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok száma &lt;br /&gt;
| 32&lt;br /&gt;
| 14&lt;br /&gt;
| 50&lt;br /&gt;
| 128&lt;br /&gt;
| 84&lt;br /&gt;
| 1&lt;br /&gt;
|-  &lt;br /&gt;
| Scheduler &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]  &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
|- &lt;br /&gt;
| MPI &lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| IntelMPI (impi)&lt;br /&gt;
| OpenMPI (ompi) &lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Köszönetnyilvánítás ===&lt;br /&gt;
Tudományos publikációkban a következő köszönetnyilvánítást javasoljuk:&lt;br /&gt;
&lt;br /&gt;
'''We acknowledge [PRACE/NIIF] for awarding us access to resource based in Hungary at [Budapest/Debrecen/Pécs/Szeged].'''&lt;br /&gt;
&lt;br /&gt;
Where technical support has been received the following additional text should also be used:&lt;br /&gt;
&lt;br /&gt;
'''The support of [name of person/people] from NIIF Institute, Hungary to the technical work is gratefully acknowledged.'''&lt;br /&gt;
&lt;br /&gt;
== Hozzáférés a szuperszámítógépekhez == &lt;br /&gt;
A szuperszámítógépekhez kulcsos SSH használatával lehet hozzáférni. Ajánlott UTF-8 képes terminált használ az ékezetes betűk megjeelenítése érdekében. PUTTY terminál esetén a ''Window/Translation'' beállítás alatt a character set-et kell UTF-8-ra állítani.&lt;br /&gt;
&lt;br /&gt;
=== SSH belépés ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ssh USER@login.SITE.hpc.niif.hu&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;USER&amp;lt;/code&amp;gt; a felhasználónév, a &amp;lt;code&amp;gt;SITE&amp;lt;/code&amp;gt; pedig a belépéshez használt szupergép neve: '''budapest''', '''debrecen''', '''pecs''', '''szeged'''. Nem alapértelmezett kulcs használata a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval lehetséges.&lt;br /&gt;
&lt;br /&gt;
Belépés a szegedi gépre alice felhasználóként, az SSH privát kulcsot a &amp;lt;code&amp;gt;keys/szeged&amp;lt;/code&amp;gt; fájlból olvasva:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ssh -i keys/szeged alice@login.szeged.hpc.niif.hu&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fájl másolás SCP segítségével ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scp USER@login.SITE.hpc.niif.hu:FILE FILE&lt;br /&gt;
scp FILE USER@login.SITE.hpc.niif.hu:FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A szegedi gép HOME könyvtárában lévő &amp;lt;code&amp;gt;stuff.tgz&amp;lt;/code&amp;gt; fájl letöltése a helyi gép aktuális könyvtárába:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
scp bob@login.szeged.hpc.niif.hu:stuff.tgz .&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatátvitel rsync segítségével ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához az SSH-t és az rsync-et együtt kell használni. Fel- és leszinkronizálás:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -a -e ssh DIRECTORY USER@login.budapest.hpc.niif.hu:/home/USER&lt;br /&gt;
rsync -a -e ssh USER@login.budapest.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A budapesti gépre szinkronizálom a helyi &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; könyvtár tartalmát (nem az alapértelmezett kulcsot használva) és a másolás folyamatát nyomonkövetem:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
rsync -a -h --progress -e &amp;quot;ssh -i keys/budapest&amp;quot; ./src alice@login.budapest.hpc.niif.hu:/home/alice&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
A szupergépek elsődleges felhasználói felülete a Bash shell. Az automatikusan betöltődő NIIF Common Environment (NCE) a PS1 promptot a következőképp állítja be:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                    |&lt;br /&gt;
    BUDAPEST[login] ~ (0)$&lt;br /&gt;
        |      |       |&lt;br /&gt;
   HPC állomás |       |&lt;br /&gt;
         rövid gép név |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
A szupergépekre telepített alkalmazásokat az ún. modul rendszer segítségével lehet használ. A modul rendszer lehetővé teszi egy adott alkalmazás több verziójának használatát is. Feladata a shell környezeti változók helyes beállítása. Normál felhasználók számára az alapértelmezett modul környezet automatikusan betöltődik. Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load APPS&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;APPS&amp;lt;/code&amp;gt; a betöltendő modulok space-szel elválasztott listája.&lt;br /&gt;
&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
==== Példa ====&lt;br /&gt;
A Maple, netcfd és az R csomagok betöltése:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load maple netcdf R&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához használjuk a [http://www.techrepublic.com/blog/linux-and-open-source/learn-to-use-extended-file-attributes-in-linux-to-boost-security/](fájlrendszer ACL-eket). Az ACL-ekkel a hagyományos unix engedélyeken felül finoman szabályozhatjuk a fájlok és könyvtárak hozzáférési engedélyeit. A következő példában a &amp;lt;code&amp;gt;$HOME/Shared&amp;lt;/code&amp;gt; könyvtárat osztjuk egy munkatárs számára:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# a home könyvtár beállítása&lt;br /&gt;
# user1 user számára belépsi engedély: u:user1:x &lt;br /&gt;
$ setfacl -m u:user1:x $HOME&lt;br /&gt;
$ getfacl $HOME&lt;br /&gt;
# file: user2/user2&lt;br /&gt;
# owner: user2&lt;br /&gt;
# group: user2&lt;br /&gt;
user::rwx&lt;br /&gt;
user:user1:--x&lt;br /&gt;
group::r-x&lt;br /&gt;
mask::r-x&lt;br /&gt;
other::---&lt;br /&gt;
# Shared könyvtár megosztása&lt;br /&gt;
# user1 számára minden unix jog&lt;br /&gt;
$ cd&lt;br /&gt;
$ mkdir Shared&lt;br /&gt;
$ setfacl -m u:user1:rwx $HOME/Shared&lt;br /&gt;
$ getfacl Shared&lt;br /&gt;
# file: Shared&lt;br /&gt;
# owner: user2&lt;br /&gt;
# group: user2&lt;br /&gt;
user::rwx&lt;br /&gt;
user:user1:rwx&lt;br /&gt;
group::rwx&lt;br /&gt;
mask::rwx&lt;br /&gt;
other::r-x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Python csomag telepítése a saját home könyvtárunkba ==&lt;br /&gt;
Itt egy példa arra, hogy hogyan tudjuk feltelepíteni a mercurial python csomagot.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module load python &lt;br /&gt;
$ pip install --user mercurial&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login és vserver node-jai osztott home könyvtárral vannak összekötve. Fontos, hogy az osztott könyvtárat a számítási node-ok nem érik el, ezért az osztott home-ot csak tárolásra ill. megosztásra lehet használni. Az osztott terület Debrecenben van, ezért ott a leggyorsabb. A másik három helyen lassabb a hozzáférés a nagyobb távolság miatt. A programok kimenetét továbbra is a lokális scratch vagy home könyvtárba kell írni. Amelyik login node-on használni szeretnénk az osztott home könyvtárat, ott adjuk ki a következő parancsokat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd; mkdir shared; ln -s /mnt/fhgfs/home/$USER shared/$USER &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ezek után a &amp;lt;code&amp;gt;$HOME/shared/$USER&amp;lt;/code&amp;gt; könyvtárba másoljuk a megosztott fájlokat. Ez a könyvtár a következő környezeti változóba is exportálódik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$NCE_SHARED &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Biztonsági mentés, adatmegosztás ===&lt;br /&gt;
A következő példa mentést végez a &amp;lt;code&amp;gt;$HOME/data&amp;lt;/code&amp;gt; könyvtárról:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP $HOME/data $NCE_SHARED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Törölje a fájlokat a mentésben is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/data $NCE_SHARED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
Weboldal: http://slurm.schedmd.com&lt;br /&gt;
&lt;br /&gt;
A szupergépeken CPU óra (gépidő) alapú ütemezés működik. Ez azt jelenti, hogy a fogyasztási időtartamra (hónap) az elérhető maximális gépidő fel van osztva a felhasználók között. Minden UNIX felhasználó egy vagy több számlához (''Account'') tartozhat. Az ütemező számla egy adott HPC-s projekthez tartozik, hasonló a UNIX csoporthoz. Szupergépes feladatokat csak az egyes számlák terhére lehet indítani. A CPU óra az elhasznált idő (''Walltime'') és az igényelt processzorok számának szorzata. Például a budapesti gépen 2 db node (48 processzor mag) foglalása 30 percre 48 * 30 = 1440 CPU perc = 24 CPU óra. A CPU órát az ütemező a futás kezdetétől a befejezésig méri.&lt;br /&gt;
&lt;br /&gt;
'''Rendkívül fontos arról meggyőződni, hogy a futtatandó alkalmazás rendesen kihasználja-e a szupergépet. Egy üres vagy rosszul futó job hamar elhasználja a rendelkezésre álló gépidőt. Elfogyasztott gépidő esetén új jobokat már nem lehet indítani, és meg kell várni a számlázási időszak végét. A gépidő limitek (Account Limit) minden hónap elején jóváíródnak.'''&lt;br /&gt;
&lt;br /&gt;
Számláink állapotáról a következő paranccsal kapunk információt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A parancs a következő táblázatot jeleníti meg. A felhasználó két számlához (foobar,barfoo) is hozzáfér, futatthat a számla terhére. Saját magát megcsillagozva látja a listában. Bobbal mindkét számlán (Account oszlop) Alice is osztozik. A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyeik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még alérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
alice                0 |           foobar           0 |             0           0&lt;br /&gt;
bob *                0 |           foobar           0 |             0           0&lt;br /&gt;
&lt;br /&gt;
bob *                7 |           barfoo           7 |         1,000         993&lt;br /&gt;
alice                0 |           barfoo           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
Alice 2 nap 10 órára és 2 node-ra szeretne foglalást kérni, megnézi van-e elég gépidő a számláján:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N 2 -t 2-10:00:00&lt;br /&gt;
&lt;br /&gt;
Estimated CPU hours: 2784&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Sajnos ebben a hónapban erre már nem telik.&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csőkkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
Az ütemezőben 3 feladat van. Az első egy arrayjob, éppen erőforrásra vár (PENDING). A második egy MPI job, ami 4 node-on fut már 25 perce (TIME). A harmadik egy egy node-os OMP futtatás, éppen most indult el. A feladatik nevei (NAME) egyénileg adható meg. Rövid, informatív neveket érdemes adni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
squeue -l&lt;br /&gt;
&lt;br /&gt;
Wed Oct 16 08:30:07 2013              &lt;br /&gt;
     JOBID PARTITION     NAME     USER    STATE       TIME TIMELIMIT  NODES NODELIST(REASON)&lt;br /&gt;
591_[1-96]    normal    array    alice  PENDING       0:00     30:00      1 (None)&lt;br /&gt;
       589    normal      mpi      bob  RUNNING      25:55   2:00:00      4 cn[05-08]&lt;br /&gt;
       590    normal      omp    alice  RUNNING       0:25   1:00:00      1 cn09&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a 2 node-os batch jobnak a jellemző memóriaterhelés a következő volt: kb. 10GB virtuális és 6.5GB RSS memóriát használt el node-onként.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory 430&lt;br /&gt;
&lt;br /&gt;
 MaxVMSize  MaxVMSizeNode  AveVMSize     MaxRSS MaxRSSNode     AveRSS&lt;br /&gt;
---------- -------------- ---------- ---------- ---------- ----------&lt;br /&gt;
10271792K           cn06  10271792K   6544524K       cn06   6544524K   &lt;br /&gt;
10085152K           cn07  10085152K   6538492K       cn07   6534876K &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU felhasználás ellenőrzése ====&lt;br /&gt;
Nagyon fontos meggyőződni arról, hogy az alkalmazás kihasználja-e a rendelkezésre álló gépidőt. Egy futó alkalmazás a következő paranccsal tudunk monitorozni:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sjobcheck JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez a job 4 node-on fut. A LOAD csoport a gép általános terheléséről ad információt és kb. a core-ok számával egyezik meg. A helyes felhasználásról a CPU csoport ad tájékoztatást. Ideális esetben a &amp;lt;code&amp;gt;User&amp;lt;/code&amp;gt; oszlop értékei 90 fölött vannak. Ez alatt valamilyen probléma lépett fel és a futást érdemes megszakítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hostname                     LOAD                       CPU              Gexec  &lt;br /&gt;
 CPUs (Procs/Total) [     1,     5, 15min] [  User,  Nice, System, Idle, Wio]&lt;br /&gt;
cn08    24 (   25/  529) [ 24.83, 24.84, 20.98] [  99.8,   0.0,   0.2,   0.0,   0.0] OFF&lt;br /&gt;
cn07    24 (   25/  529) [ 24.93, 24.88, 20.98] [  99.8,   0.0,   0.2,   0.0,   0.0] OFF&lt;br /&gt;
cn06    24 (   25/  529) [ 25.00, 24.90, 20.97] [  99.9,   0.0,   0.1,   0.0,   0.0] OFF&lt;br /&gt;
cn05    24 (   25/  544) [ 25.11, 24.96, 20.97] [  99.8,   0.0,   0.2,   0.0,   0.0] OFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=niif Start=2014-01-01&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
niif helyett a saját projektünk azonosítóját kell megadni.&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni. Az ütemezők összehasonlításáról és a Slurm-ban elérhető direktívákról a következő [http://slurm.schedmd.com/rosetta.pdf táblázat] ad bővebb tájékoztatást.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sbatch jobscript.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépeken két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt; sor. Utóbbi az éles számolásokra való, előbbi fejlesztés és tesztelés céljára használható. A teszt sorban összesen 1 node-ot, maximum fél órára lehet lefoglalni. Az alapértelmezett sor a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt;. A teszt partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
A memória a CPU-hoz hasonlóan korlátozott, foglalható erőforrás. A felhasználás mérése a memória / core alapon történik: 1 core óra, 2600 MB órának felel meg. Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. Budapesten és Szegeden a maximális memória/core 2600 MB.&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 24 órára ad fel 96 db soros jobot. A &amp;lt;code&amp;gt;#SBATCH --array=1-96&amp;lt;/code&amp;gt; direktíva jelzi, hogy tömbfeladatról van szó. Az alkalmazást az &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; paranccsal kell indítani. Ebben az esetben ez egy shell szkript.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&lt;br /&gt;
A következő példában a test sorban 3 egy szálon dutó programot indítunk el. A programok és az inputok lehetnek különbözőek. Fontos, hogy az utolsó parancsot nem kell a háttérben (&amp;amp;) indítani és a wait-tel kell befejezni a job szkriptet.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&lt;br /&gt;
Bob felhasználó a barfoo számla terhére 2 node-ot, 12 órára foglal le egy MPI job számára. Az egyes node-okon 24 MPI szálat fog elindítani. A program stdout kimenetét a &amp;lt;code&amp;gt;slurm.out&amp;lt;/code&amp;gt; fájlba irányítja (&amp;lt;code&amp;gt;#SBATCH -o&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=24&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI UV SMP (Pécs) ====&lt;br /&gt;
A pécsi gépen legalább 6 szálon működő jobok futtatása lehetságes. Az egyetlen elfogadott paraméter a szálak szám (`-n`), amelynek 6 többszörösének kell lenni. Ezen a gépen nincs teszt sor. Kérjük, hogy 48-nál kevesebb szálon futó programokat az UV-n ne futtassanak! Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
===== OMP Példa =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH -n 48&lt;br /&gt;
#SBATCH --time=03:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
/opt/nce/bin/numainfo&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_NTASKS ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== SGI MPT MPI Példa =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH -n 48&lt;br /&gt;
#SBATCH --time=03:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
/opt/nce/bin/numainfo&lt;br /&gt;
mpirun $SLURM_NTASKS ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Jobok monitorozása =====&lt;br /&gt;
CPU használat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smonitor -n &amp;lt;JOBID&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Memória használat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smonitor -m &amp;lt;JOBID&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ütemezés sor foglaltsága:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sinfo_uv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI MPT MPI feladatok (Debrecen) ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani. Az SGI MPT MPI paraméterezése kicsit más, mint az OpenMPI. '''Debrecen az SGI MPT az alpértelmezett MPI környezet!'''&lt;br /&gt;
&lt;br /&gt;
Bob felhasználó a barfoo számla terhére 2 node-ot, 12 órára foglal le egy MPI job számára. Az egyes node-okon 24 MPI szálat fog elindítani. A program stdout kimenetét a &amp;lt;code&amp;gt;slurm.out&amp;lt;/code&amp;gt; fájlba irányítja (&amp;lt;code&amp;gt;#SBATCH -o&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=12&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
source /opt/nce/bin/machines&lt;br /&gt;
export MPI_OPT=&amp;quot;${MACHINES} -np ${SLURM_NTASKS_PER_NODE}&amp;quot;&lt;br /&gt;
mpirun ${MPI_OPT} ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI PerfBoost egyéb MPI feladatokra (Debrecen) ====&lt;br /&gt;
Az SGI MPT lehetőséget ad arra, hogy nem MPT MPI-vel fordított MPI programok is használjunk. Ebben az esetben az MPI hívások MPT hívásokkal cserélődnek ki.&lt;br /&gt;
&lt;br /&gt;
Egy OpenMPI-re fordított program indítása:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=12&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
source /opt/nce/bin/machines&lt;br /&gt;
export MPI_OPT=&amp;quot;${MACHINES} -np ${SLURM_NTASKS_PER_NODE}&amp;quot;&lt;br /&gt;
mpirun ${MPI_OPT} perfboost -ompi ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU binding ====&lt;br /&gt;
Az MPI programok teljesítménye általában javítható a processzek CPU magokhoz kötésével. Ilyenkor a párhuzamos program szálait az operációs rendszer nem ütemezi a CPU magok között, ezért javulhat a memória lokalizáció (kevesebb cache miss). A kötés használata ajánlott. Tesztekkel meg kell győződni, hogy egy adott alkalmazás esetén melyik kötési stratégia adja a legjobb eredményt. A következő beállítások az OpenMPI környezetre vontakoznak. A kötésekről részletes információt a &amp;lt;code&amp;gt;--report-bindings&amp;lt;/code&amp;gt; MPI opcióval kaphatunk. Az indítási parancsok melett a részletes binding információ néhány sora is látható. Fontos, hogy az ütemező task binding-ját nem kell használni!&lt;br /&gt;
&lt;br /&gt;
===== Kötés CPU magonként =====&lt;br /&gt;
Ebben az esetben az MPI szálak (rank) sorban töltik fel a CPU magokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Indítási parancs: mpirun --bind-to-core --bycore&lt;br /&gt;
&lt;br /&gt;
[cn05:05493] MCW rank 0 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05493] MCW rank 1 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05493] MCW rank 2 bound to socket 0[core 2]: [. . B . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05493] MCW rank 3 bound to socket 0[core 3]: [. . . B . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Kötés CPU foglalat szerint =====&lt;br /&gt;
Ebben az esetben az MPI szálak váltakozva töltik fel a CPU-kat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Indítási parancs: mpirun --bind-to-core --bysocket&lt;br /&gt;
&lt;br /&gt;
[cn05:05659] MCW rank 0 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05659] MCW rank 1 bound to socket 1[core 0]: [. . . . . . . . . . . .][B . . . . . . . . . . .]&lt;br /&gt;
[cn05:05659] MCW rank 2 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05659] MCW rank 3 bound to socket 1[core 1]: [. . . . . . . . . . . .][. B . . . . . . . . . .]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Kötés node-ok szerint =====&lt;br /&gt;
Ebben az esetben az MPI szálak váltakozva töltik fel a node-okat. Lagalább 2 node foglalása szükséges.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Indítási parancs: mpirun --bind-to-core --bynode&lt;br /&gt;
&lt;br /&gt;
[cn05:05904] MCW rank 0 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05904] MCW rank 2 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn06:05969] MCW rank 1 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn06:05969] MCW rank 3 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=24&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 24 CPU-t rendeltunk, a 24 CPU-nak egy node-on kell lennie. A CPU-k számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 24 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=24&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 24 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 24 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 24 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=24&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Maple Grid feladatok ====&lt;br /&gt;
Maple-t az OMP feladatokhoz hasonlóan 1 node-on lehet futtatni. Használatához be kell tölteni a maple modult is. A Maple kliens-szerver üzemmódban működik ezért a Maple feladat futtatása előtt szükség van a grid szerver elindítására is (&amp;lt;code&amp;gt;${MAPLE}/toolbox/Grid/bin/startserver&amp;lt;/code&amp;gt;). Ez az alkalmazás licensz köteles, amit a jobszkriptben meg kell adni (&amp;lt;code&amp;gt;#SBATCH --licenses=maplegrid:1&amp;lt;/code&amp;gt;). A Maple feladat indátását a &amp;lt;code&amp;gt;${MAPLE}/toolbox/Grid/bin/joblauncher&amp;lt;/code&amp;gt; paranccsal kell elvégezni.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, 6 órára indítja el a Maple Grid alkalmazást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=maple&lt;br /&gt;
#SBATCH -N 1&lt;br /&gt;
#SBATCH --ntasks-per-node=24&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
#SBATCH --licenses=maplegrid:1&lt;br /&gt;
&lt;br /&gt;
module load maple&lt;br /&gt;
&lt;br /&gt;
${MAPLE}/toolbox/Grid/bin/startserver&lt;br /&gt;
${MAPLE}/toolbox/Grid/bin/joblauncher ${MAPLE}/toolbox/Grid/samples/Simple.mpl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Matlab feladatok ====&lt;br /&gt;
Ez az alkalmazás licensz köteles, amit a jobszkriptben meg kell adni (&amp;lt;code&amp;gt;#SBATCH --licenses=matlabdce:1,matlabdct:1,matlab:1&amp;lt;/code&amp;gt;). Összesen 96 darab &lt;br /&gt;
Distributed Computing Server, 13 darab Distributed Computing Toolbox és 13 Matlab licensz lett megvásárolva.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=&amp;quot;Matlab test job&amp;quot;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH --licenses=matlabdce:1,matlabdct:1,matlab:1&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
&lt;br /&gt;
matlab -nodisplay &amp;lt; job.m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPU-k használata ====&lt;br /&gt;
A szegedi szuperszámítógép rendelkezik 2db GPU kártyákkal is felszerelt compute node-dal. A GPU node-okban 2x6db Nvidia Tesla M2070-es kártya található. A GPU-s node-ok külön job sorban található (&amp;lt;code&amp;gt;--partition gpu&amp;lt;/code&amp;gt;). A GPU-k számát a &amp;lt;code&amp;gt;--gres gpu:#&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, 4GPU-n, 6 órára indítja a következő jobot.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=GPU&lt;br /&gt;
#SBATCH --partition gpu&lt;br /&gt;
#SBATCH --gres gpu:4&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
&lt;br /&gt;
$PWD/gpu_burnout 3600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások beállításai ==&lt;br /&gt;
=== Saját programok telepítése ===&lt;br /&gt;
A saját fordítású programokat a HOME könyvtáradba kell telepíteni, ezt általában a fordítás előtti lefuttatott configure szkripttel lehet beállítani. Az adott program a $HOME/local alá fog települni. A PATH és egyéb környezeti változókat értelem szerűen kell beállítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME&lt;br /&gt;
mkdir local&lt;br /&gt;
(belépés az alklamazás könyvtárába)&lt;br /&gt;
./configure --prefix=$HOME/local&lt;br /&gt;
make; make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A frontend gépeken felhasználói limitek vannak beállítva. Ezekről a következő paranccsal kapunk információt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ulimit -a&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A limitek a compute node-okon és az UV-n nincsenek beállítva.&lt;br /&gt;
&lt;br /&gt;
=== Java JVM heap méret ===&lt;br /&gt;
A memória limit miatt a Java virtuális gépen és fordító nem jól működik, ezért meg kell adni a maximális heap méretét:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
java -Xmx512m -version&lt;br /&gt;
javac -J-Xmx512m -version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
vagy exportálni kell a következő változót:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export _JAVA_OPTIONS=&amp;quot;-Xms1g -Xmx1g&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python Numpy és Scipy használat ===&lt;br /&gt;
A numerikus Python használatához a következő csomagokat kell betölteni:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load python numpy scipy&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A numpy és a scipy csomagok az Intel MKL OpenMP gyorsítását használják. A jobokat az &amp;lt;code&amp;gt;openmp&amp;lt;/code&amp;gt; párhuzamos környezetbe kell elküldeni.&lt;br /&gt;
&lt;br /&gt;
== HP Budapest ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fordítás ===&lt;br /&gt;
Elérhető fordítók listája&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Forító&lt;br /&gt;
! Soros&lt;br /&gt;
! Párhuzamos&lt;br /&gt;
|-&lt;br /&gt;
| Intel Fortran&lt;br /&gt;
| ifort&lt;br /&gt;
| mpiif90&lt;br /&gt;
|-&lt;br /&gt;
| Intel C&lt;br /&gt;
| icc&lt;br /&gt;
| mpiicc&lt;br /&gt;
|-&lt;br /&gt;
| GNU Fortran&lt;br /&gt;
| gfotran&lt;br /&gt;
| mpif90&lt;br /&gt;
|-&lt;br /&gt;
| GNU C&lt;br /&gt;
| gcc&lt;br /&gt;
| mpicc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A fordítási paramétereket az NCE környezeti változókból érdemes kiolvasni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NCE_OFLAGS - optimalizációs kapcsolók C és Fortran&lt;br /&gt;
NCE_FFLAGS - Fortran kapcsolók&lt;br /&gt;
NCE_CFLAGS - C kapcsolók&lt;br /&gt;
NCE_LDFLAGS - könyvtárak C és Fortran&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az NCE környezeti változó listáját az &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; paranccsal kérhetjük le.&lt;br /&gt;
&lt;br /&gt;
A budapesti gépen elérhető a PRACE környezet is, amely tartalmaz egy ajánlott kapcsoló és könyvtár összeállítást tartalmaz. A PRACE környezet betöltése:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load prace&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A PRACE környezet az AMD ACML matematikai könyvtárakat használja, amennyiben az Intel MKL-re van szükségünk, akkor a PRACE környezetet nem kell betölteni. A megfelelő MKL kapcsolókat az [http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor Intel Link Advisor] szerint kell beállítani, pl.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FFLAGS=-openmp -I$(MKLROOT)/include&lt;br /&gt;
CFLAGS=-openmp -I$(MKLROOT)/include&lt;br /&gt;
LDFLAGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \&lt;br /&gt;
  -Wl,--start-group \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_intel_thread.a \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_core.a \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_blacs_openmpi_lp64.a \&lt;br /&gt;
  -Wl,--end-group -lpthread -lm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Párhuzamos környezet ===&lt;br /&gt;
==== OpenMP ====&lt;br /&gt;
Az OpenMP paraméterket környezeti változókon keresztül kell beállítani. Az &amp;lt;code&amp;gt;openmp&amp;lt;/code&amp;gt; párhuzamos SLURM környezet az OpenMP szálak számát beállítja. Tovább környezeti változókat az [https://computing.llnl.gov/tutorials/openMP/#EnvironmentVariables LLNL OpenMP oldalán] találtok.&lt;br /&gt;
&lt;br /&gt;
==== MPI ====&lt;br /&gt;
Az alapértelmezett MPI könyvtár az Open MPI. Ajánlott optimalizációs kapcsolók (CPU binding):&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
--bind-to-core --bycore&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SGI ICE Debrecen ==&lt;br /&gt;
Az alapértelmezett MPI könyvtár az SGI MPT. A felhasználói programokat ehhez a könyvtárhoz érdemes fordítani. Ajánlott fordítás opciók:&lt;br /&gt;
&lt;br /&gt;
=== MPI fordítási opciók ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    CFLAGS=-O2 -xSSE4.2&lt;br /&gt;
    FFLAGS=-O2 -xSSE4.2&lt;br /&gt;
    LDFLAGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \&lt;br /&gt;
      -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_sequential.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_core.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_blacs_sgimpt_lp64.a -Wl,--end-group \&lt;br /&gt;
      -lpthread -lm&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MPI és OpenMP fordítási opciók ===&lt;br /&gt;
Ebben az esetben az MKL műveletek OpenMP szálasíthatók, a program hibrid MPI és OMP módban is tud üzemelni.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    CFLAGS=-O2 -xSSE4.2 -openmp&lt;br /&gt;
    FFLAGS=-O2 -xSSE4.2 -openmp&lt;br /&gt;
    LDFALGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \&lt;br /&gt;
      -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_intel_thread.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_core.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_blacs_sgimpt_lp64.a -Wl,--end-group \&lt;br /&gt;
      -liomp5 -lpthread -lm -openmp&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ARC köztesréteg ==&lt;br /&gt;
Ez a NorduGrid közösség által fejlesztett Grid köztesréteg. Részletes dokumentációkért [http://www.nordugrid.org/documents ezt a weboldalt] érdemes felkeresni.&lt;br /&gt;
&lt;br /&gt;
=== Miért is használjuk?! ===&lt;br /&gt;
* Jobb terhelés elosztást tesz lehetővé a szuperszámítógépek között&lt;br /&gt;
* A jobok azon a gépen fognak elindulni, ami a legmegfelelőbb a számára&lt;br /&gt;
* Egy nagy egységgé kapcsolja össze a szuperszámítógépeket&lt;br /&gt;
* Szabványos webservice interfésszel ([https://www.ogf.org/documents/GFD.108.pdf OGSA-BES], [https://www.ogf.org/documents/GFD.114.pdf HPC Basic Profile]) rendelkezik. Ezáltal könnyen lehet integrálni más rendszerekkel&lt;br /&gt;
* Nagyon sok operációs rendszert támogat&lt;br /&gt;
* A saját számítógépünkről tudjuk kezelni a szuperszámítógépes jobokat&lt;br /&gt;
* A [http://pulse.fgi.csc.fi/gridrer/htdocs/index.phtml futás idejű környezetek használatával] a megfelelő módon lefordított alkalmazást tudjuk használni és nem kell észben tartani, hogy éppen melyik szuperszámítógépen van telepítve a program&lt;br /&gt;
&lt;br /&gt;
=== Grid tanúsítvány igénylése ===&lt;br /&gt;
Első lépésként szükségünk lesz egy '''Grides X.509 tanúsítványra''', amivel az ARC klienseket használni tudjuk. A [https://portal.hpc.niif.hu HPC portálon] keresztül lehetőségünk van igényelni egy 2 hétig érvényes SLCS tanúsítványt. A személyes adatok menüpontra kell kattintani és az oldal végén lesz az igénylő felület. '''Fontos: legalább egy HPC projekt tagsággal rendelkeznünk kell a HPC portálon. ''' Itt található az a letölthető UNIX script is, ami minden szükséges beállítást elvégez a számunkra: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           &lt;br /&gt;
 $ chmod +x slcs_unix_install.sh &lt;br /&gt;
 $ ./slcs_unix_install.sh &lt;br /&gt;
 $HOME/.globus/usercert.pem and $HOME/.globus/userkey.pem installed&lt;br /&gt;
 NIIF HPC SLCS Root CA installed: $HOME/.globus/certificates/SLCSCA.pem&lt;br /&gt;
 Default ARC client configuration created: $HOME/.arc/client.conf&lt;br /&gt;
 NIIF Root CA 2 installed: $HOME/.globus/certificates/NIIFCA.pem&lt;br /&gt;
 $ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Az SLCS másik nagy előnye az egyszerűsített igénylésen kívül az, hogy 1 órán belül az összes szuperszámítógépen automatikusan engedélyezve lesz. Viszont ha nem szeretnénk minden második héten új X.509-es tanúsítványt igényelni, akkor lehetőség van arra is, hogy 1 évig érvényes [https://www.igtf.net IGTF] tanúsítványt igényeljünk az NIIF Intézettől [http://www.ca.niif.hu/hu/igenyles ezen az oldal keresztül]. Ebben az esetben a [mailto:hpc-support@niif.hu] címre kell elküldenünk az IGTF-es tanúsítványunk publikus részét és meg kell adnunk, hogy melyik témaszámunkhoz legyen majd rendelve a szuperszámítógépeken.&lt;br /&gt;
&lt;br /&gt;
=== ARC kliensek használatba vétele ===&lt;br /&gt;
==== Telepítés ====&lt;br /&gt;
A csomagok telepítéséhez az itt leírt repo-kat lehet használni: http://download.nordugrid.org/repos-15.03.html&lt;br /&gt;
'''Fontos''': 5.0-ás ARC verziót telepítsük.&lt;br /&gt;
&lt;br /&gt;
Debian alapú rendszerek esetén:  &lt;br /&gt;
  apt-get install nordugrid-arc-client  &lt;br /&gt;
&lt;br /&gt;
Redhat alapú rendszerek esetén:  &lt;br /&gt;
  yum install nordugrid-arc-client&lt;br /&gt;
&lt;br /&gt;
OSX csomag telepítése [http://brew.sh brew] segítségével:&lt;br /&gt;
  brew install nordugrid-arc&lt;br /&gt;
&lt;br /&gt;
Ha nem találtunk megfelelő csomagot, akkor [http://download.nordugrid.org/packages/nordugrid-arc/releases/5.0.0/src/nordugrid-arc-5.0.0.tar.gz innen] le tudjuk tölteni a forráskódját és le tudjuk fordítani.&lt;br /&gt;
&lt;br /&gt;
==== Konfigurálás ====&lt;br /&gt;
$HOME/.arc/client.conf:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [common]&lt;br /&gt;
            &lt;br /&gt;
 [computing/budapest] &lt;br /&gt;
 url=https://login.budapest.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
 &lt;br /&gt;
 [computing/szeged]&lt;br /&gt;
 url=https://login.szeged.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
 &lt;br /&gt;
 [computing/debrecen]&lt;br /&gt;
 url=https://login.debrecen.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
 &lt;br /&gt;
 [computing/pecs]&lt;br /&gt;
 url=https://login.pecs.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
  &lt;br /&gt;
 # FastestQueue – ranks targets according to their queue length&lt;br /&gt;
 brokername=FastestQueue&lt;br /&gt;
 &lt;br /&gt;
 # Random – ranks targets randomly&lt;br /&gt;
 #brokername=Random&lt;br /&gt;
 &lt;br /&gt;
 # Data – ranks targets according the amount of megabytes of the requested input files that are already&lt;br /&gt;
 # in the computing resources cache. &lt;br /&gt;
 #brokername=Data&lt;br /&gt;
 &lt;br /&gt;
 # PythonBroker:&amp;lt;module&amp;gt;.&amp;lt;class&amp;gt;[:arguments] – ranks targets using any user-supplied custom&lt;br /&gt;
 # Python broker module, optionally with broker arguments. Such module can reside anywhere in&lt;br /&gt;
 # user’s PYTHONPATH&lt;br /&gt;
 #brokername=PythonBroker&lt;br /&gt;
 &lt;br /&gt;
 [alias]&lt;br /&gt;
 pecs=computing:ARC1:https://login.pecs.hpc.niif.hu:60000/arex&lt;br /&gt;
 szeged=computing:ARC1:https://login.szeged.hpc.niif.hu:60000/arex&lt;br /&gt;
 debrecen=computing:ARC1:https://login.debrecen.hpc.niif.hu:60000/arex&lt;br /&gt;
 budapest=computing:ARC1:https://login.budapest.hpc.niif.hu:60000/arex&lt;br /&gt;
 hp=budapest szeged&lt;br /&gt;
 sgi=pecs debrecen   &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Érdemes beállítani, hogy alapértelmezés szerint a FastestQueue brókert használja, ezáltal mindig arra a szuperszámítógépre fogja küldeni a jobokat, ahol a legkevesebb a várakozó jobok száma. A konfigurációs fájl részletes dokumentációját és az ARC kliensek leírásait [http://www.nordugrid.org/documents/arc-ui.pdf itt lehet] megnézni.&lt;br /&gt;
&lt;br /&gt;
=== Grid proxy készítése ===&lt;br /&gt;
&lt;br /&gt;
Ha már telepítettük a tanúsítványunkat és az ARC klienseket akkor a következő lépés az, hogy egy proxy tanúsítványt kell készítenünk, ami alapértelmezés szerint 12 óráig érvényes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ arcproxy &lt;br /&gt;
 Enter pass phrase for private key:&lt;br /&gt;
 Your identity: /C=HU/O=NIIF/OU=SLCS/L=hpcteszt/CN=joe&lt;br /&gt;
 Proxy generation succeeded&lt;br /&gt;
 Your proxy is valid until: 2015-03-30 05:01:09&lt;br /&gt;
 $    &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
Tesztelési célból ezeket a parancsokat érdemes kipróbálni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ arcinfo -c szeged  &lt;br /&gt;
 $ arcinfo -c hp -l&lt;br /&gt;
 $ arcinfo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid job készítése ===&lt;br /&gt;
A jobok leírására több formátumot is használhatunk: [https://www.ogf.org/documents/GFD.56.pdf JSDL], vagy [http://www.nordugrid.org/documents/xrsl.pdf xRSL]. Így adjuk meg, hogy a jobunknak mire van szüksége. Itt egy példa job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
 $ cat job.xrsl &lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 (executable=&amp;quot;matlab.sh&amp;quot;)&lt;br /&gt;
 (arguments=&amp;quot;matlab.m&amp;quot;)&lt;br /&gt;
 (stdout=&amp;quot;stdout.txt&amp;quot;)&lt;br /&gt;
 (stderr=&amp;quot;stderr.txt&amp;quot;)&lt;br /&gt;
 (jobname=&amp;quot;Matlab test&amp;quot;)&lt;br /&gt;
 (inputFiles=&lt;br /&gt;
 (&amp;quot;matlab.m&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
 )&lt;br /&gt;
 (memory&amp;gt;=&amp;quot;1000&amp;quot;)&lt;br /&gt;
 (gmlog=&amp;quot;gm.log&amp;quot;)&lt;br /&gt;
 (wallTime=&amp;quot;240&amp;quot;)&lt;br /&gt;
 (runTimeEnvironment=&amp;quot;APPS/MATH/MATLAB-7.13&amp;quot;)  &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cat matlab.sh &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo&lt;br /&gt;
 echo &amp;quot;Compute node: &amp;quot; `/bin/hostname -f`&lt;br /&gt;
 echo&lt;br /&gt;
 matlab -nodisplay &amp;lt; $1&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cat matlab.m&lt;br /&gt;
 2+3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennél a példánál a '''APPS/MATH/MATLAB-7.13''' futásidejű környezetet kértük, ezáltal ez a job csak azon a szuperszámítógépen fog elindulni, ahol ez telepítve van. Továbbá azt kértük még, hogy 240 percig futhasson és legalább 1000 MByte memória rendelkezésre álljon.&lt;br /&gt;
&lt;br /&gt;
Az '''arcinfo -l''' paranccsal tudjuk megnézni, hogy a szuperszámítógépeken milyen futás idejű környezetek (runtime environment-ek) vannak telepítve. Ha szeretnénk egy új környezet beállíttatni, akkor [mailto:hpc-support@niif.hu ide] kell levelet küldeni.&lt;br /&gt;
&lt;br /&gt;
==== OpenMP példa ====&lt;br /&gt;
&lt;br /&gt;
Job elkészítése:&lt;br /&gt;
&amp;lt;code&amp;gt;        &lt;br /&gt;
 $ cat job-openmp.xrsl &lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 (executable=&amp;quot;omp_mm&amp;quot;)&lt;br /&gt;
 (stdout=&amp;quot;stdout.txt&amp;quot;)&lt;br /&gt;
 (stderr=&amp;quot;stderr.txt&amp;quot;)&lt;br /&gt;
 (jobname=&amp;quot;OpenMP test&amp;quot;)&lt;br /&gt;
 (queue=&amp;quot;test&amp;quot;)&lt;br /&gt;
 (executables=&amp;quot;omp_mm&amp;quot;)&lt;br /&gt;
 (count=&amp;quot;10&amp;quot;)&lt;br /&gt;
 (countpernode=&amp;quot;10&amp;quot;)&lt;br /&gt;
 (environment=(&amp;quot;OMP_NUM_THREADS&amp;quot; &amp;quot;10&amp;quot;))&lt;br /&gt;
 (queue=&amp;quot;test&amp;quot;)&lt;br /&gt;
 (inputFiles=&lt;br /&gt;
    (&amp;quot;omp_mm&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
 )&lt;br /&gt;
 (memory&amp;gt;=&amp;quot;2600&amp;quot;)&lt;br /&gt;
 (gmlog=&amp;quot;gm.log&amp;quot;)&lt;br /&gt;
 (wallTime=&amp;quot;20&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Job elküldése:&lt;br /&gt;
&lt;br /&gt;
 $ arcsub job-openmp.xrsl&lt;br /&gt;
 Job submitted with jobid: https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
&lt;br /&gt;
Job állapotának a lekérdezése:&lt;br /&gt;
&lt;br /&gt;
 $ arcstat https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 Job: https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
  Name: OpenMP test&lt;br /&gt;
  State: Finished&lt;br /&gt;
  Exit Code: 0&lt;br /&gt;
 &lt;br /&gt;
 Status of 1 jobs was queried, 1 jobs returned information&lt;br /&gt;
&lt;br /&gt;
Job letöltése:&lt;br /&gt;
&lt;br /&gt;
 $ arcget https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 Results stored at: cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 Jobs processed: 1, successfully retrieved: 1, successfully cleaned: 1&lt;br /&gt;
 zion:~ joe $ cd cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $ ls -l&lt;br /&gt;
 total 16&lt;br /&gt;
 drwx------  12 joe  staff   408 Mar 29 21:24 gm.log&lt;br /&gt;
 -rw-------   1 joe  staff     0 Mar 29 21:24 stderr.txt&lt;br /&gt;
 -rw-------   1 joe  staff  6362 Mar 29 21:24 stdout.txt&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $&lt;br /&gt;
&lt;br /&gt;
Adatok ellenőrzése:&lt;br /&gt;
&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $ head stdout.txt &lt;br /&gt;
 Starting matrix multiple example with 10 threads&lt;br /&gt;
 Initializing matrices...&lt;br /&gt;
 Thread 0 starting matrix multiply...&lt;br /&gt;
 Thread=0 did row=0&lt;br /&gt;
 Thread 9 starting matrix multiply...&lt;br /&gt;
 Thread 6 starting matrix multiply...&lt;br /&gt;
 Thread=0 did row=1&lt;br /&gt;
 Thread 5 starting matrix multiply...&lt;br /&gt;
 Thread=5 did row=50&lt;br /&gt;
 Thread=5 did row=51&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe$           &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== MPI példa ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cat job-mpi.xrsl &lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 (executable=&amp;quot;mpi.sh&amp;quot;)&lt;br /&gt;
 (stdout=&amp;quot;stdout.txt&amp;quot;)&lt;br /&gt;
 (stderr=&amp;quot;stderr.txt&amp;quot;)&lt;br /&gt;
 (jobname=&amp;quot;MPI test&amp;quot;)&lt;br /&gt;
 (executables=&amp;quot;connectivity&amp;quot; &amp;quot;mpi.sh&amp;quot;)&lt;br /&gt;
 (count=&amp;quot;10&amp;quot;)&lt;br /&gt;
 (inputFiles=&lt;br /&gt;
     (&amp;quot;connectivity&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
     (&amp;quot;mpi.sh&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
 )&lt;br /&gt;
 (memory&amp;gt;=&amp;quot;2600&amp;quot;)&lt;br /&gt;
 (gmlog=&amp;quot;gm.log&amp;quot;)&lt;br /&gt;
 (wallTime=&amp;quot;20&amp;quot;)&lt;br /&gt;
 (runTimeEnvironment&amp;gt;=ENV/GCC/MPI/OPENMPI-1.4.3)  &lt;br /&gt;
&lt;br /&gt;
 $ cat mpi.sh &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mpirun -np 10 ./connectivity -v   &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Grafikus felületű ARC kliens ====&lt;br /&gt;
Parancssoros klienseken kívül használni lehet még grafikus klienseket is. [http://sourceforge.net/projects/arc-gui-clients/?source=directory Innen tudják] letölteni őket.&lt;br /&gt;
&lt;br /&gt;
[[Category: HPC]]&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=HPC&amp;diff=3364</id>
		<title>HPC</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=HPC&amp;diff=3364"/>
				<updated>2015-10-07T05:20:52Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Magyar Szuperszámítógépek összehasonlítása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[PRACE_User_Support|NIIF HPC Support in English]]&lt;br /&gt;
== A szuperszámítógépekről ==&lt;br /&gt;
Az NIIF Intézet szuperszámítógép szolgáltatása tudományos számítási feladatok futtatására, valamint tudományos célú adattárolásra szolgál. A jelenleg integrált szuperszámítógép-rendszer komponensei négy helyszínen találhatók:&lt;br /&gt;
&lt;br /&gt;
* Debreceni Egyetem&lt;br /&gt;
* NIIFI központ&lt;br /&gt;
* Pécsi Tudományegyetem&lt;br /&gt;
* Szegedi Tudományegyetem&lt;br /&gt;
&lt;br /&gt;
A tudományos számítási feladatok különböző típusainak minél szélesebb körű lefedettsége érdekében az egyes helyszíneken különböző felépítésű gépek találhatók: egy helyszínen SMP/ccNUMA, három helyszínen pedig &amp;quot;fat-node&amp;quot; fürtözött megoldás. Az alrendszereket az NIIFI nagy sávszélességű, alacsony késleltetésű HBONE+ adathálózatán keresztül, ARC grid köztesréteg, valamint harmonizált felhasználói azonosítás segítségével integráljuk egységes elvek mentén elérhető számítási egységgé. Az erőforrás jelenleg Magyarország legnagyobb tudományos számítás céljára felhasználható erőforrása, amely összesen 50 billió lebegőpontos művelet elvégzését teszi lehetővé másodpercenként.&lt;br /&gt;
A szuperszámítógép-rendszert az NIIFI üzemelteti és fejleszti. A rendszerhez regisztrációt követően, minden olyan személy vagy kutatócsoport hozzáférhet, amely tagintézményi szerződéses kapcsolatban áll az NIIF Intézettel.&lt;br /&gt;
A gépen megtalálhatók és futtathatók a legkorszerűbb fejlesztőeszközök és tudományos számításra szolgáló alkalmazások, valamint, az NIIF adatközpontban elhelyezett alrendszer kivételével, valamennyi alrendszer kiegészül a számítási feladatok eredményeit megjelenítő vizualizációs eszközökkel.&lt;br /&gt;
&lt;br /&gt;
==== Magyar Szuperszámítógépek összehasonlítása ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Helyszín&lt;br /&gt;
| Budapest&lt;br /&gt;
| Budapest2&lt;br /&gt;
| Szeged&lt;br /&gt;
| Debrecen&lt;br /&gt;
| Debrecen2 (beüzemelése folyamatban van)&lt;br /&gt;
| Pécs&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| HP SL250s &lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| SGI ICE8400EX&lt;br /&gt;
| HP SL250s&lt;br /&gt;
| SGI UV 1000&lt;br /&gt;
|- &lt;br /&gt;
| CPU-k / node &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 4 &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 192 &lt;br /&gt;
|- &lt;br /&gt;
| Core-ok / CPU &lt;br /&gt;
| 12&lt;br /&gt;
| 10&lt;br /&gt;
| 12&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|- &lt;br /&gt;
| Memória / node &lt;br /&gt;
| 66 GB&lt;br /&gt;
| 63 GB &lt;br /&gt;
| 132 GB&lt;br /&gt;
| 47 GB&lt;br /&gt;
| 125 GB&lt;br /&gt;
| 6 TB&lt;br /&gt;
|- &lt;br /&gt;
| Memória / core &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 3 GB &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 7.5 GB&lt;br /&gt;
| 5 GB&lt;br /&gt;
|- &lt;br /&gt;
| CPU &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz&lt;br /&gt;
| Intel Xeon E5-2680 v2 @ 2.80GHz    &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz &lt;br /&gt;
| Intel Xeon X5680 @ 3.33 GHz&lt;br /&gt;
| Intel Xeon E5-2650 v2 @ 2.60GHz &lt;br /&gt;
| Intel Xeon X7542 @ 2.66 GHz&lt;br /&gt;
|- &lt;br /&gt;
| GPU &lt;br /&gt;
| -&lt;br /&gt;
| -   &lt;br /&gt;
| 2 * 6 Nvidia M2070&lt;br /&gt;
| -&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x &lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Intel Xeon Phi &lt;br /&gt;
| -&lt;br /&gt;
| 2 * Intel(R) Xeon Phi(TM) MIC SE10/7120&lt;br /&gt;
| -&lt;br /&gt;
| -  &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| Linpack teljesítmény (Rmax)&lt;br /&gt;
| 5 Tflops&lt;br /&gt;
| 27 Tflops&lt;br /&gt;
| 20 Tflops&lt;br /&gt;
| 18 Tlops&lt;br /&gt;
| 202 Tflops&lt;br /&gt;
| 10 Tflops&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok száma &lt;br /&gt;
| 32&lt;br /&gt;
| 14&lt;br /&gt;
| 50&lt;br /&gt;
| 128&lt;br /&gt;
| 84&lt;br /&gt;
| 1&lt;br /&gt;
|-  &lt;br /&gt;
| Scheduler &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]  &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
|- &lt;br /&gt;
| MPI &lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| IntelMPI (impi) &lt;br /&gt;
| OpenMPI (ompi) &lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== További információ ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Debrecen2_GPU_klaszter|Debrecen2]]&lt;br /&gt;
* [[Budapest2_klaszter|Budapest2]]&lt;br /&gt;
* [[HPC-Portal|HPC portál: projekt és témaszámok kezelése, leállások, statisztikák]]&lt;br /&gt;
* [[NIIF_szuperszámítógépek_használata|A szuperszámítógépek használata]]&lt;br /&gt;
* [[HPC-GYIK|GY.I.K]]&lt;br /&gt;
* [http://www.niif.hu/hu/niif_intezet/az_niifi_szuperszamitogepek_hasznalata NIIF HPC oldal]&lt;br /&gt;
* [http://conference.niif.hu/event/3/session/23/contribution/25 HPC tutorial (Networkshop 2015)]&lt;br /&gt;
* [http://www.training.prace-ri.eu PRACE training portal]&lt;br /&gt;
* [[PRACE_User_Support|PRACE User Support]]&lt;br /&gt;
[[Kategória: HPC]]&lt;br /&gt;
[[Kategória: Összefoglaló lapok]]&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Budapest2_klaszter&amp;diff=3363</id>
		<title>Budapest2 klaszter</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Budapest2_klaszter&amp;diff=3363"/>
				<updated>2015-10-01T07:41:37Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Alkalmazások lefordítása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Klaszter&lt;br /&gt;
| Budapest2&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 10 × 2 Xeon E5-2680v2 2.80GHz  &lt;br /&gt;
|- &lt;br /&gt;
| Intel Xeon Phi / node&lt;br /&gt;
| 2 × Intel(R) Xeon Phi(TM) MIC SE10/7120 &lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 14 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max core-ok / projekt&lt;br /&gt;
| 140 (7db node)&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 3000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.budapest2.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.budapest2.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.budapest2.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.budapest2.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.budapest2.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
    BUDAPEST2[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== Intel Xeon Phi használata ==&lt;br /&gt;
&lt;br /&gt;
* [http://software.intel.com/en-us/mic-developer Itt] található az Intel hivatalos dokumentációja ezzel kapcsolatban&lt;br /&gt;
* [http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor Itt] tájékozódhatnak az Intel matematikai könyvtárainak a linkeléséről&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Intel Xeon Phi-k lefoglalása ====&lt;br /&gt;
A Intel Xeon Phi-k lefoglalása a következő direktívával történik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=mic:N&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; a Intel Xeon Phi-k/node számát adja meg, ami 1 és 2 lehet maximum.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépeken két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt; sor. Utóbbi az éles számolásokra való, előbbi fejlesztés és tesztelés céljára használható. A teszt sorban összesen 1 node-ot, maximum fél órára lehet lefoglalni. Az alapértelmezett sor a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt;. A teszt partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. A maximális memória/core 3000 MB lehet.&lt;br /&gt;
&lt;br /&gt;
Amennyiben a szálaknak 4GB-nál több virtuális memóriára van szükségük, akkor az indítandó program elé a következő parancsot is el kell helyezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -v unlimited&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Alkalmazás-specifikus beállítások ===&lt;br /&gt;
==== Gromacs ====&lt;br /&gt;
A Gromacs programot a következő mpirun paraméterrel kell indítani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mpirun --report-pid ${TMPDIR}/mpirun.pid ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Debrecen2_GPU_klaszter&amp;diff=3362</id>
		<title>Debrecen2 GPU klaszter</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Debrecen2_GPU_klaszter&amp;diff=3362"/>
				<updated>2015-10-01T07:41:12Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Alkalmazások lefordítása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Klaszter&lt;br /&gt;
| Debrecen2 (Leo)&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 8 × 2 Xeon E5-2650v2 2.60GHz  &lt;br /&gt;
|- &lt;br /&gt;
| GPU / node&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 84 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max core-ok / projekt&lt;br /&gt;
| 336 (21db node)&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 7800 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CPU idő kérés ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{ATTENTION|A CPU idő igénylésekor egy olyan rövid indoklást várunk a HPC projekt vezetőktől, amiből kiderül, hogy a futtatandó alkalmazás képes GPU-t használni. Erre azért van szükség, mert az erőforrás teljesítményének nagyobbik része GPU gyorsításból származik, egy gyorsítás nélküli program a CPU-kat lefoglalja, korlátozva ezzel a GPU-k használatát, ami kihasználatlansághoz vezet. Az NVidia  [http://www.nvidia.com/object/gpu-applications.html közzétett egy listát] arról, hogy melyik alkalmazás rendelkezik jelenleg hivatalosan NVidia GPU támogatással, de természetesen egyéb, GPU-t használó program is nagy valószínűséggel jól fut a gépen.}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.debrecen2.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.debrecen2.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.debrecen2.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.debrecen2.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.debrecen2.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
    DEBRECEN2[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== GPU-k lefoglalása ====&lt;br /&gt;
A GPU-k lefoglalása a következő direktívával törénik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=gpu:N&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; a GPU-k/node számát adja meg, ami 1, 2 és 3 lehet maximum.&lt;br /&gt;
&lt;br /&gt;
==== Interaktív használat ====&lt;br /&gt;
Rövid interaktív feladatokat az 'srun' paranccsal tudunk beküldeni, pl.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun -l -n 1 -t TIME --gres=gpu:1 -A ACCOUNT APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Batch job-ok indítása ====&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépeken két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt; sor. Utóbbi az éles számolásokra való, előbbi fejlesztés és tesztelés céljára használható. A teszt sorban összesen 1 node-ot, maximum fél órára lehet lefoglalni. Az alapértelmezett sor a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt;. A teszt partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A teszt partícióban 1 GPU található (&amp;lt;code&amp;gt;--gres=gpu:1&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. A maximális memória/core 7800 MB lehet.&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=NIIF_szupersz%C3%A1m%C3%ADt%C3%B3g%C3%A9pek_haszn%C3%A1lata&amp;diff=3361</id>
		<title>NIIF szuperszámítógépek használata</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=NIIF_szupersz%C3%A1m%C3%ADt%C3%B3g%C3%A9pek_haszn%C3%A1lata&amp;diff=3361"/>
				<updated>2015-10-01T07:40:43Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Alkalmazások lefordítása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== A szuperszámítógépekről ==&lt;br /&gt;
Az NIIF Intézet szuperszámítógép szolgáltatása tudományos számítási feladatok futtatására, valamint tudományos célú adattárolásra szolgál. A jelenleg integrált szuperszámítógép-rendszer komponensei négy helyszínen találhatók:&lt;br /&gt;
&lt;br /&gt;
* Debreceni Egyetem&lt;br /&gt;
* NIIFI központ&lt;br /&gt;
* Pécsi Tudományegyetem&lt;br /&gt;
* Szegedi Tudományegyetem&lt;br /&gt;
&lt;br /&gt;
A tudományos számítási feladatok különböző típusainak minél szélesebb körű lefedettsége érdekében az egyes helyszíneken különböző felépítésű gépek találhatók: egy helyszínen SMP/ccNUMA, három helyszínen pedig &amp;quot;fat-node&amp;quot; fürtözött megoldás. Az alrendszereket az NIIFI nagy sávszélességű, alacsony késleltetésű HBONE+ adathálózatán keresztül, ARC grid köztesréteg, valamint harmonizált felhasználói azonosítás segítségével integráljuk egységes elvek mentén elérhető számítási egységgé. Az erőforrás jelenleg Magyarország legnagyobb tudományos számítás céljára felhasználható erőforrása, amely összesen 50 billió lebegőpontos művelet elvégzését teszi lehetővé másodpercenként.&lt;br /&gt;
A szuperszámítógép-rendszert az NIIFI üzemelteti és fejleszti. A rendszerhez regisztrációt követően, minden olyan személy vagy kutatócsoport hozzáférhet, amely tagintézményi szerződéses kapcsolatban áll az NIIF Intézettel.&lt;br /&gt;
A gépen megtalálhatók és futtathatók a legkorszerűbb fejlesztőeszközök és tudományos számításra szolgáló alkalmazások, valamint, az NIIF adatközpontban elhelyezett alrendszer kivételével, valamennyi alrendszer kiegészül a számítási feladatok eredményeit megjelenítő vizualizációs eszközökkel.&lt;br /&gt;
&lt;br /&gt;
==== Az NIIF Szuperszámítógépek összehasonlítása ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Helyszín&lt;br /&gt;
| Budapest&lt;br /&gt;
| Budapest2&lt;br /&gt;
| Szeged&lt;br /&gt;
| Debrecen&lt;br /&gt;
| Debrecen2 (beüzemelése folyamatban van)&lt;br /&gt;
| Pécs&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| HP SL250s &lt;br /&gt;
| HP CP4000BL&lt;br /&gt;
| SGI ICE8400EX&lt;br /&gt;
| HP SL250s&lt;br /&gt;
| SGI UV 1000&lt;br /&gt;
|- &lt;br /&gt;
| CPU-k / node &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 4 &lt;br /&gt;
| 2&lt;br /&gt;
| 2 &lt;br /&gt;
| 192 &lt;br /&gt;
|- &lt;br /&gt;
| Core-ok / CPU &lt;br /&gt;
| 12&lt;br /&gt;
| 10&lt;br /&gt;
| 12&lt;br /&gt;
| 6&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|- &lt;br /&gt;
| Memória / node &lt;br /&gt;
| 66 GB&lt;br /&gt;
| 63 GB &lt;br /&gt;
| 132 GB&lt;br /&gt;
| 47 GB&lt;br /&gt;
| 125 GB&lt;br /&gt;
| 6 TB&lt;br /&gt;
|- &lt;br /&gt;
| Memória / core &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 3 GB &lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 2.6 GB&lt;br /&gt;
| 7.5 GB&lt;br /&gt;
| 5 GB&lt;br /&gt;
|- &lt;br /&gt;
| CPU &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz&lt;br /&gt;
| Intel Xeon E5-2680 v2 @ 2.80GHz    &lt;br /&gt;
| AMD Opteron 6174 @ 2.2GHz &lt;br /&gt;
| Intel Xeon X5680 @ 3.33 GHz&lt;br /&gt;
| Intel Xeon E5-2650 v2 @ 2.60GHz &lt;br /&gt;
| Intel Xeon X7542 @ 2.66 GHz&lt;br /&gt;
|- &lt;br /&gt;
| GPU &lt;br /&gt;
| -&lt;br /&gt;
| -   &lt;br /&gt;
| 2 * 6 Nvidia M2070&lt;br /&gt;
| -&lt;br /&gt;
| 68 nodes * 3 Nvidia K20x + 16 nodes * 3 Nvidia K40x &lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Intel Xeon Phi &lt;br /&gt;
| -&lt;br /&gt;
| 2 Intel(R) Xeon Phi(TM) coprocessor x100 family&lt;br /&gt;
| -&lt;br /&gt;
| -  &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|- &lt;br /&gt;
| Linpack sebesség (Rmax)&lt;br /&gt;
| 5 Tflops&lt;br /&gt;
| 27 Tflops&lt;br /&gt;
| 20 Tflops&lt;br /&gt;
| 18 Tlops&lt;br /&gt;
| 202 Tflops&lt;br /&gt;
| 10 Tflops&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok száma &lt;br /&gt;
| 32&lt;br /&gt;
| 14&lt;br /&gt;
| 50&lt;br /&gt;
| 128&lt;br /&gt;
| 84&lt;br /&gt;
| 1&lt;br /&gt;
|-  &lt;br /&gt;
| Scheduler &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]  &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM]&lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
| [http://slurm.schedmd.com/ SLURM] &lt;br /&gt;
|- &lt;br /&gt;
| MPI &lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| IntelMPI (impi)&lt;br /&gt;
| OpenMPI (ompi) &lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
| OpenMPI (ompi)&lt;br /&gt;
| SGI MPT (mpt)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Köszönetnyilvánítás ===&lt;br /&gt;
Tudományos publikációkban a következő köszönetnyilvánítást javasoljuk:&lt;br /&gt;
&lt;br /&gt;
'''We acknowledge [PRACE/NIIF] for awarding us access to resource based in Hungary at [Budapest/Debrecen/Pécs/Szeged].'''&lt;br /&gt;
&lt;br /&gt;
Where technical support has been received the following additional text should also be used:&lt;br /&gt;
&lt;br /&gt;
'''The support of [name of person/people] from NIIF Institute, Hungary to the technical work is gratefully acknowledged.'''&lt;br /&gt;
&lt;br /&gt;
== Hozzáférés a szuperszámítógépekhez == &lt;br /&gt;
A szuperszámítógépekhez kulcsos SSH használatával lehet hozzáférni. Ajánlott UTF-8 képes terminált használ az ékezetes betűk megjeelenítése érdekében. PUTTY terminál esetén a ''Window/Translation'' beállítás alatt a character set-et kell UTF-8-ra állítani.&lt;br /&gt;
&lt;br /&gt;
=== SSH belépés ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ssh USER@login.SITE.hpc.niif.hu&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;USER&amp;lt;/code&amp;gt; a felhasználónév, a &amp;lt;code&amp;gt;SITE&amp;lt;/code&amp;gt; pedig a belépéshez használt szupergép neve: '''budapest''', '''debrecen''', '''pecs''', '''szeged'''. Nem alapértelmezett kulcs használata a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval lehetséges.&lt;br /&gt;
&lt;br /&gt;
Belépés a szegedi gépre alice felhasználóként, az SSH privát kulcsot a &amp;lt;code&amp;gt;keys/szeged&amp;lt;/code&amp;gt; fájlból olvasva:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ssh -i keys/szeged alice@login.szeged.hpc.niif.hu&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fájl másolás SCP segítségével ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scp USER@login.SITE.hpc.niif.hu:FILE FILE&lt;br /&gt;
scp FILE USER@login.SITE.hpc.niif.hu:FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A szegedi gép HOME könyvtárában lévő &amp;lt;code&amp;gt;stuff.tgz&amp;lt;/code&amp;gt; fájl letöltése a helyi gép aktuális könyvtárába:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
scp bob@login.szeged.hpc.niif.hu:stuff.tgz .&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatátvitel rsync segítségével ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához az SSH-t és az rsync-et együtt kell használni. Fel- és leszinkronizálás:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -a -e ssh DIRECTORY USER@login.budapest.hpc.niif.hu:/home/USER&lt;br /&gt;
rsync -a -e ssh USER@login.budapest.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A budapesti gépre szinkronizálom a helyi &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; könyvtár tartalmát (nem az alapértelmezett kulcsot használva) és a másolás folyamatát nyomonkövetem:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
rsync -a -h --progress -e &amp;quot;ssh -i keys/budapest&amp;quot; ./src alice@login.budapest.hpc.niif.hu:/home/alice&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
A szupergépek elsődleges felhasználói felülete a Bash shell. Az automatikusan betöltődő NIIF Common Environment (NCE) a PS1 promptot a következőképp állítja be:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                    |&lt;br /&gt;
    BUDAPEST[login] ~ (0)$&lt;br /&gt;
        |      |       |&lt;br /&gt;
   HPC állomás |       |&lt;br /&gt;
         rövid gép név |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
A szupergépekre telepített alkalmazásokat az ún. modul rendszer segítségével lehet használ. A modul rendszer lehetővé teszi egy adott alkalmazás több verziójának használatát is. Feladata a shell környezeti változók helyes beállítása. Normál felhasználók számára az alapértelmezett modul környezet automatikusan betöltődik. Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load APPS&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;APPS&amp;lt;/code&amp;gt; a betöltendő modulok space-szel elválasztott listája.&lt;br /&gt;
&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
==== Példa ====&lt;br /&gt;
A Maple, netcfd és az R csomagok betöltése:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load maple netcdf R&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához használjuk a [http://www.techrepublic.com/blog/linux-and-open-source/learn-to-use-extended-file-attributes-in-linux-to-boost-security/](fájlrendszer ACL-eket). Az ACL-ekkel a hagyományos unix engedélyeken felül finoman szabályozhatjuk a fájlok és könyvtárak hozzáférési engedélyeit. A következő példában a &amp;lt;code&amp;gt;$HOME/Shared&amp;lt;/code&amp;gt; könyvtárat osztjuk egy munkatárs számára:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# a home könyvtár beállítása&lt;br /&gt;
# user1 user számára belépsi engedély: u:user1:x &lt;br /&gt;
$ setfacl -m u:user1:x $HOME&lt;br /&gt;
$ getfacl $HOME&lt;br /&gt;
# file: user2/user2&lt;br /&gt;
# owner: user2&lt;br /&gt;
# group: user2&lt;br /&gt;
user::rwx&lt;br /&gt;
user:user1:--x&lt;br /&gt;
group::r-x&lt;br /&gt;
mask::r-x&lt;br /&gt;
other::---&lt;br /&gt;
# Shared könyvtár megosztása&lt;br /&gt;
# user1 számára minden unix jog&lt;br /&gt;
$ cd&lt;br /&gt;
$ mkdir Shared&lt;br /&gt;
$ setfacl -m u:user1:rwx $HOME/Shared&lt;br /&gt;
$ getfacl Shared&lt;br /&gt;
# file: Shared&lt;br /&gt;
# owner: user2&lt;br /&gt;
# group: user2&lt;br /&gt;
user::rwx&lt;br /&gt;
user:user1:rwx&lt;br /&gt;
group::rwx&lt;br /&gt;
mask::rwx&lt;br /&gt;
other::r-x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Python csomag telepítése a saját home könyvtárunkba ==&lt;br /&gt;
Itt egy példa arra, hogy hogyan tudjuk feltelepíteni a mercurial python csomagot.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module load python &lt;br /&gt;
$ pip install --user mercurial&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login és vserver node-jai osztott home könyvtárral vannak összekötve. Fontos, hogy az osztott könyvtárat a számítási node-ok nem érik el, ezért az osztott home-ot csak tárolásra ill. megosztásra lehet használni. Az osztott terület Debrecenben van, ezért ott a leggyorsabb. A másik három helyen lassabb a hozzáférés a nagyobb távolság miatt. A programok kimenetét továbbra is a lokális scratch vagy home könyvtárba kell írni. Amelyik login node-on használni szeretnénk az osztott home könyvtárat, ott adjuk ki a következő parancsokat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd; mkdir shared; ln -s /mnt/fhgfs/home/$USER shared/$USER &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ezek után a &amp;lt;code&amp;gt;$HOME/shared/$USER&amp;lt;/code&amp;gt; könyvtárba másoljuk a megosztott fájlokat. Ez a könyvtár a következő környezeti változóba is exportálódik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$NCE_SHARED &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Biztonsági mentés, adatmegosztás ===&lt;br /&gt;
A következő példa mentést végez a &amp;lt;code&amp;gt;$HOME/data&amp;lt;/code&amp;gt; könyvtárról:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP $HOME/data $NCE_SHARED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Törölje a fájlokat a mentésben is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/data $NCE_SHARED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelezőlistára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
Weboldal: http://slurm.schedmd.com&lt;br /&gt;
&lt;br /&gt;
A szupergépeken CPU óra (gépidő) alapú ütemezés működik. Ez azt jelenti, hogy a fogyasztási időtartamra (hónap) az elérhető maximális gépidő fel van osztva a felhasználók között. Minden UNIX felhasználó egy vagy több számlához (''Account'') tartozhat. Az ütemező számla egy adott HPC-s projekthez tartozik, hasonló a UNIX csoporthoz. Szupergépes feladatokat csak az egyes számlák terhére lehet indítani. A CPU óra az elhasznált idő (''Walltime'') és az igényelt processzorok számának szorzata. Például a budapesti gépen 2 db node (48 processzor mag) foglalása 30 percre 48 * 30 = 1440 CPU perc = 24 CPU óra. A CPU órát az ütemező a futás kezdetétől a befejezésig méri.&lt;br /&gt;
&lt;br /&gt;
'''Rendkívül fontos arról meggyőződni, hogy a futtatandó alkalmazás rendesen kihasználja-e a szupergépet. Egy üres vagy rosszul futó job hamar elhasználja a rendelkezésre álló gépidőt. Elfogyasztott gépidő esetén új jobokat már nem lehet indítani, és meg kell várni a számlázási időszak végét. A gépidő limitek (Account Limit) minden hónap elején jóváíródnak.'''&lt;br /&gt;
&lt;br /&gt;
Számláink állapotáról a következő paranccsal kapunk információt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A parancs a következő táblázatot jeleníti meg. A felhasználó két számlához (foobar,barfoo) is hozzáfér, futatthat a számla terhére. Saját magát megcsillagozva látja a listában. Bobbal mindkét számlán (Account oszlop) Alice is osztozik. A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyeik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még alérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
alice                0 |           foobar           0 |             0           0&lt;br /&gt;
bob *                0 |           foobar           0 |             0           0&lt;br /&gt;
&lt;br /&gt;
bob *                7 |           barfoo           7 |         1,000         993&lt;br /&gt;
alice                0 |           barfoo           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
Alice 2 nap 10 órára és 2 node-ra szeretne foglalást kérni, megnézi van-e elég gépidő a számláján:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N 2 -t 2-10:00:00&lt;br /&gt;
&lt;br /&gt;
Estimated CPU hours: 2784&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Sajnos ebben a hónapban erre már nem telik.&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csőkkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
Az ütemezőben 3 feladat van. Az első egy arrayjob, éppen erőforrásra vár (PENDING). A második egy MPI job, ami 4 node-on fut már 25 perce (TIME). A harmadik egy egy node-os OMP futtatás, éppen most indult el. A feladatik nevei (NAME) egyénileg adható meg. Rövid, informatív neveket érdemes adni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
squeue -l&lt;br /&gt;
&lt;br /&gt;
Wed Oct 16 08:30:07 2013              &lt;br /&gt;
     JOBID PARTITION     NAME     USER    STATE       TIME TIMELIMIT  NODES NODELIST(REASON)&lt;br /&gt;
591_[1-96]    normal    array    alice  PENDING       0:00     30:00      1 (None)&lt;br /&gt;
       589    normal      mpi      bob  RUNNING      25:55   2:00:00      4 cn[05-08]&lt;br /&gt;
       590    normal      omp    alice  RUNNING       0:25   1:00:00      1 cn09&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennek a 2 node-os batch jobnak a jellemző memóriaterhelés a következő volt: kb. 10GB virtuális és 6.5GB RSS memóriát használt el node-onként.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory 430&lt;br /&gt;
&lt;br /&gt;
 MaxVMSize  MaxVMSizeNode  AveVMSize     MaxRSS MaxRSSNode     AveRSS&lt;br /&gt;
---------- -------------- ---------- ---------- ---------- ----------&lt;br /&gt;
10271792K           cn06  10271792K   6544524K       cn06   6544524K   &lt;br /&gt;
10085152K           cn07  10085152K   6538492K       cn07   6534876K &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU felhasználás ellenőrzése ====&lt;br /&gt;
Nagyon fontos meggyőződni arról, hogy az alkalmazás kihasználja-e a rendelkezésre álló gépidőt. Egy futó alkalmazás a következő paranccsal tudunk monitorozni:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sjobcheck JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ez a job 4 node-on fut. A LOAD csoport a gép általános terheléséről ad információt és kb. a core-ok számával egyezik meg. A helyes felhasználásról a CPU csoport ad tájékoztatást. Ideális esetben a &amp;lt;code&amp;gt;User&amp;lt;/code&amp;gt; oszlop értékei 90 fölött vannak. Ez alatt valamilyen probléma lépett fel és a futást érdemes megszakítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hostname                     LOAD                       CPU              Gexec  &lt;br /&gt;
 CPUs (Procs/Total) [     1,     5, 15min] [  User,  Nice, System, Idle, Wio]&lt;br /&gt;
cn08    24 (   25/  529) [ 24.83, 24.84, 20.98] [  99.8,   0.0,   0.2,   0.0,   0.0] OFF&lt;br /&gt;
cn07    24 (   25/  529) [ 24.93, 24.88, 20.98] [  99.8,   0.0,   0.2,   0.0,   0.0] OFF&lt;br /&gt;
cn06    24 (   25/  529) [ 25.00, 24.90, 20.97] [  99.9,   0.0,   0.1,   0.0,   0.0] OFF&lt;br /&gt;
cn05    24 (   25/  544) [ 25.11, 24.96, 20.97] [  99.8,   0.0,   0.2,   0.0,   0.0] OFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=niif Start=2014-01-01&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
niif helyett a saját projektünk azonosítóját kell megadni.&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni. Az ütemezők összehasonlításáról és a Slurm-ban elérhető direktívákról a következő [http://slurm.schedmd.com/rosetta.pdf táblázat] ad bővebb tájékoztatást.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sbatch jobscript.sh&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépeken két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt; sor. Utóbbi az éles számolásokra való, előbbi fejlesztés és tesztelés céljára használható. A teszt sorban összesen 1 node-ot, maximum fél órára lehet lefoglalni. Az alapértelmezett sor a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt;. A teszt partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
A memória a CPU-hoz hasonlóan korlátozott, foglalható erőforrás. A felhasználás mérése a memória / core alapon történik: 1 core óra, 2600 MB órának felel meg. Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. Budapesten és Szegeden a maximális memória/core 2600 MB.&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 24 órára ad fel 96 db soros jobot. A &amp;lt;code&amp;gt;#SBATCH --array=1-96&amp;lt;/code&amp;gt; direktíva jelzi, hogy tömbfeladatról van szó. Az alkalmazást az &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; paranccsal kell indítani. Ebben az esetben ez egy shell szkript.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&lt;br /&gt;
A következő példában a test sorban 3 egy szálon dutó programot indítunk el. A programok és az inputok lehetnek különbözőek. Fontos, hogy az utolsó parancsot nem kell a háttérben (&amp;amp;) indítani és a wait-tel kell befejezni a job szkriptet.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&lt;br /&gt;
Bob felhasználó a barfoo számla terhére 2 node-ot, 12 órára foglal le egy MPI job számára. Az egyes node-okon 24 MPI szálat fog elindítani. A program stdout kimenetét a &amp;lt;code&amp;gt;slurm.out&amp;lt;/code&amp;gt; fájlba irányítja (&amp;lt;code&amp;gt;#SBATCH -o&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=24&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI UV SMP (Pécs) ====&lt;br /&gt;
A pécsi gépen legalább 6 szálon működő jobok futtatása lehetságes. Az egyetlen elfogadott paraméter a szálak szám (`-n`), amelynek 6 többszörösének kell lenni. Ezen a gépen nincs teszt sor. Kérjük, hogy 48-nál kevesebb szálon futó programokat az UV-n ne futtassanak! Egy szálú ill. array jobok futtatása nem lehetséges.&lt;br /&gt;
&lt;br /&gt;
===== OMP Példa =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH -n 48&lt;br /&gt;
#SBATCH --time=03:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
/opt/nce/bin/numainfo&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_NTASKS ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== SGI MPT MPI Példa =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH -n 48&lt;br /&gt;
#SBATCH --time=03:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
/opt/nce/bin/numainfo&lt;br /&gt;
mpirun $SLURM_NTASKS ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Jobok monitorozása =====&lt;br /&gt;
CPU használat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smonitor -n &amp;lt;JOBID&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Memória használat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smonitor -m &amp;lt;JOBID&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ütemezés sor foglaltsága:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sinfo_uv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI MPT MPI feladatok (Debrecen) ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani. Az SGI MPT MPI paraméterezése kicsit más, mint az OpenMPI. '''Debrecen az SGI MPT az alpértelmezett MPI környezet!'''&lt;br /&gt;
&lt;br /&gt;
Bob felhasználó a barfoo számla terhére 2 node-ot, 12 órára foglal le egy MPI job számára. Az egyes node-okon 24 MPI szálat fog elindítani. A program stdout kimenetét a &amp;lt;code&amp;gt;slurm.out&amp;lt;/code&amp;gt; fájlba irányítja (&amp;lt;code&amp;gt;#SBATCH -o&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=12&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
source /opt/nce/bin/machines&lt;br /&gt;
export MPI_OPT=&amp;quot;${MACHINES} -np ${SLURM_NTASKS_PER_NODE}&amp;quot;&lt;br /&gt;
mpirun ${MPI_OPT} ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== SGI PerfBoost egyéb MPI feladatokra (Debrecen) ====&lt;br /&gt;
Az SGI MPT lehetőséget ad arra, hogy nem MPT MPI-vel fordított MPI programok is használjunk. Ebben az esetben az MPI hívások MPT hívásokkal cserélődnek ki.&lt;br /&gt;
&lt;br /&gt;
Egy OpenMPI-re fordított program indítása:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A barfoo&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=12&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
source /opt/nce/bin/machines&lt;br /&gt;
export MPI_OPT=&amp;quot;${MACHINES} -np ${SLURM_NTASKS_PER_NODE}&amp;quot;&lt;br /&gt;
mpirun ${MPI_OPT} perfboost -ompi ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CPU binding ====&lt;br /&gt;
Az MPI programok teljesítménye általában javítható a processzek CPU magokhoz kötésével. Ilyenkor a párhuzamos program szálait az operációs rendszer nem ütemezi a CPU magok között, ezért javulhat a memória lokalizáció (kevesebb cache miss). A kötés használata ajánlott. Tesztekkel meg kell győződni, hogy egy adott alkalmazás esetén melyik kötési stratégia adja a legjobb eredményt. A következő beállítások az OpenMPI környezetre vontakoznak. A kötésekről részletes információt a &amp;lt;code&amp;gt;--report-bindings&amp;lt;/code&amp;gt; MPI opcióval kaphatunk. Az indítási parancsok melett a részletes binding információ néhány sora is látható. Fontos, hogy az ütemező task binding-ját nem kell használni!&lt;br /&gt;
&lt;br /&gt;
===== Kötés CPU magonként =====&lt;br /&gt;
Ebben az esetben az MPI szálak (rank) sorban töltik fel a CPU magokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Indítási parancs: mpirun --bind-to-core --bycore&lt;br /&gt;
&lt;br /&gt;
[cn05:05493] MCW rank 0 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05493] MCW rank 1 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05493] MCW rank 2 bound to socket 0[core 2]: [. . B . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05493] MCW rank 3 bound to socket 0[core 3]: [. . . B . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Kötés CPU foglalat szerint =====&lt;br /&gt;
Ebben az esetben az MPI szálak váltakozva töltik fel a CPU-kat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Indítási parancs: mpirun --bind-to-core --bysocket&lt;br /&gt;
&lt;br /&gt;
[cn05:05659] MCW rank 0 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05659] MCW rank 1 bound to socket 1[core 0]: [. . . . . . . . . . . .][B . . . . . . . . . . .]&lt;br /&gt;
[cn05:05659] MCW rank 2 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05659] MCW rank 3 bound to socket 1[core 1]: [. . . . . . . . . . . .][. B . . . . . . . . . .]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Kötés node-ok szerint =====&lt;br /&gt;
Ebben az esetben az MPI szálak váltakozva töltik fel a node-okat. Lagalább 2 node foglalása szükséges.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Indítási parancs: mpirun --bind-to-core --bynode&lt;br /&gt;
&lt;br /&gt;
[cn05:05904] MCW rank 0 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn05:05904] MCW rank 2 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn06:05969] MCW rank 1 bound to socket 0[core 0]: [B . . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
[cn06:05969] MCW rank 3 bound to socket 0[core 1]: [. B . . . . . . . . . .][. . . . . . . . . . . .]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMP (OMP) feladatok ====&lt;br /&gt;
OpenMP párhuzamos alkalmazásokhoz maximum 1 node-ot lehet lefoglalni. Az OMP szálák számát az &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; környezeti változóval kell megadni. A változót vagy az alkamazás elé kell írni (ld. példa), vagy exportálni kell az indító parancs előtt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=24&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A következő példában egy taskhoz 24 CPU-t rendeltunk, a 24 CPU-nak egy node-on kell lennie. A CPU-k számát a &amp;lt;code&amp;gt;&lt;br /&gt;
SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; változó tartalmazza, és ez állítja be az OMP szálak számát is.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, maximum 6 órára indít el egy 24 szálas OMP alkalmazást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=omp&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --cpus-per-task=24&lt;br /&gt;
OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hibrid MPI-OMP feladatok ====&lt;br /&gt;
Hibrid MPI-OMP módról akkor beszélünk, ha a párhuzamos alkalmazás MPI-t és OMP-t is használ. Érdemes tudni, hogy az Intel MKL-el linkelt programok MKL hívásai OpenMP képesek. Általában a következő elosztás javasolt: az MPI processzek száma 1-től az egy node-ban található CPU foglalatok száma, az OMP szálak ennek megfelelően az egy node-ban található összes CPU core szám vagy annak fele, negyede (értelem szerűen). A jobszkipthez a fenti két mód paramétereit kombinálni kell.&lt;br /&gt;
&lt;br /&gt;
A következő példában 2 node-ot, és node-onként 1-1 taskot indítunk taskonként 24 szállal. Alice felhasználó a foobar számla terhére, 8 órára, 2 node-ra küldött be egy hibrid jobot. Egy node-on egyszerre csak 1 db MPI processz fut ami node-onként 24 OMP szálat használ. A 2 gépen összesen 2 MPI proceszz és 2 x 24 OMP szál fut.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=mpiomp&lt;br /&gt;
#SBATCH --time=08:00:00&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks=2&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
#SBATCH --cpus-per-task=24&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
mpirun ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Maple Grid feladatok ====&lt;br /&gt;
Maple-t az OMP feladatokhoz hasonlóan 1 node-on lehet futtatni. Használatához be kell tölteni a maple modult is. A Maple kliens-szerver üzemmódban működik ezért a Maple feladat futtatása előtt szükség van a grid szerver elindítására is (&amp;lt;code&amp;gt;${MAPLE}/toolbox/Grid/bin/startserver&amp;lt;/code&amp;gt;). Ez az alkalmazás licensz köteles, amit a jobszkriptben meg kell adni (&amp;lt;code&amp;gt;#SBATCH --licenses=maplegrid:1&amp;lt;/code&amp;gt;). A Maple feladat indátását a &amp;lt;code&amp;gt;${MAPLE}/toolbox/Grid/bin/joblauncher&amp;lt;/code&amp;gt; paranccsal kell elvégezni.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, 6 órára indítja el a Maple Grid alkalmazást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=maple&lt;br /&gt;
#SBATCH -N 1&lt;br /&gt;
#SBATCH --ntasks-per-node=24&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
#SBATCH --licenses=maplegrid:1&lt;br /&gt;
&lt;br /&gt;
module load maple&lt;br /&gt;
&lt;br /&gt;
${MAPLE}/toolbox/Grid/bin/startserver&lt;br /&gt;
${MAPLE}/toolbox/Grid/bin/joblauncher ${MAPLE}/toolbox/Grid/samples/Simple.mpl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Matlab feladatok ====&lt;br /&gt;
Ez az alkalmazás licensz köteles, amit a jobszkriptben meg kell adni (&amp;lt;code&amp;gt;#SBATCH --licenses=matlabdce:1,matlabdct:1,matlab:1&amp;lt;/code&amp;gt;). Összesen 96 darab &lt;br /&gt;
Distributed Computing Server, 13 darab Distributed Computing Toolbox és 13 Matlab licensz lett megvásárolva.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=&amp;quot;Matlab test job&amp;quot;&lt;br /&gt;
#SBATCH -n 1&lt;br /&gt;
#SBATCH --licenses=matlabdce:1,matlabdct:1,matlab:1&lt;br /&gt;
#SBATCH -o slurm.out&lt;br /&gt;
&lt;br /&gt;
matlab -nodisplay &amp;lt; job.m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPU-k használata ====&lt;br /&gt;
A szegedi szuperszámítógép rendelkezik 2db GPU kártyákkal is felszerelt compute node-dal. A GPU node-okban 2x6db Nvidia Tesla M2070-es kártya található. A GPU-s node-ok külön job sorban található (&amp;lt;code&amp;gt;--partition gpu&amp;lt;/code&amp;gt;). A GPU-k számát a &amp;lt;code&amp;gt;--gres gpu:#&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
Alice felhasználó a foobar számla terhére, 4GPU-n, 6 órára indítja a következő jobot.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A foobar&lt;br /&gt;
#SBATCH --job-name=GPU&lt;br /&gt;
#SBATCH --partition gpu&lt;br /&gt;
#SBATCH --gres gpu:4&lt;br /&gt;
#SBATCH --time=06:00:00&lt;br /&gt;
&lt;br /&gt;
$PWD/gpu_burnout 3600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások beállításai ==&lt;br /&gt;
=== Saját programok telepítése ===&lt;br /&gt;
A saját fordítású programokat a HOME könyvtáradba kell telepíteni, ezt általában a fordítás előtti lefuttatott configure szkripttel lehet beállítani. Az adott program a $HOME/local alá fog települni. A PATH és egyéb környezeti változókat értelem szerűen kell beállítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME&lt;br /&gt;
mkdir local&lt;br /&gt;
(belépés az alklamazás könyvtárába)&lt;br /&gt;
./configure --prefix=$HOME/local&lt;br /&gt;
make; make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A frontend gépeken felhasználói limitek vannak beállítva. Ezekről a következő paranccsal kapunk információt:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
ulimit -a&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A limitek a compute node-okon és az UV-n nincsenek beállítva.&lt;br /&gt;
&lt;br /&gt;
=== Java JVM heap méret ===&lt;br /&gt;
A memória limit miatt a Java virtuális gépen és fordító nem jól működik, ezért meg kell adni a maximális heap méretét:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
java -Xmx512m -version&lt;br /&gt;
javac -J-Xmx512m -version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
vagy exportálni kell a következő változót:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export _JAVA_OPTIONS=&amp;quot;-Xms1g -Xmx1g&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python Numpy és Scipy használat ===&lt;br /&gt;
A numerikus Python használatához a következő csomagokat kell betölteni:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load python numpy scipy&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A numpy és a scipy csomagok az Intel MKL OpenMP gyorsítását használják. A jobokat az &amp;lt;code&amp;gt;openmp&amp;lt;/code&amp;gt; párhuzamos környezetbe kell elküldeni.&lt;br /&gt;
&lt;br /&gt;
== HP Budapest ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fordítás ===&lt;br /&gt;
Elérhető fordítók listája&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Forító&lt;br /&gt;
! Soros&lt;br /&gt;
! Párhuzamos&lt;br /&gt;
|-&lt;br /&gt;
| Intel Fortran&lt;br /&gt;
| ifort&lt;br /&gt;
| mpiif90&lt;br /&gt;
|-&lt;br /&gt;
| Intel C&lt;br /&gt;
| icc&lt;br /&gt;
| mpiicc&lt;br /&gt;
|-&lt;br /&gt;
| GNU Fortran&lt;br /&gt;
| gfotran&lt;br /&gt;
| mpif90&lt;br /&gt;
|-&lt;br /&gt;
| GNU C&lt;br /&gt;
| gcc&lt;br /&gt;
| mpicc&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A fordítási paramétereket az NCE környezeti változókból érdemes kiolvasni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NCE_OFLAGS - optimalizációs kapcsolók C és Fortran&lt;br /&gt;
NCE_FFLAGS - Fortran kapcsolók&lt;br /&gt;
NCE_CFLAGS - C kapcsolók&lt;br /&gt;
NCE_LDFLAGS - könyvtárak C és Fortran&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az NCE környezeti változó listáját az &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; paranccsal kérhetjük le.&lt;br /&gt;
&lt;br /&gt;
A budapesti gépen elérhető a PRACE környezet is, amely tartalmaz egy ajánlott kapcsoló és könyvtár összeállítást tartalmaz. A PRACE környezet betöltése:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
module load prace&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A PRACE környezet az AMD ACML matematikai könyvtárakat használja, amennyiben az Intel MKL-re van szükségünk, akkor a PRACE környezetet nem kell betölteni. A megfelelő MKL kapcsolókat az [http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor Intel Link Advisor] szerint kell beállítani, pl.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FFLAGS=-openmp -I$(MKLROOT)/include&lt;br /&gt;
CFLAGS=-openmp -I$(MKLROOT)/include&lt;br /&gt;
LDFLAGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \&lt;br /&gt;
  -Wl,--start-group \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_intel_thread.a \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_core.a \&lt;br /&gt;
  $(MKLROOT)/lib/intel64/libmkl_blacs_openmpi_lp64.a \&lt;br /&gt;
  -Wl,--end-group -lpthread -lm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Párhuzamos környezet ===&lt;br /&gt;
==== OpenMP ====&lt;br /&gt;
Az OpenMP paraméterket környezeti változókon keresztül kell beállítani. Az &amp;lt;code&amp;gt;openmp&amp;lt;/code&amp;gt; párhuzamos SLURM környezet az OpenMP szálak számát beállítja. Tovább környezeti változókat az [https://computing.llnl.gov/tutorials/openMP/#EnvironmentVariables LLNL OpenMP oldalán] találtok.&lt;br /&gt;
&lt;br /&gt;
==== MPI ====&lt;br /&gt;
Az alapértelmezett MPI könyvtár az Open MPI. Ajánlott optimalizációs kapcsolók (CPU binding):&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
--bind-to-core --bycore&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SGI ICE Debrecen ==&lt;br /&gt;
Az alapértelmezett MPI könyvtár az SGI MPT. A felhasználói programokat ehhez a könyvtárhoz érdemes fordítani. Ajánlott fordítás opciók:&lt;br /&gt;
&lt;br /&gt;
=== MPI fordítási opciók ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    CFLAGS=-O2 -xSSE4.2&lt;br /&gt;
    FFLAGS=-O2 -xSSE4.2&lt;br /&gt;
    LDFLAGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \&lt;br /&gt;
      -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_sequential.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_core.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_blacs_sgimpt_lp64.a -Wl,--end-group \&lt;br /&gt;
      -lpthread -lm&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MPI és OpenMP fordítási opciók ===&lt;br /&gt;
Ebben az esetben az MKL műveletek OpenMP szálasíthatók, a program hibrid MPI és OMP módban is tud üzemelni.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    CFLAGS=-O2 -xSSE4.2 -openmp&lt;br /&gt;
    FFLAGS=-O2 -xSSE4.2 -openmp&lt;br /&gt;
    LDFALGS=$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \&lt;br /&gt;
      -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_intel_thread.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_core.a \&lt;br /&gt;
      $(MKLROOT)/lib/intel64/libmkl_blacs_sgimpt_lp64.a -Wl,--end-group \&lt;br /&gt;
      -liomp5 -lpthread -lm -openmp&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ARC köztesréteg ==&lt;br /&gt;
Ez a NorduGrid közösség által fejlesztett Grid köztesréteg. Részletes dokumentációkért [http://www.nordugrid.org/documents ezt a weboldalt] érdemes felkeresni.&lt;br /&gt;
&lt;br /&gt;
=== Miért is használjuk?! ===&lt;br /&gt;
* Jobb terhelés elosztást tesz lehetővé a szuperszámítógépek között&lt;br /&gt;
* A jobok azon a gépen fognak elindulni, ami a legmegfelelőbb a számára&lt;br /&gt;
* Egy nagy egységgé kapcsolja össze a szuperszámítógépeket&lt;br /&gt;
* Szabványos webservice interfésszel ([https://www.ogf.org/documents/GFD.108.pdf OGSA-BES], [https://www.ogf.org/documents/GFD.114.pdf HPC Basic Profile]) rendelkezik. Ezáltal könnyen lehet integrálni más rendszerekkel&lt;br /&gt;
* Nagyon sok operációs rendszert támogat&lt;br /&gt;
* A saját számítógépünkről tudjuk kezelni a szuperszámítógépes jobokat&lt;br /&gt;
* A [http://pulse.fgi.csc.fi/gridrer/htdocs/index.phtml futás idejű környezetek használatával] a megfelelő módon lefordított alkalmazást tudjuk használni és nem kell észben tartani, hogy éppen melyik szuperszámítógépen van telepítve a program&lt;br /&gt;
&lt;br /&gt;
=== Grid tanúsítvány igénylése ===&lt;br /&gt;
Első lépésként szükségünk lesz egy '''Grides X.509 tanúsítványra''', amivel az ARC klienseket használni tudjuk. A [https://portal.hpc.niif.hu HPC portálon] keresztül lehetőségünk van igényelni egy 2 hétig érvényes SLCS tanúsítványt. A személyes adatok menüpontra kell kattintani és az oldal végén lesz az igénylő felület. '''Fontos: legalább egy HPC projekt tagsággal rendelkeznünk kell a HPC portálon. ''' Itt található az a letölthető UNIX script is, ami minden szükséges beállítást elvégez a számunkra: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           &lt;br /&gt;
 $ chmod +x slcs_unix_install.sh &lt;br /&gt;
 $ ./slcs_unix_install.sh &lt;br /&gt;
 $HOME/.globus/usercert.pem and $HOME/.globus/userkey.pem installed&lt;br /&gt;
 NIIF HPC SLCS Root CA installed: $HOME/.globus/certificates/SLCSCA.pem&lt;br /&gt;
 Default ARC client configuration created: $HOME/.arc/client.conf&lt;br /&gt;
 NIIF Root CA 2 installed: $HOME/.globus/certificates/NIIFCA.pem&lt;br /&gt;
 $ &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Az SLCS másik nagy előnye az egyszerűsített igénylésen kívül az, hogy 1 órán belül az összes szuperszámítógépen automatikusan engedélyezve lesz. Viszont ha nem szeretnénk minden második héten új X.509-es tanúsítványt igényelni, akkor lehetőség van arra is, hogy 1 évig érvényes [https://www.igtf.net IGTF] tanúsítványt igényeljünk az NIIF Intézettől [http://www.ca.niif.hu/hu/igenyles ezen az oldal keresztül]. Ebben az esetben a [mailto:hpc-support@niif.hu] címre kell elküldenünk az IGTF-es tanúsítványunk publikus részét és meg kell adnunk, hogy melyik témaszámunkhoz legyen majd rendelve a szuperszámítógépeken.&lt;br /&gt;
&lt;br /&gt;
=== ARC kliensek használatba vétele ===&lt;br /&gt;
==== Telepítés ====&lt;br /&gt;
A csomagok telepítéséhez az itt leírt repo-kat lehet használni: http://download.nordugrid.org/repos-15.03.html&lt;br /&gt;
'''Fontos''': 5.0-ás ARC verziót telepítsük.&lt;br /&gt;
&lt;br /&gt;
Debian alapú rendszerek esetén:  &lt;br /&gt;
  apt-get install nordugrid-arc-client  &lt;br /&gt;
&lt;br /&gt;
Redhat alapú rendszerek esetén:  &lt;br /&gt;
  yum install nordugrid-arc-client&lt;br /&gt;
&lt;br /&gt;
OSX csomag telepítése [http://brew.sh brew] segítségével:&lt;br /&gt;
  brew install nordugrid-arc&lt;br /&gt;
&lt;br /&gt;
Ha nem találtunk megfelelő csomagot, akkor [http://download.nordugrid.org/packages/nordugrid-arc/releases/5.0.0/src/nordugrid-arc-5.0.0.tar.gz innen] le tudjuk tölteni a forráskódját és le tudjuk fordítani.&lt;br /&gt;
&lt;br /&gt;
==== Konfigurálás ====&lt;br /&gt;
$HOME/.arc/client.conf:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 [common]&lt;br /&gt;
            &lt;br /&gt;
 [computing/budapest] &lt;br /&gt;
 url=https://login.budapest.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
 &lt;br /&gt;
 [computing/szeged]&lt;br /&gt;
 url=https://login.szeged.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
 &lt;br /&gt;
 [computing/debrecen]&lt;br /&gt;
 url=https://login.debrecen.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
 &lt;br /&gt;
 [computing/pecs]&lt;br /&gt;
 url=https://login.pecs.hpc.niif.hu:60000/arex&lt;br /&gt;
 infointerface=org.nordugrid.wsrfglue2&lt;br /&gt;
 submissioninterface=org.ogf.bes&lt;br /&gt;
 default=yes&lt;br /&gt;
  &lt;br /&gt;
 # FastestQueue – ranks targets according to their queue length&lt;br /&gt;
 brokername=FastestQueue&lt;br /&gt;
 &lt;br /&gt;
 # Random – ranks targets randomly&lt;br /&gt;
 #brokername=Random&lt;br /&gt;
 &lt;br /&gt;
 # Data – ranks targets according the amount of megabytes of the requested input files that are already&lt;br /&gt;
 # in the computing resources cache. &lt;br /&gt;
 #brokername=Data&lt;br /&gt;
 &lt;br /&gt;
 # PythonBroker:&amp;lt;module&amp;gt;.&amp;lt;class&amp;gt;[:arguments] – ranks targets using any user-supplied custom&lt;br /&gt;
 # Python broker module, optionally with broker arguments. Such module can reside anywhere in&lt;br /&gt;
 # user’s PYTHONPATH&lt;br /&gt;
 #brokername=PythonBroker&lt;br /&gt;
 &lt;br /&gt;
 [alias]&lt;br /&gt;
 pecs=computing:ARC1:https://login.pecs.hpc.niif.hu:60000/arex&lt;br /&gt;
 szeged=computing:ARC1:https://login.szeged.hpc.niif.hu:60000/arex&lt;br /&gt;
 debrecen=computing:ARC1:https://login.debrecen.hpc.niif.hu:60000/arex&lt;br /&gt;
 budapest=computing:ARC1:https://login.budapest.hpc.niif.hu:60000/arex&lt;br /&gt;
 hp=budapest szeged&lt;br /&gt;
 sgi=pecs debrecen   &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Érdemes beállítani, hogy alapértelmezés szerint a FastestQueue brókert használja, ezáltal mindig arra a szuperszámítógépre fogja küldeni a jobokat, ahol a legkevesebb a várakozó jobok száma. A konfigurációs fájl részletes dokumentációját és az ARC kliensek leírásait [http://www.nordugrid.org/documents/arc-ui.pdf itt lehet] megnézni.&lt;br /&gt;
&lt;br /&gt;
=== Grid proxy készítése ===&lt;br /&gt;
&lt;br /&gt;
Ha már telepítettük a tanúsítványunkat és az ARC klienseket akkor a következő lépés az, hogy egy proxy tanúsítványt kell készítenünk, ami alapértelmezés szerint 12 óráig érvényes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ arcproxy &lt;br /&gt;
 Enter pass phrase for private key:&lt;br /&gt;
 Your identity: /C=HU/O=NIIF/OU=SLCS/L=hpcteszt/CN=joe&lt;br /&gt;
 Proxy generation succeeded&lt;br /&gt;
 Your proxy is valid until: 2015-03-30 05:01:09&lt;br /&gt;
 $    &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
Tesztelési célból ezeket a parancsokat érdemes kipróbálni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ arcinfo -c szeged  &lt;br /&gt;
 $ arcinfo -c hp -l&lt;br /&gt;
 $ arcinfo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid job készítése ===&lt;br /&gt;
A jobok leírására több formátumot is használhatunk: [https://www.ogf.org/documents/GFD.56.pdf JSDL], vagy [http://www.nordugrid.org/documents/xrsl.pdf xRSL]. Így adjuk meg, hogy a jobunknak mire van szüksége. Itt egy példa job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
 $ cat job.xrsl &lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 (executable=&amp;quot;matlab.sh&amp;quot;)&lt;br /&gt;
 (arguments=&amp;quot;matlab.m&amp;quot;)&lt;br /&gt;
 (stdout=&amp;quot;stdout.txt&amp;quot;)&lt;br /&gt;
 (stderr=&amp;quot;stderr.txt&amp;quot;)&lt;br /&gt;
 (jobname=&amp;quot;Matlab test&amp;quot;)&lt;br /&gt;
 (inputFiles=&lt;br /&gt;
 (&amp;quot;matlab.m&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
 )&lt;br /&gt;
 (memory&amp;gt;=&amp;quot;1000&amp;quot;)&lt;br /&gt;
 (gmlog=&amp;quot;gm.log&amp;quot;)&lt;br /&gt;
 (wallTime=&amp;quot;240&amp;quot;)&lt;br /&gt;
 (runTimeEnvironment=&amp;quot;APPS/MATH/MATLAB-7.13&amp;quot;)  &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cat matlab.sh &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo&lt;br /&gt;
 echo &amp;quot;Compute node: &amp;quot; `/bin/hostname -f`&lt;br /&gt;
 echo&lt;br /&gt;
 matlab -nodisplay &amp;lt; $1&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cat matlab.m&lt;br /&gt;
 2+3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ennél a példánál a '''APPS/MATH/MATLAB-7.13''' futásidejű környezetet kértük, ezáltal ez a job csak azon a szuperszámítógépen fog elindulni, ahol ez telepítve van. Továbbá azt kértük még, hogy 240 percig futhasson és legalább 1000 MByte memória rendelkezésre álljon.&lt;br /&gt;
&lt;br /&gt;
Az '''arcinfo -l''' paranccsal tudjuk megnézni, hogy a szuperszámítógépeken milyen futás idejű környezetek (runtime environment-ek) vannak telepítve. Ha szeretnénk egy új környezet beállíttatni, akkor [mailto:hpc-support@niif.hu ide] kell levelet küldeni.&lt;br /&gt;
&lt;br /&gt;
==== OpenMP példa ====&lt;br /&gt;
&lt;br /&gt;
Job elkészítése:&lt;br /&gt;
&amp;lt;code&amp;gt;        &lt;br /&gt;
 $ cat job-openmp.xrsl &lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 (executable=&amp;quot;omp_mm&amp;quot;)&lt;br /&gt;
 (stdout=&amp;quot;stdout.txt&amp;quot;)&lt;br /&gt;
 (stderr=&amp;quot;stderr.txt&amp;quot;)&lt;br /&gt;
 (jobname=&amp;quot;OpenMP test&amp;quot;)&lt;br /&gt;
 (queue=&amp;quot;test&amp;quot;)&lt;br /&gt;
 (executables=&amp;quot;omp_mm&amp;quot;)&lt;br /&gt;
 (count=&amp;quot;10&amp;quot;)&lt;br /&gt;
 (countpernode=&amp;quot;10&amp;quot;)&lt;br /&gt;
 (environment=(&amp;quot;OMP_NUM_THREADS&amp;quot; &amp;quot;10&amp;quot;))&lt;br /&gt;
 (queue=&amp;quot;test&amp;quot;)&lt;br /&gt;
 (inputFiles=&lt;br /&gt;
    (&amp;quot;omp_mm&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
 )&lt;br /&gt;
 (memory&amp;gt;=&amp;quot;2600&amp;quot;)&lt;br /&gt;
 (gmlog=&amp;quot;gm.log&amp;quot;)&lt;br /&gt;
 (wallTime=&amp;quot;20&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Job elküldése:&lt;br /&gt;
&lt;br /&gt;
 $ arcsub job-openmp.xrsl&lt;br /&gt;
 Job submitted with jobid: https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
&lt;br /&gt;
Job állapotának a lekérdezése:&lt;br /&gt;
&lt;br /&gt;
 $ arcstat https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 Job: https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
  Name: OpenMP test&lt;br /&gt;
  State: Finished&lt;br /&gt;
  Exit Code: 0&lt;br /&gt;
 &lt;br /&gt;
 Status of 1 jobs was queried, 1 jobs returned information&lt;br /&gt;
&lt;br /&gt;
Job letöltése:&lt;br /&gt;
&lt;br /&gt;
 $ arcget https://login.debrecen.hpc.niif.hu:60000/arex/cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 Results stored at: cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 Jobs processed: 1, successfully retrieved: 1, successfully cleaned: 1&lt;br /&gt;
 zion:~ joe $ cd cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $ ls -l&lt;br /&gt;
 total 16&lt;br /&gt;
 drwx------  12 joe  staff   408 Mar 29 21:24 gm.log&lt;br /&gt;
 -rw-------   1 joe  staff     0 Mar 29 21:24 stderr.txt&lt;br /&gt;
 -rw-------   1 joe  staff  6362 Mar 29 21:24 stdout.txt&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $&lt;br /&gt;
&lt;br /&gt;
Adatok ellenőrzése:&lt;br /&gt;
&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe $ head stdout.txt &lt;br /&gt;
 Starting matrix multiple example with 10 threads&lt;br /&gt;
 Initializing matrices...&lt;br /&gt;
 Thread 0 starting matrix multiply...&lt;br /&gt;
 Thread=0 did row=0&lt;br /&gt;
 Thread 9 starting matrix multiply...&lt;br /&gt;
 Thread 6 starting matrix multiply...&lt;br /&gt;
 Thread=0 did row=1&lt;br /&gt;
 Thread 5 starting matrix multiply...&lt;br /&gt;
 Thread=5 did row=50&lt;br /&gt;
 Thread=5 did row=51&lt;br /&gt;
 zion:cpbNDmLzXwlng5dCemyuQPMmABFKDmABFKDmyVNKDmWBFKDmDQBwOn joe$           &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== MPI példa ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cat job-mpi.xrsl &lt;br /&gt;
 &amp;amp;&lt;br /&gt;
 (executable=&amp;quot;mpi.sh&amp;quot;)&lt;br /&gt;
 (stdout=&amp;quot;stdout.txt&amp;quot;)&lt;br /&gt;
 (stderr=&amp;quot;stderr.txt&amp;quot;)&lt;br /&gt;
 (jobname=&amp;quot;MPI test&amp;quot;)&lt;br /&gt;
 (executables=&amp;quot;connectivity&amp;quot; &amp;quot;mpi.sh&amp;quot;)&lt;br /&gt;
 (count=&amp;quot;10&amp;quot;)&lt;br /&gt;
 (inputFiles=&lt;br /&gt;
     (&amp;quot;connectivity&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
     (&amp;quot;mpi.sh&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
 )&lt;br /&gt;
 (memory&amp;gt;=&amp;quot;2600&amp;quot;)&lt;br /&gt;
 (gmlog=&amp;quot;gm.log&amp;quot;)&lt;br /&gt;
 (wallTime=&amp;quot;20&amp;quot;)&lt;br /&gt;
 (runTimeEnvironment&amp;gt;=ENV/GCC/MPI/OPENMPI-1.4.3)  &lt;br /&gt;
&lt;br /&gt;
 $ cat mpi.sh &lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 mpirun -np 10 ./connectivity -v   &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Grafikus felületű ARC kliens ====&lt;br /&gt;
Parancssoros klienseken kívül használni lehet még grafikus klienseket is. [http://sourceforge.net/projects/arc-gui-clients/?source=directory Innen tudják] letölteni őket.&lt;br /&gt;
&lt;br /&gt;
[[Category: HPC]]&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Budapest2_klaszter&amp;diff=3360</id>
		<title>Budapest2 klaszter</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Budapest2_klaszter&amp;diff=3360"/>
				<updated>2015-09-29T07:05:51Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* Intel Xeon Phi használata */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Klaszter&lt;br /&gt;
| Budapest2&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 10 × 2 Xeon E5-2680v2 2.80GHz  &lt;br /&gt;
|- &lt;br /&gt;
| Intel Xeon Phi / node&lt;br /&gt;
| 2 × Intel(R) Xeon Phi(TM) MIC SE10/7120 &lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 14 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max core-ok / projekt&lt;br /&gt;
| 140 (7db node)&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 3000 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.budapest2.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.budapest2.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.budapest2.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.budapest2.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.budapest2.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
    BUDAPEST2[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelező listára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== Intel Xeon Phi használata ==&lt;br /&gt;
&lt;br /&gt;
* [http://software.intel.com/en-us/mic-developer Itt] található az Intel hivatalos dokumentációja ezzel kapcsolatban&lt;br /&gt;
* [http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor Itt] tájékozódhatnak az Intel matematikai könyvtárainak a linkeléséről&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Intel Xeon Phi-k lefoglalása ====&lt;br /&gt;
A Intel Xeon Phi-k lefoglalása a következő direktívával történik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=mic:N&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; a Intel Xeon Phi-k/node számát adja meg, ami 1 és 2 lehet maximum.&lt;br /&gt;
&lt;br /&gt;
==== Job-ok indítása ====&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépeken két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt; sor. Utóbbi az éles számolásokra való, előbbi fejlesztés és tesztelés céljára használható. A teszt sorban összesen 1 node-ot, maximum fél órára lehet lefoglalni. Az alapértelmezett sor a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt;. A teszt partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. A maximális memória/core 3000 MB lehet.&lt;br /&gt;
&lt;br /&gt;
Amennyiben a szálaknak 4GB-nál több virtuális memóriára van szükségük, akkor az indítandó program elé a következő parancsot is el kell helyezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ulimit -v unlimited&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Alkalmazás-specifikus beállítások ===&lt;br /&gt;
==== Gromacs ====&lt;br /&gt;
A Gromacs programot a következő mpirun paraméterrel kell indítani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mpirun --report-pid ${TMPDIR}/mpirun.pid ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Debrecen2_GPU_klaszter&amp;diff=3359</id>
		<title>Debrecen2 GPU klaszter</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Debrecen2_GPU_klaszter&amp;diff=3359"/>
				<updated>2015-09-29T06:23:22Z</updated>
		
		<summary type="html">&lt;p&gt;Roczei(AT)niif.hu: /* GPU-k lefoglalása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| Klaszter&lt;br /&gt;
| Debrecen2 (Leo)&lt;br /&gt;
|- &lt;br /&gt;
| Típus&lt;br /&gt;
| HP&lt;br /&gt;
|- &lt;br /&gt;
| core / node&lt;br /&gt;
| 8 × 2 Xeon E5-2650v2 2.60GHz  &lt;br /&gt;
|- &lt;br /&gt;
| GPU / node&lt;br /&gt;
| 68 * 3 Nvidia K20x + 16 * 3 Nvidia K40x&lt;br /&gt;
|- &lt;br /&gt;
| Compute node-ok&lt;br /&gt;
| 84 db&lt;br /&gt;
|-&lt;br /&gt;
| Max Walltime&lt;br /&gt;
| 7-00:00:00&lt;br /&gt;
|-&lt;br /&gt;
| Max core-ok / projekt&lt;br /&gt;
| 336 (21db node)&lt;br /&gt;
|-&lt;br /&gt;
| Max mem / core&lt;br /&gt;
| 7800 MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CPU idő kérés ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{ATTENTION|A CPU idő igénylésekor egy olyan rövid indoklást várunk a HPC projekt vezetőktől, amiből kiderül, hogy a futtatandó alkalmazás képes GPU-t használni. Erre azért van szükség, mert az erőforrás teljesítményének nagyobbik része GPU gyorsításból származik, egy gyorsítás nélküli program a CPU-kat lefoglalja, korlátozva ezzel a GPU-k használatát, ami kihasználatlansághoz vezet. Az NVidia  [http://www.nvidia.com/object/gpu-applications.html közzétett egy listát] arról, hogy melyik alkalmazás rendelkezik jelenleg hivatalosan NVidia GPU támogatással, de természetesen egyéb, GPU-t használó program is nagy valószínűséggel jól fut a gépen.}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Belépés ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh USER@login.debrecen2.hpc.niif.hu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nem alapértelmezett kulcs használata esetén a &amp;lt;code&amp;gt;-i KULCS&amp;lt;/code&amp;gt; kapcsolóval megadása szükséges (SSH és SCP parancsok).&lt;br /&gt;
&lt;br /&gt;
=== Fájlok másolása SCP-vel ===&lt;br /&gt;
Letöltés a HOME könyvtárból és feltöltés a HOME könyvtárba:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  scp FILE USER@login.debrecen2.hpc.niif.hu:FILE&lt;br /&gt;
Le :  scp USER@login.debrecen2.hpc.niif.hu:FILE FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adatszinkronizáció ===&lt;br /&gt;
Nagyobb fájlok ill. könyvtárstruktúrák szinkronizálásához a következő parancsokat kell használni&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fel:  rsync -a -e ssh DIRECTORY USER@login.debrecen2.hpc.niif.hu:/home/USER&lt;br /&gt;
Le :  rsync -a -e ssh USER@login.debrecen2.hpc.niif.hu:/home/USER/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A törölt fájlok szinkronizálásához a &amp;lt;code&amp;gt;--delete&amp;lt;/code&amp;gt; opciót kell megadni.&lt;br /&gt;
&lt;br /&gt;
== Felhasználói felület ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
               rövid CWD&lt;br /&gt;
                     |&lt;br /&gt;
    DEBRECEN2[login] ~ (0)$&lt;br /&gt;
        |       |       |&lt;br /&gt;
   HPC állomás  |       |&lt;br /&gt;
         rövid gép név  |&lt;br /&gt;
               előző parancs exit kódja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modul környezet ===&lt;br /&gt;
Az elérhető modulok listáját a következő paranccsal kapjuk meg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a már betöltött modulok listáját:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alkalmazást a következő paranccsal tölthetünk be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A NIIF által beállított környezeti változókat &amp;lt;code&amp;gt;nce&amp;lt;/code&amp;gt; parancs listázza ki.&lt;br /&gt;
&lt;br /&gt;
=== Adatok megosztása projekt tagok számára ===&lt;br /&gt;
Fájlok ill. könyvtárak megosztásához ACL-eket kell beállítani. A HOME könyvtárat más felhasználó (OTHER) számára olvashatóvá, így tehetjük&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rx $HOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Addott könyvtárat (DIRECTORY) írahtóvá:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setfacl -m u:OTHER:rxw $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A kiterjesztett jogokat a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getfacl $HOME/DIRECTORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Közös home könyvtár használata ==&lt;br /&gt;
A szuperszámítógépek login gépeit összekötő közös fájlrendszer a következő könyvtár alatt található:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Biztonsági mentést a közös könyvtárba a következő paranccsal tudunk végezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -avuP --delete $HOME/DIRECTORY /mnt/fhgfs/home/$USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alkalmazások lefordítása ==&lt;br /&gt;
&lt;br /&gt;
Mindenkitől azt kérjük, hogy először próbálja meg saját maga lefordítani az alkalmazását. Ha ez valamilyen oknál fogva mégsem sikerülne, akkor következő lépésként a magyarországi szuperszámítógép felhasználóktól érdemes kérdezni, mert nagy esély van rá hogy mások is belefutottak ugyanabba a problémába. Ezen a címen lehet őket elérni: &amp;lt;code&amp;gt;hpc-forum kukac listserv.niif.hu&amp;lt;/code&amp;gt;. Feliratkozni [https://listserv.niif.hu/mailman/listinfo/hpc-forum itt lehet erre] a levelező listára. Az archívumban is érdemes utánanézni a kérdésnek. Az NIIF HPC support csak igen korlátozottan képes egyéni fordítási kérésekkel foglalkozni, de problémával felkeresheti a &amp;lt;code&amp;gt;hpc-support kukac niif.hu&amp;lt;/code&amp;gt; címet. Az utóbbi esetben pár napos türelmüket mindenképp kérjük válaszunkig.&lt;br /&gt;
&lt;br /&gt;
== SLURM ütemező használata ==&lt;br /&gt;
A szuperszámítógépen CPU óra (gépidő) alapú ütemezés működik. A felhasználóhoz tartozó Slurm projektek (Account) állapotáról a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbalance&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A második oszlopban (Usage) az egyes felhasználók elhasznált gépideje, a negyedik oszlopban pedig a számla összesített gépideje látható. Az utolsó két oszlop a maximális (Account Limit) és a még elérhető (Available) gépidőről ad tájékoztatást.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scheduler Account Balance&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
User             Usage |          Account       Usage | Account Limit   Available (CPU hrs)&lt;br /&gt;
---------- ----------- + ---------------- ----------- + ------------- -----------&lt;br /&gt;
bob *                7 |           foobar           7 |         1,000         993&lt;br /&gt;
alice                0 |           foobar           7 |         1,000         993&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A gépidő becslése ===&lt;br /&gt;
Nagyüzemi (production) futtatások előtt gépidőbecslést érdemes végezni. Ehhez a következő parancs használható:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sestimate -N NODES -t WALLTIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;NODES&amp;lt;/code&amp;gt; a lefoglalni kívánt node-ok száma, a &amp;lt;code&amp;gt;WALLTIME&amp;lt;/code&amp;gt; pedig a futás maximális ideje.&lt;br /&gt;
&lt;br /&gt;
'''Fontos, hogy a lefoglalni kívánt gépidőt a lehető legpontosabban adjuk meg, mivel az ütemező ez alapján is rangsorolja a futtatásra váró feladatokat. Általában igaz, hogy a rövidebb job hamarabb sorra kerül. Érdemes minden futás idejét utólag az &amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; paranccsal is ellenőrizni.'''&lt;br /&gt;
&lt;br /&gt;
=== Állapotinformációk ===&lt;br /&gt;
Az ütemezőben lévő jobokról az &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;, a klaszter általános állapotáról az &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; parancs ad tájékoztatást. Minden beküldött jobhoz egy egyedi azonosítószám (JOBID) rendelődik. Ennek ismeretében további információkat kérhetünk. Feladott vagy már futó job jellemzői:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scontrol show job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minden job egy ún. számlázási adatbázisba (accounting) is bekerül. Ebből az adatbázisból visszakereshetők a lefuttatott feladatok jellemzői és erőforrás-felhasználás statisztikái. A részletes statisztikát a következő paranccsal tudjuk megnézni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sacct -l -j JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A felhasznált memóriáról a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smemory JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A lemezhasználatról pedig a&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sdisk JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Slurm figyelmeztető üzenetek ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resources/AssociationResourceLimit - Erőforrásra vár&lt;br /&gt;
AssociationJobLimit/QOSJobLimit - Nincs elég CPU idő vagy a maximális CPU szám le van foglalva&lt;br /&gt;
Piority - Alacsony prioritás miatt várakozik&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az utóbbi esetben, csökkenteni kell a job által lefoglalni kívánt időt. Egy adott projekt részére maximálisan 512 CPU-n futhatnak jobok egy adott időben.&lt;br /&gt;
&lt;br /&gt;
==== Licenszek ellenőrzése ====&lt;br /&gt;
Az elérhető és éppen használt licenszekről a következő parancs ad információt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slicenses&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Karbantartás ellenőrzése ====&lt;br /&gt;
A karbantartási időablakban az ütemező nem indít új jobokat, de beküldeni lehet. A karbantartások időpontjairól a következő parancs ad tájékoztatást:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreservations&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Összesített felhasználás ====&lt;br /&gt;
Egy hónapra visszamenőleg az elfogyasztott CPU perceket a következő paranccsal kérhetjük le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
susage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Teljes fogyasztás ====&lt;br /&gt;
Ha szeretnénk tájékozódni arról, hogy egy bizony idő óta mennyi a CPU idő felhasználásunk akkor azt ezzel paranccsal tudjuk lekérdezni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sreport -t Hours Cluster AccountUtilizationByUser Accounts=ACCOUNT Start=2015-01-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Feladatok futtatása ===&lt;br /&gt;
Alkalmazások futtatása a szupergépeken kötegelt (batch) üzemmódban lehetséges. Ez azt jelenti, hogy minden futtatáshoz egy job szkriptet kell elkészíteni, amely tartalmazza az igényelt erőforrások leírását és a futtatáshoz szükséges parancsokat. Az ütemező paramétereit (erőforrás igények) a &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; direktívával kell megadni.&lt;br /&gt;
&lt;br /&gt;
==== Kötelező paraméterek ====&lt;br /&gt;
A következő paramétereket minden esetben meg kell adni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=NAME&lt;br /&gt;
#SBATCH --time=TIME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;ACCOUNT&amp;lt;/code&amp;gt; a terhelendő számla neve (elérhető számláinkről az &amp;lt;code&amp;gt;sbalance&amp;lt;/code&amp;gt; parancs ad felvilágosítást), a &amp;lt;code&amp;gt;NAME&amp;lt;/code&amp;gt; a job rövid neve, a &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt; pedig a maximális walltime idő (&amp;lt;code&amp;gt;DD-HH:MM:SS&amp;lt;/code&amp;gt;). A következő időformátumok használhatók: &lt;br /&gt;
&amp;quot;minutes&amp;quot;, &amp;quot;minutes:seconds&amp;quot;, &amp;quot;hours:minutes:seconds&amp;quot;, &amp;quot;days-hours&amp;quot;, &amp;quot;days-hours:minutes&amp;quot; és &amp;quot;days-hours:minutes:seconds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== GPU-k lefoglalása ====&lt;br /&gt;
A GPU-k lefoglalása a következő direktívával törénik:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --gres=gpu:N&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Az &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; a GPU-k/node számát adja meg, ami 1, 2 és 3 lehet maximum.&lt;br /&gt;
&lt;br /&gt;
==== Interaktív használat ====&lt;br /&gt;
Rövid interaktív feladatokat az 'srun' paranccsal tudunk beküldeni, pl.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun -l -n 1 -t TIME --gres=gpu:1 -A ACCOUNT APP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Batch job-ok indítása ====&lt;br /&gt;
A jobok feladását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sikeres feladás esetén a következő kimenetet kapjuk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Submitted batch job JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol a &amp;lt;code&amp;gt;JOBID&amp;lt;/code&amp;gt; a feladat egyedi azonosítószáma.&lt;br /&gt;
&lt;br /&gt;
A feladat leállítását a következő parancs végzi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nem újrainduló jobok ====&lt;br /&gt;
Nem újrainduló jobokhoz a következő direktívát kell használni:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --no-requeue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Feladat sorok ====&lt;br /&gt;
A szupergépeken két, egymást nem átfedő, sor (partíció) áll rendelkezésre, a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; sor és a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt; sor. Utóbbi az éles számolásokra való, előbbi fejlesztés és tesztelés céljára használható. A teszt sorban összesen 1 node-ot, maximum fél órára lehet lefoglalni. Az alapértelmezett sor a &amp;lt;code&amp;gt;prod&amp;lt;/code&amp;gt;. A teszt partíciót a következő direktívával lehet kiválasztani:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A teszt partícióban 1 GPU található (&amp;lt;code&amp;gt;--gres=gpu:1&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
==== A szolgáltatás minősége (QOS) ====&lt;br /&gt;
A szolgáltatást alapértelmezett minősége &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;, azaz nem megszakítható a futás.&lt;br /&gt;
&lt;br /&gt;
===== Magas prioritás =====&lt;br /&gt;
A magas prioritású jobok maximum 24 óráig futhatnak, és kétszer gyorsabb időelszámolással rendelkeznek, cserébe az ütemező előreveszi ezeket a feladatokat.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=fast&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Alacsony prioritás =====&lt;br /&gt;
Lehetőség van alacsony prioritású jobok feladására is. Az ilyen feladatokat bármilyen normál prioritású job bármikor megszakíthatja, cserébe az elhasznált gépidő fele számlázódik csak. A megszakított jobok automatikusan újraütemeződnek. Fontos, hogy olyan feladatokat indítsunk alacsony prioritással, amelyek kibírják a véletlenszerű megszakításokat, rendszeresen elmentik az állapotukat (checkpoint) és ebből gyorsan újra tudnak indulni.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --qos=lowpri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Memória foglalás ====&lt;br /&gt;
Alapértelmezetten 1 CPU core-hoz 1000 MB memória van rendelve, ennél többet a következő direktívával igényelhetünk:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mem-per-cpu=MEMORY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol &amp;lt;code&amp;gt;MEMORY&amp;lt;/code&amp;gt; MB egységben van megadva. A maximális memória/core 7800 MB lehet.&lt;br /&gt;
&lt;br /&gt;
==== Email értesítés ====&lt;br /&gt;
Levél küldése job állapotának változásakor (elindulás,leállás,hiba):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --mail-type=ALL&lt;br /&gt;
#SBATCH --mail-user=EMAIL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ahol az &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; az értesítendő emial cím.&lt;br /&gt;
&lt;br /&gt;
==== Tömbfeladatok (arrayjob) ====&lt;br /&gt;
Tömbfeladatokra akkor van szükségünk, egy szálon futó (soros) alkalmazást szeretnénk egyszerre sok példányban (más-más adatokkal) futtatni. A példányok számára az ütemező a &amp;lt;code&amp;gt;SLURM_ARRAY_TASK_ID&amp;lt;/code&amp;gt; környezeti változóban tárolja az egyedi azonosítót. Ennek lekérdezésével lehet az arrayjob szálait elkülöníteni. A szálak kimenetei a &amp;lt;code&amp;gt;slurm-SLURM_ARRAY_JOB_ID-SLURM_ARRAY_TASK_ID.out&amp;lt;/code&amp;gt; fájlokba íródnak. Az ütemező a feltöltést szoros pakolás szerint végzi. Ebben az esetben is érdemes a processzorszám többszörösének választani a szálak számát. [http://slurm.schedmd.com/job_array.html Bővebb ismertető]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=array&lt;br /&gt;
#SBATCH --time=24:00:00&lt;br /&gt;
#SBATCH --array=1-96&lt;br /&gt;
srun envtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Soros (serial) jobok ====&lt;br /&gt;
Több soros job futtatását a tömbfeladatokhoz hasonlóan kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=serial&lt;br /&gt;
#SBATCH --time=24:30:00&lt;br /&gt;
#SBATCH -n 3&lt;br /&gt;
#SBATCH --partition=test&lt;br /&gt;
srun -n 1 program input1 &amp;amp;&lt;br /&gt;
srun -n 1 program input2 &amp;amp;&lt;br /&gt;
srun -n 1 program input3&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenMPI feladatok ====&lt;br /&gt;
MPI feladatok esetén meg kell adnunk az egy node-on elinduló MPI processzek számát is (&amp;lt;code&amp;gt;#SBATCH --ntasks-per-node=&amp;lt;/code&amp;gt;). A leggyakoribb esetben ez az egy node-ban található CPU core-ok száma. A párhuzamos programot az &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; paranccsal kell indítani.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH -A ACCOUNT&lt;br /&gt;
#SBATCH --job-name=mpi&lt;br /&gt;
#SBATCH -N 2&lt;br /&gt;
#SBATCH --ntasks-per-node=20&lt;br /&gt;
#SBATCH --time=12:00:00&lt;br /&gt;
mpirun PROGRAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenMPI FAQ: http://www.open-mpi.org/faq&lt;/div&gt;</summary>
		<author><name>Roczei(AT)niif.hu</name></author>	</entry>

	</feed>