<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://hpc-wiki.info/hpc/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ds019135</id>
	<title>HPC Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://hpc-wiki.info/hpc/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ds019135"/>
	<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/Special:Contributions/Ds019135"/>
	<updated>2026-04-21T18:08:50Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.9</generator>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=MediaWiki:Termsofusepage&amp;diff=1024</id>
		<title>MediaWiki:Termsofusepage</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=MediaWiki:Termsofusepage&amp;diff=1024"/>
		<updated>2018-08-17T09:17:38Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: Created page with &amp;quot;MediaWiki:Useragreement&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MediaWiki:Useragreement&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=MediaWiki:Termsofuse&amp;diff=1023</id>
		<title>MediaWiki:Termsofuse</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=MediaWiki:Termsofuse&amp;diff=1023"/>
		<updated>2018-08-17T09:17:14Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: Created page with &amp;quot;Terms of Use&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Terms of Use&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=MediaWiki:Useragreement&amp;diff=1022</id>
		<title>MediaWiki:Useragreement</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=MediaWiki:Useragreement&amp;diff=1022"/>
		<updated>2018-08-17T08:42:27Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit Ihrer Zustimmung zu dieser Benutzerordnung stimmen Sie der Verarbeitung Ihrer Informationen durch das ProPE Wiki zu. Insbesondere verarbeiten wir alle durch die Shibboleth oder Sie explizit zur Verfügung gestellten Informationen. Dazu gehören unter anderem:&lt;br /&gt;
* EPPN&lt;br /&gt;
* givenName&lt;br /&gt;
* Surname&lt;br /&gt;
* Email Adresse&lt;br /&gt;
* EduPersonTargetedID&lt;br /&gt;
* EduPersonScopedAffiliation&lt;br /&gt;
&lt;br /&gt;
Weiterhin bestätigen Sie, dass Sie mindestens 16 Jahre alt sind und diese Benuterordnung gelesen haben.&lt;br /&gt;
&lt;br /&gt;
Sie können diese Benutzerordnung jederzeit unter https://hpc-wiki.itc.rwth-aachen.de/mediawiki/index.php/MediaWiki:Useragreement&lt;br /&gt;
finden.&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=MediaWiki:Useragreement&amp;diff=1021</id>
		<title>MediaWiki:Useragreement</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=MediaWiki:Useragreement&amp;diff=1021"/>
		<updated>2018-08-17T08:14:46Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: Created page with &amp;quot;Mit Ihrer Zustimmung zu dieser Benutzerordnung stimmen Sie der Verarbeitung Ihrer Informationen durch das ProPE Wiki zu. Insbesondere verarbeiten wir alle durch die Shibboleth...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit Ihrer Zustimmung zu dieser Benutzerordnung stimmen Sie der Verarbeitung Ihrer Informationen durch das ProPE Wiki zu. Insbesondere verarbeiten wir alle durch die Shibboleth oder Sie explizit zur Verfügung gestellten Informationen. Dazu gehören unter anderem:&lt;br /&gt;
* EPPN&lt;br /&gt;
* givenName&lt;br /&gt;
* Surname&lt;br /&gt;
* Email Adresse&lt;br /&gt;
* EduPersonTargetedID&lt;br /&gt;
* EduPersonScopedAffiliation&lt;br /&gt;
&lt;br /&gt;
Weiterhin bestätigen Sie, dass Sie mindestens 16 Jahre alt sind und diese Benuterordnung gelesen haben.&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Impressum&amp;diff=1020</id>
		<title>Impressum</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Impressum&amp;diff=1020"/>
		<updated>2018-08-06T07:39:49Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039; To satisfy the requirements imposed by German law, this site contains contact and legal information in German language only.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dfdfdf; padding:1em; background-color:white; margin-right:14em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Herausgegeben im Auftrag des Rektors der Rheinisch-Westfälischen Technischen Hochschule (RWTH) Aachen. &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
:[http://www.rwth-aachen.de RWTH Aachen]&lt;br /&gt;
:Templergraben 55&lt;br /&gt;
:52056 Aachen&lt;br /&gt;
:&lt;br /&gt;
:Telefon: +49 241 80-1&lt;br /&gt;
:Telefax: +49 241 80-92312&lt;br /&gt;
:E-Mail: [mailto:webmaster@rwth-aachen.de webmaster@rwth-aachen.de]&lt;br /&gt;
:Internet: [http://www.rwth-aachen.de http://www.rwth-aachen.de]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die RWTH Aachen ist eine Körperschaft des öffentlichen Rechts. Sie wird durch den Rektor, Univ.-Prof. Dr. rer. nat. Dr. h.c. mult. Ulrich Rüdiger, vertreten.&lt;br /&gt;
&amp;lt;/div&amp;gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
=== Zuständige Aufsichtsbehörde ===&lt;br /&gt;
Ministerium für Innovation, Wissenschaft, Forschung und Technologie des Landes Nordrhein Westfalen, Völklinger Straße 49, 40221 Düsseldorf.&lt;br /&gt;
=== Umsatzsteuer-Identifikationsnummer ===&lt;br /&gt;
Gemäß § 27 a Umsatzsteuergesetz: DE 121689807&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Haftung für Inhalte ==&lt;br /&gt;
Die Autoren sind angehalten, alle Inhalte, die sie zu dieser Website beisteuern, nach bestem Wissen zu erstellen. Die Inhalte dieses HPC Wikis entstehen gemeinschaftlich, offen und ohne direkte redaktionelle &lt;br /&gt;
Begleitung und Kontrolle. Fast jeder Inhalt kann zu jeder Zeit und durch jedermann verändert werden. Werke, die unter dem Verdacht stehen, Urheber-, Verwertungs-, Persönlichkeits- oder sonstige Rechte zu verletzen, können unmittelbar ohne Rücksprache jederzeit korrigiert bzw. gelöscht werden. Jeder Autor ist für die von ihm erstellten und in dieses HPC Wiki eingepflegte  Beiträge selbst verantwortlich. Die Anbieterin behält sich ausdrücklich vor, einzelne Autoren auszuschließen.&lt;br /&gt;
&lt;br /&gt;
Auf Grund der offenen Struktur des HPC Wikis ist es möglich, dass Sie hier auf fehlerhafte, unvollständige, veraltete, widersprüchliche, in falschem Zusammenhang stehende oder verkürzte Inhalte treffen. Die &lt;br /&gt;
enzyklopädischen Artikel des HPC Wikis dienen der allgemeinen Bildung und Weiterbildung, nicht der Beratung im Falle individueller Anliegen. Die Anbieterin übernimmt daher keine Verantwortung für Schäden, die durch das Vertrauen auf die Inhalte dieses HPC Wikis oder deren Gebrauch entstehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hinweis an Rechteinhaber ==&lt;br /&gt;
&lt;br /&gt;
Die Anbieterin weist auf allen Eingabeseiten darauf hin, dass kein Material verwendet werden darf, welches Urheberrechten Dritter unterliegt. Es kann allerdings nicht ausgeschlossen werden, dass von Autoren dennoch unbefugt Material eingebracht wird, das bestehende Schutzrechte verletzt und das nicht sofort als solches erkannt wird.&lt;br /&gt;
&lt;br /&gt;
Wenn der Anbieterin eine entsprechende Urheberrechtsverletzung angezeigt wird oder sie anderweitig davon Kenntnis erlangt, wird das betreffende Material unverzüglich entfernt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kontakt ==&lt;br /&gt;
Bitte wenden Sie sich bei (technischen) Fragen und Problemen an den:&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
:IT-ServiceDesk&lt;br /&gt;
:Seffenter Weg 23&lt;br /&gt;
:52074 Aachen&lt;br /&gt;
:Telefon: +49 241 80 24680&lt;br /&gt;
:Fax: +49 241 80 22134&lt;br /&gt;
:E-Mail: [mailto:servicedesk@itc.rwth-aachen.de servicedesk@itc.rwth-aachen.de]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Webmaster &lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
:Daniel Schürhoff&lt;br /&gt;
:&lt;br /&gt;
:Telefon: +49 241 80-29703&lt;br /&gt;
:E-Mail: [mailto:schuerhoff@itc.rwth-aachen.de schuerhoff@itc.rwth-aachen.de]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Getting_Started&amp;diff=1019</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Getting_Started&amp;diff=1019"/>
		<updated>2018-07-31T15:22:32Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== [[Access|Access]] or &amp;quot;How-to-be-allowed-onto-the-supercomputer&amp;quot; ==&lt;br /&gt;
Depending on the specific supercomputer, one has to either register to get a user account or write a project proposal and apply for computing resources that way. The respective pages are linked in [[Access|this overview]].&lt;br /&gt;
&lt;br /&gt;
After this is done and login credentials are supplied, one can proceed to [[ Getting_Started#Login_or_.22How-to-now-actually-connect-to-the-supercomputer.22 | login ]].&lt;br /&gt;
&lt;br /&gt;
== [[Nodes#Login|Login]] or &amp;quot;How-to-now-actually-connect-to-the-supercomputer&amp;quot; ==&lt;br /&gt;
Most HPC Systems are unix-based environments with [[shell]] (commandline) access.&lt;br /&gt;
&lt;br /&gt;
To log in, one usually uses [[ssh]] to reach the respective [[Nodes#Login|Login Nodes]] (computers reserved for people just like you that want to connect to the supercomputer). Sometimes this access is restricted, so you can only connect, when you are within the university/facility and its network. To still access the Login Nodes externally, one can &amp;#039;pretend to be inside the network&amp;#039; by using a [[VPN|Virtual Private Network (VPN)]].&lt;br /&gt;
&lt;br /&gt;
Once there, the user can interact with the system and run (small) programs to generally test the system/software.&lt;br /&gt;
&lt;br /&gt;
== [[File_Transfer|File Transfer]] or &amp;quot;How-to-get-your-data-onto-or-off-the-supercomputer&amp;quot; ==&lt;br /&gt;
To get your data (files) onto the supercomputer or back to your local machine, there are usually different ways. Sometimes there are computers specifically reserved for this purpose called [[Nodes#Copy|copy nodes]].&lt;br /&gt;
&lt;br /&gt;
If available to you, it is recommened to use these copy nodes to move data to or from the supercomputer, since this will result in a better connection and disturb other users less. Additionally the tools mentioned below might only work on these nodes. If there are no dedicated copy nodes, you can usually use the [[Nodes#Login|Login Nodes]] for this purpose.&lt;br /&gt;
&lt;br /&gt;
Commonly used and widely supported copying tools are [[rsync]] which mirrors directories (folders) between the supercomputer and your local machine. [[scp]] which is useful for a few single files or specified file-lists, and lastly the commonly used [[ftp]] or the encrypted version sftp (or ftps).&lt;br /&gt;
A little bit more information can be found in the [[File_Transfer|File Transfer]] article.&lt;br /&gt;
&lt;br /&gt;
== [[Scheduler|Schedulers]] or &amp;quot;How-To-Run-Applications-on-a-supercomputer&amp;quot; ==&lt;br /&gt;
To run any significant program or workload on a supercomputer, generally [[Scheduler|schedulers]] are employed. Alongside the above-mentioned Login Nodes there are usually far more Backend Nodes in the system (computers exclusively reserved for computing, to which you cannot connect directly, also referred to as &amp;quot;batch system&amp;quot;). A program called scheduler decides who gets how many of those compute resources for which amount of time. Please use the Backend Nodes for everything which is not a simple small test and only runs for a few minutes., otherwise you will block the Login Nodes for everybody when you run your calculations there. These Backend Nodes make up more than 98% of a supercomputer and can only be accessed via the scheduler.&lt;br /&gt;
&lt;br /&gt;
When you log into a supercomputer, you can run commands on the Login Nodes interactively. You type, you hit return, the command gets executed. Schedulers work differently. You submit a series of commands (in form of a file) and tell it, how much resources it will approximately need in terms of:&lt;br /&gt;
&lt;br /&gt;
* time: If the specified time runs out, before your application finishes and exits, it will be terminated by the scheduler.&lt;br /&gt;
* compute resources:   how many cpus (&amp;#039;calculation thingies&amp;#039;), sockets (&amp;#039;cpu-houses&amp;#039;) and nodes (&amp;#039;computers&amp;#039;)&lt;br /&gt;
* memory resources:    how much RAM (&amp;#039;very fast memory, similar to the few books you have at home&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
This combination of specified commands and required resources is commonly referred to as a &amp;quot;(batch) job&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If later compute resources become free, which match the requirements of your application, the scheduler will run your specified commands on the requested hardware. This is usually delayed (sometimes you have to wait a day or two) and not instant, because other users are currently using the compute resources and you have to wait until their program runs finish. Furthermore you cannot change the series of commands after submitting, but just terminate the job and submit a new one in case of an error.&lt;br /&gt;
&lt;br /&gt;
The file specifying this series of commands and the required resources is called a [[jobscript]]. Its format and syntax depends on the installed scheduler. When you have this jobscript ready with the help of [[jobscript-examples]], colleagues or your local [[support]], you can submit it to the respective [[Schedulers|scheduler of your facility]]. The scheduler then waits until a set of nodes (computers) are free and later allocates those to execute your job as soon as possible. Sometimes there is (an optional) email notification, which is send when your job starts execution/finished running.&lt;br /&gt;
&lt;br /&gt;
Be aware that your specified requirements have to fit within the boundaries of the system of your facility. If you ask for more than there is, chances are, the scheduler will accept your job and wait until missing hardware is bought and installed - although this will not happen in 99.9% of cases. Information over the available hardware can be found in the [https://gauss-allianz.de/de/hpc-ecosystem overview of the Gauss Allianz] or the [[Site-specific_documentation|documentation of the different sites]]. You can find more information about [[Getting_Started#Parallel_Programming_or_.22How-To-Use-More-Than-One-Core.22|parallelizing programs here]]. Also there is an [[Schedulers|overview of the schedulers used at the different sites]].&lt;br /&gt;
&lt;br /&gt;
== [[Modules|Modules]] or &amp;quot;How-To-Use-Software-Without-installing-everything-yourself&amp;quot; ==&lt;br /&gt;
Since a lot of applications rely on 3rd party software, there is a program on most supercomputers, called the [[Modules|Module system]]. With this system, other software, like compilers or special math libraries, are easily loadable and usable. Depending on the institution, different modules might be available, but there are usually common ones like the [[Compiler#Intel_Compiler|Intel]] or [[Compiler#Gnu_Compiler_Collection|GCC]] [[Compiler|Compilers]].&lt;br /&gt;
&lt;br /&gt;
A few common commands, to enter into the supercomputer commandline and talk to the module system, are &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 40%;&amp;quot;&lt;br /&gt;
| module list || lists loaded modules&lt;br /&gt;
|-&lt;br /&gt;
| module avail || lists available (loadable) modules&lt;br /&gt;
|-&lt;br /&gt;
| module load/unload x || loads/unloads module x&lt;br /&gt;
|-&lt;br /&gt;
| module switch x y || switches out module x for module y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you recurrently need lots of modules, this loading can be automated with an [[sh-file]], so that you just have to execute the file once and it loads all modules, you need.&lt;br /&gt;
&lt;br /&gt;
== [[Parallel_Programming|Parallel Programming]] or &amp;quot;How-To-Use-More-Than-One-Core&amp;quot; ==&lt;br /&gt;
Currently development of computers is at a point, where you cannot just make a processor run faster (e.g. by increasing its clock frequency), because limits of physics have been reached in semiconductor development. Therefore the current approach is to split the work into multiple, ideally independent parts, which are then executed in parallel. Similar to cleaning your house, where everybody takes care of a few rooms, on a supercomputer this is usually done with parallel programming paradigms like [[OpenMP|Open Multi-Processing (OpenMP)]] or [[MPI|Message Passing Interface (MPI)]]. However like the fact that you only have one vacuum cleaner in the whole house which not everybody can use at the same time, there are limits on how fast you can get, even with a big number of processing units/cpus/cores (analogous to people in the metaphor) working on your problem (cleaning the house) in parallel.&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Getting_Started&amp;diff=1018</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Getting_Started&amp;diff=1018"/>
		<updated>2018-07-31T15:22:24Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;asdf&lt;br /&gt;
== [[Access|Access]] or &amp;quot;How-to-be-allowed-onto-the-supercomputer&amp;quot; ==&lt;br /&gt;
Depending on the specific supercomputer, one has to either register to get a user account or write a project proposal and apply for computing resources that way. The respective pages are linked in [[Access|this overview]].&lt;br /&gt;
&lt;br /&gt;
After this is done and login credentials are supplied, one can proceed to [[ Getting_Started#Login_or_.22How-to-now-actually-connect-to-the-supercomputer.22 | login ]].&lt;br /&gt;
&lt;br /&gt;
== [[Nodes#Login|Login]] or &amp;quot;How-to-now-actually-connect-to-the-supercomputer&amp;quot; ==&lt;br /&gt;
Most HPC Systems are unix-based environments with [[shell]] (commandline) access.&lt;br /&gt;
&lt;br /&gt;
To log in, one usually uses [[ssh]] to reach the respective [[Nodes#Login|Login Nodes]] (computers reserved for people just like you that want to connect to the supercomputer). Sometimes this access is restricted, so you can only connect, when you are within the university/facility and its network. To still access the Login Nodes externally, one can &amp;#039;pretend to be inside the network&amp;#039; by using a [[VPN|Virtual Private Network (VPN)]].&lt;br /&gt;
&lt;br /&gt;
Once there, the user can interact with the system and run (small) programs to generally test the system/software.&lt;br /&gt;
&lt;br /&gt;
== [[File_Transfer|File Transfer]] or &amp;quot;How-to-get-your-data-onto-or-off-the-supercomputer&amp;quot; ==&lt;br /&gt;
To get your data (files) onto the supercomputer or back to your local machine, there are usually different ways. Sometimes there are computers specifically reserved for this purpose called [[Nodes#Copy|copy nodes]].&lt;br /&gt;
&lt;br /&gt;
If available to you, it is recommened to use these copy nodes to move data to or from the supercomputer, since this will result in a better connection and disturb other users less. Additionally the tools mentioned below might only work on these nodes. If there are no dedicated copy nodes, you can usually use the [[Nodes#Login|Login Nodes]] for this purpose.&lt;br /&gt;
&lt;br /&gt;
Commonly used and widely supported copying tools are [[rsync]] which mirrors directories (folders) between the supercomputer and your local machine. [[scp]] which is useful for a few single files or specified file-lists, and lastly the commonly used [[ftp]] or the encrypted version sftp (or ftps).&lt;br /&gt;
A little bit more information can be found in the [[File_Transfer|File Transfer]] article.&lt;br /&gt;
&lt;br /&gt;
== [[Scheduler|Schedulers]] or &amp;quot;How-To-Run-Applications-on-a-supercomputer&amp;quot; ==&lt;br /&gt;
To run any significant program or workload on a supercomputer, generally [[Scheduler|schedulers]] are employed. Alongside the above-mentioned Login Nodes there are usually far more Backend Nodes in the system (computers exclusively reserved for computing, to which you cannot connect directly, also referred to as &amp;quot;batch system&amp;quot;). A program called scheduler decides who gets how many of those compute resources for which amount of time. Please use the Backend Nodes for everything which is not a simple small test and only runs for a few minutes., otherwise you will block the Login Nodes for everybody when you run your calculations there. These Backend Nodes make up more than 98% of a supercomputer and can only be accessed via the scheduler.&lt;br /&gt;
&lt;br /&gt;
When you log into a supercomputer, you can run commands on the Login Nodes interactively. You type, you hit return, the command gets executed. Schedulers work differently. You submit a series of commands (in form of a file) and tell it, how much resources it will approximately need in terms of:&lt;br /&gt;
&lt;br /&gt;
* time: If the specified time runs out, before your application finishes and exits, it will be terminated by the scheduler.&lt;br /&gt;
* compute resources:   how many cpus (&amp;#039;calculation thingies&amp;#039;), sockets (&amp;#039;cpu-houses&amp;#039;) and nodes (&amp;#039;computers&amp;#039;)&lt;br /&gt;
* memory resources:    how much RAM (&amp;#039;very fast memory, similar to the few books you have at home&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
This combination of specified commands and required resources is commonly referred to as a &amp;quot;(batch) job&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If later compute resources become free, which match the requirements of your application, the scheduler will run your specified commands on the requested hardware. This is usually delayed (sometimes you have to wait a day or two) and not instant, because other users are currently using the compute resources and you have to wait until their program runs finish. Furthermore you cannot change the series of commands after submitting, but just terminate the job and submit a new one in case of an error.&lt;br /&gt;
&lt;br /&gt;
The file specifying this series of commands and the required resources is called a [[jobscript]]. Its format and syntax depends on the installed scheduler. When you have this jobscript ready with the help of [[jobscript-examples]], colleagues or your local [[support]], you can submit it to the respective [[Schedulers|scheduler of your facility]]. The scheduler then waits until a set of nodes (computers) are free and later allocates those to execute your job as soon as possible. Sometimes there is (an optional) email notification, which is send when your job starts execution/finished running.&lt;br /&gt;
&lt;br /&gt;
Be aware that your specified requirements have to fit within the boundaries of the system of your facility. If you ask for more than there is, chances are, the scheduler will accept your job and wait until missing hardware is bought and installed - although this will not happen in 99.9% of cases. Information over the available hardware can be found in the [https://gauss-allianz.de/de/hpc-ecosystem overview of the Gauss Allianz] or the [[Site-specific_documentation|documentation of the different sites]]. You can find more information about [[Getting_Started#Parallel_Programming_or_.22How-To-Use-More-Than-One-Core.22|parallelizing programs here]]. Also there is an [[Schedulers|overview of the schedulers used at the different sites]].&lt;br /&gt;
&lt;br /&gt;
== [[Modules|Modules]] or &amp;quot;How-To-Use-Software-Without-installing-everything-yourself&amp;quot; ==&lt;br /&gt;
Since a lot of applications rely on 3rd party software, there is a program on most supercomputers, called the [[Modules|Module system]]. With this system, other software, like compilers or special math libraries, are easily loadable and usable. Depending on the institution, different modules might be available, but there are usually common ones like the [[Compiler#Intel_Compiler|Intel]] or [[Compiler#Gnu_Compiler_Collection|GCC]] [[Compiler|Compilers]].&lt;br /&gt;
&lt;br /&gt;
A few common commands, to enter into the supercomputer commandline and talk to the module system, are &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 40%;&amp;quot;&lt;br /&gt;
| module list || lists loaded modules&lt;br /&gt;
|-&lt;br /&gt;
| module avail || lists available (loadable) modules&lt;br /&gt;
|-&lt;br /&gt;
| module load/unload x || loads/unloads module x&lt;br /&gt;
|-&lt;br /&gt;
| module switch x y || switches out module x for module y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you recurrently need lots of modules, this loading can be automated with an [[sh-file]], so that you just have to execute the file once and it loads all modules, you need.&lt;br /&gt;
&lt;br /&gt;
== [[Parallel_Programming|Parallel Programming]] or &amp;quot;How-To-Use-More-Than-One-Core&amp;quot; ==&lt;br /&gt;
Currently development of computers is at a point, where you cannot just make a processor run faster (e.g. by increasing its clock frequency), because limits of physics have been reached in semiconductor development. Therefore the current approach is to split the work into multiple, ideally independent parts, which are then executed in parallel. Similar to cleaning your house, where everybody takes care of a few rooms, on a supercomputer this is usually done with parallel programming paradigms like [[OpenMP|Open Multi-Processing (OpenMP)]] or [[MPI|Message Passing Interface (MPI)]]. However like the fact that you only have one vacuum cleaner in the whole house which not everybody can use at the same time, there are limits on how fast you can get, even with a big number of processing units/cpus/cores (analogous to people in the metaphor) working on your problem (cleaning the house) in parallel.&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Getting_Started&amp;diff=1017</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Getting_Started&amp;diff=1017"/>
		<updated>2018-07-31T15:20:18Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== [[Access|Access]] or &amp;quot;How-to-be-allowed-onto-the-supercomputer&amp;quot; ==&lt;br /&gt;
Depending on the specific supercomputer, one has to either register to get a user account or write a project proposal and apply for computing resources that way. The respective pages are linked in [[Access|this overview]].&lt;br /&gt;
&lt;br /&gt;
After this is done and login credentials are supplied, one can proceed to [[ Getting_Started#Login_or_.22How-to-now-actually-connect-to-the-supercomputer.22 | login ]].&lt;br /&gt;
&lt;br /&gt;
== [[Nodes#Login|Login]] or &amp;quot;How-to-now-actually-connect-to-the-supercomputer&amp;quot; ==&lt;br /&gt;
Most HPC Systems are unix-based environments with [[shell]] (commandline) access.&lt;br /&gt;
&lt;br /&gt;
To log in, one usually uses [[ssh]] to reach the respective [[Nodes#Login|Login Nodes]] (computers reserved for people just like you that want to connect to the supercomputer). Sometimes this access is restricted, so you can only connect, when you are within the university/facility and its network. To still access the Login Nodes externally, one can &amp;#039;pretend to be inside the network&amp;#039; by using a [[VPN|Virtual Private Network (VPN)]].&lt;br /&gt;
&lt;br /&gt;
Once there, the user can interact with the system and run (small) programs to generally test the system/software.&lt;br /&gt;
&lt;br /&gt;
== [[File_Transfer|File Transfer]] or &amp;quot;How-to-get-your-data-onto-or-off-the-supercomputer&amp;quot; ==&lt;br /&gt;
To get your data (files) onto the supercomputer or back to your local machine, there are usually different ways. Sometimes there are computers specifically reserved for this purpose called [[Nodes#Copy|copy nodes]].&lt;br /&gt;
&lt;br /&gt;
If available to you, it is recommened to use these copy nodes to move data to or from the supercomputer, since this will result in a better connection and disturb other users less. Additionally the tools mentioned below might only work on these nodes. If there are no dedicated copy nodes, you can usually use the [[Nodes#Login|Login Nodes]] for this purpose.&lt;br /&gt;
&lt;br /&gt;
Commonly used and widely supported copying tools are [[rsync]] which mirrors directories (folders) between the supercomputer and your local machine. [[scp]] which is useful for a few single files or specified file-lists, and lastly the commonly used [[ftp]] or the encrypted version sftp (or ftps).&lt;br /&gt;
A little bit more information can be found in the [[File_Transfer|File Transfer]] article.&lt;br /&gt;
&lt;br /&gt;
== [[Scheduler|Schedulers]] or &amp;quot;How-To-Run-Applications-on-a-supercomputer&amp;quot; ==&lt;br /&gt;
To run any significant program or workload on a supercomputer, generally [[Scheduler|schedulers]] are employed. Alongside the above-mentioned Login Nodes there are usually far more Backend Nodes in the system (computers exclusively reserved for computing, to which you cannot connect directly, also referred to as &amp;quot;batch system&amp;quot;). A program called scheduler decides who gets how many of those compute resources for which amount of time. Please use the Backend Nodes for everything which is not a simple small test and only runs for a few minutes., otherwise you will block the Login Nodes for everybody when you run your calculations there. These Backend Nodes make up more than 98% of a supercomputer and can only be accessed via the scheduler.&lt;br /&gt;
&lt;br /&gt;
When you log into a supercomputer, you can run commands on the Login Nodes interactively. You type, you hit return, the command gets executed. Schedulers work differently. You submit a series of commands (in form of a file) and tell it, how much resources it will approximately need in terms of:&lt;br /&gt;
&lt;br /&gt;
* time: If the specified time runs out, before your application finishes and exits, it will be terminated by the scheduler.&lt;br /&gt;
* compute resources:   how many cpus (&amp;#039;calculation thingies&amp;#039;), sockets (&amp;#039;cpu-houses&amp;#039;) and nodes (&amp;#039;computers&amp;#039;)&lt;br /&gt;
* memory resources:    how much RAM (&amp;#039;very fast memory, similar to the few books you have at home&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
This combination of specified commands and required resources is commonly referred to as a &amp;quot;(batch) job&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If later compute resources become free, which match the requirements of your application, the scheduler will run your specified commands on the requested hardware. This is usually delayed (sometimes you have to wait a day or two) and not instant, because other users are currently using the compute resources and you have to wait until their program runs finish. Furthermore you cannot change the series of commands after submitting, but just terminate the job and submit a new one in case of an error.&lt;br /&gt;
&lt;br /&gt;
The file specifying this series of commands and the required resources is called a [[jobscript]]. Its format and syntax depends on the installed scheduler. When you have this jobscript ready with the help of [[jobscript-examples]], colleagues or your local [[support]], you can submit it to the respective [[Schedulers|scheduler of your facility]]. The scheduler then waits until a set of nodes (computers) are free and later allocates those to execute your job as soon as possible. Sometimes there is (an optional) email notification, which is send when your job starts execution/finished running.&lt;br /&gt;
&lt;br /&gt;
Be aware that your specified requirements have to fit within the boundaries of the system of your facility. If you ask for more than there is, chances are, the scheduler will accept your job and wait until missing hardware is bought and installed - although this will not happen in 99.9% of cases. Information over the available hardware can be found in the [https://gauss-allianz.de/de/hpc-ecosystem overview of the Gauss Allianz] or the [[Site-specific_documentation|documentation of the different sites]]. You can find more information about [[Getting_Started#Parallel_Programming_or_.22How-To-Use-More-Than-One-Core.22|parallelizing programs here]]. Also there is an [[Schedulers|overview of the schedulers used at the different sites]].&lt;br /&gt;
&lt;br /&gt;
== [[Modules|Modules]] or &amp;quot;How-To-Use-Software-Without-installing-everything-yourself&amp;quot; ==&lt;br /&gt;
Since a lot of applications rely on 3rd party software, there is a program on most supercomputers, called the [[Modules|Module system]]. With this system, other software, like compilers or special math libraries, are easily loadable and usable. Depending on the institution, different modules might be available, but there are usually common ones like the [[Compiler#Intel_Compiler|Intel]] or [[Compiler#Gnu_Compiler_Collection|GCC]] [[Compiler|Compilers]].&lt;br /&gt;
&lt;br /&gt;
A few common commands, to enter into the supercomputer commandline and talk to the module system, are &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 40%;&amp;quot;&lt;br /&gt;
| module list || lists loaded modules&lt;br /&gt;
|-&lt;br /&gt;
| module avail || lists available (loadable) modules&lt;br /&gt;
|-&lt;br /&gt;
| module load/unload x || loads/unloads module x&lt;br /&gt;
|-&lt;br /&gt;
| module switch x y || switches out module x for module y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you recurrently need lots of modules, this loading can be automated with an [[sh-file]], so that you just have to execute the file once and it loads all modules, you need.&lt;br /&gt;
&lt;br /&gt;
== [[Parallel_Programming|Parallel Programming]] or &amp;quot;How-To-Use-More-Than-One-Core&amp;quot; ==&lt;br /&gt;
Currently development of computers is at a point, where you cannot just make a processor run faster (e.g. by increasing its clock frequency), because limits of physics have been reached in semiconductor development. Therefore the current approach is to split the work into multiple, ideally independent parts, which are then executed in parallel. Similar to cleaning your house, where everybody takes care of a few rooms, on a supercomputer this is usually done with parallel programming paradigms like [[OpenMP|Open Multi-Processing (OpenMP)]] or [[MPI|Message Passing Interface (MPI)]]. However like the fact that you only have one vacuum cleaner in the whole house which not everybody can use at the same time, there are limits on how fast you can get, even with a big number of processing units/cpus/cores (analogous to people in the metaphor) working on your problem (cleaning the house) in parallel.&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Getting_Started&amp;diff=1016</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Getting_Started&amp;diff=1016"/>
		<updated>2018-07-31T15:20:10Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;test&lt;br /&gt;
== [[Access|Access]] or &amp;quot;How-to-be-allowed-onto-the-supercomputer&amp;quot; ==&lt;br /&gt;
Depending on the specific supercomputer, one has to either register to get a user account or write a project proposal and apply for computing resources that way. The respective pages are linked in [[Access|this overview]].&lt;br /&gt;
&lt;br /&gt;
After this is done and login credentials are supplied, one can proceed to [[ Getting_Started#Login_or_.22How-to-now-actually-connect-to-the-supercomputer.22 | login ]].&lt;br /&gt;
&lt;br /&gt;
== [[Nodes#Login|Login]] or &amp;quot;How-to-now-actually-connect-to-the-supercomputer&amp;quot; ==&lt;br /&gt;
Most HPC Systems are unix-based environments with [[shell]] (commandline) access.&lt;br /&gt;
&lt;br /&gt;
To log in, one usually uses [[ssh]] to reach the respective [[Nodes#Login|Login Nodes]] (computers reserved for people just like you that want to connect to the supercomputer). Sometimes this access is restricted, so you can only connect, when you are within the university/facility and its network. To still access the Login Nodes externally, one can &amp;#039;pretend to be inside the network&amp;#039; by using a [[VPN|Virtual Private Network (VPN)]].&lt;br /&gt;
&lt;br /&gt;
Once there, the user can interact with the system and run (small) programs to generally test the system/software.&lt;br /&gt;
&lt;br /&gt;
== [[File_Transfer|File Transfer]] or &amp;quot;How-to-get-your-data-onto-or-off-the-supercomputer&amp;quot; ==&lt;br /&gt;
To get your data (files) onto the supercomputer or back to your local machine, there are usually different ways. Sometimes there are computers specifically reserved for this purpose called [[Nodes#Copy|copy nodes]].&lt;br /&gt;
&lt;br /&gt;
If available to you, it is recommened to use these copy nodes to move data to or from the supercomputer, since this will result in a better connection and disturb other users less. Additionally the tools mentioned below might only work on these nodes. If there are no dedicated copy nodes, you can usually use the [[Nodes#Login|Login Nodes]] for this purpose.&lt;br /&gt;
&lt;br /&gt;
Commonly used and widely supported copying tools are [[rsync]] which mirrors directories (folders) between the supercomputer and your local machine. [[scp]] which is useful for a few single files or specified file-lists, and lastly the commonly used [[ftp]] or the encrypted version sftp (or ftps).&lt;br /&gt;
A little bit more information can be found in the [[File_Transfer|File Transfer]] article.&lt;br /&gt;
&lt;br /&gt;
== [[Scheduler|Schedulers]] or &amp;quot;How-To-Run-Applications-on-a-supercomputer&amp;quot; ==&lt;br /&gt;
To run any significant program or workload on a supercomputer, generally [[Scheduler|schedulers]] are employed. Alongside the above-mentioned Login Nodes there are usually far more Backend Nodes in the system (computers exclusively reserved for computing, to which you cannot connect directly, also referred to as &amp;quot;batch system&amp;quot;). A program called scheduler decides who gets how many of those compute resources for which amount of time. Please use the Backend Nodes for everything which is not a simple small test and only runs for a few minutes., otherwise you will block the Login Nodes for everybody when you run your calculations there. These Backend Nodes make up more than 98% of a supercomputer and can only be accessed via the scheduler.&lt;br /&gt;
&lt;br /&gt;
When you log into a supercomputer, you can run commands on the Login Nodes interactively. You type, you hit return, the command gets executed. Schedulers work differently. You submit a series of commands (in form of a file) and tell it, how much resources it will approximately need in terms of:&lt;br /&gt;
&lt;br /&gt;
* time: If the specified time runs out, before your application finishes and exits, it will be terminated by the scheduler.&lt;br /&gt;
* compute resources:   how many cpus (&amp;#039;calculation thingies&amp;#039;), sockets (&amp;#039;cpu-houses&amp;#039;) and nodes (&amp;#039;computers&amp;#039;)&lt;br /&gt;
* memory resources:    how much RAM (&amp;#039;very fast memory, similar to the few books you have at home&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
This combination of specified commands and required resources is commonly referred to as a &amp;quot;(batch) job&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If later compute resources become free, which match the requirements of your application, the scheduler will run your specified commands on the requested hardware. This is usually delayed (sometimes you have to wait a day or two) and not instant, because other users are currently using the compute resources and you have to wait until their program runs finish. Furthermore you cannot change the series of commands after submitting, but just terminate the job and submit a new one in case of an error.&lt;br /&gt;
&lt;br /&gt;
The file specifying this series of commands and the required resources is called a [[jobscript]]. Its format and syntax depends on the installed scheduler. When you have this jobscript ready with the help of [[jobscript-examples]], colleagues or your local [[support]], you can submit it to the respective [[Schedulers|scheduler of your facility]]. The scheduler then waits until a set of nodes (computers) are free and later allocates those to execute your job as soon as possible. Sometimes there is (an optional) email notification, which is send when your job starts execution/finished running.&lt;br /&gt;
&lt;br /&gt;
Be aware that your specified requirements have to fit within the boundaries of the system of your facility. If you ask for more than there is, chances are, the scheduler will accept your job and wait until missing hardware is bought and installed - although this will not happen in 99.9% of cases. Information over the available hardware can be found in the [https://gauss-allianz.de/de/hpc-ecosystem overview of the Gauss Allianz] or the [[Site-specific_documentation|documentation of the different sites]]. You can find more information about [[Getting_Started#Parallel_Programming_or_.22How-To-Use-More-Than-One-Core.22|parallelizing programs here]]. Also there is an [[Schedulers|overview of the schedulers used at the different sites]].&lt;br /&gt;
&lt;br /&gt;
== [[Modules|Modules]] or &amp;quot;How-To-Use-Software-Without-installing-everything-yourself&amp;quot; ==&lt;br /&gt;
Since a lot of applications rely on 3rd party software, there is a program on most supercomputers, called the [[Modules|Module system]]. With this system, other software, like compilers or special math libraries, are easily loadable and usable. Depending on the institution, different modules might be available, but there are usually common ones like the [[Compiler#Intel_Compiler|Intel]] or [[Compiler#Gnu_Compiler_Collection|GCC]] [[Compiler|Compilers]].&lt;br /&gt;
&lt;br /&gt;
A few common commands, to enter into the supercomputer commandline and talk to the module system, are &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 40%;&amp;quot;&lt;br /&gt;
| module list || lists loaded modules&lt;br /&gt;
|-&lt;br /&gt;
| module avail || lists available (loadable) modules&lt;br /&gt;
|-&lt;br /&gt;
| module load/unload x || loads/unloads module x&lt;br /&gt;
|-&lt;br /&gt;
| module switch x y || switches out module x for module y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you recurrently need lots of modules, this loading can be automated with an [[sh-file]], so that you just have to execute the file once and it loads all modules, you need.&lt;br /&gt;
&lt;br /&gt;
== [[Parallel_Programming|Parallel Programming]] or &amp;quot;How-To-Use-More-Than-One-Core&amp;quot; ==&lt;br /&gt;
Currently development of computers is at a point, where you cannot just make a processor run faster (e.g. by increasing its clock frequency), because limits of physics have been reached in semiconductor development. Therefore the current approach is to split the work into multiple, ideally independent parts, which are then executed in parallel. Similar to cleaning your house, where everybody takes care of a few rooms, on a supercomputer this is usually done with parallel programming paradigms like [[OpenMP|Open Multi-Processing (OpenMP)]] or [[MPI|Message Passing Interface (MPI)]]. However like the fact that you only have one vacuum cleaner in the whole house which not everybody can use at the same time, there are limits on how fast you can get, even with a big number of processing units/cpus/cores (analogous to people in the metaphor) working on your problem (cleaning the house) in parallel.&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=MediaWiki:Sidebar&amp;diff=1014</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=MediaWiki:Sidebar&amp;diff=1014"/>
		<updated>2018-07-11T13:17:44Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
* SEARCH&lt;br /&gt;
&lt;br /&gt;
* Basics&lt;br /&gt;
** Getting_Started|Getting Started&lt;br /&gt;
** Shell|Shell&lt;br /&gt;
** ssh|ssh&lt;br /&gt;
** File_Transfer|File Transfer&lt;br /&gt;
** Modules|Modules&lt;br /&gt;
** Scheduler|Scheduler&lt;br /&gt;
** HPC-Dictionary|HPC-Dictionary&lt;br /&gt;
** How-to-Google|How to Google&lt;br /&gt;
&lt;br /&gt;
* General Info&lt;br /&gt;
** Access|Access&lt;br /&gt;
** Nodes|Nodes&lt;br /&gt;
** Schedulers|Schedulers&lt;br /&gt;
** Site-specific documentation|Site-specific docu&lt;br /&gt;
** Support|Support&lt;br /&gt;
** Software|Software&lt;br /&gt;
&lt;br /&gt;
* HPC-User&lt;br /&gt;
** Compiler|Compiler&lt;br /&gt;
** Parallel_Programming|Parallelization&lt;br /&gt;
** How_to_Use_OpenMP|OpenMP Usage&lt;br /&gt;
** How_to_Use_MPI|MPI Usage&lt;br /&gt;
** ssh_keys|ssh Keys&lt;br /&gt;
&lt;br /&gt;
* HPC-Dev&lt;br /&gt;
** Performance_Engineering|Performance_Engineering&lt;br /&gt;
** OpenMP|OpenMP&lt;br /&gt;
** MPI|MPI&lt;br /&gt;
&lt;br /&gt;
* HPC-Admin&lt;br /&gt;
** Setting_up_Monitoring|Monitoring_Setup&lt;br /&gt;
&lt;br /&gt;
* Optimization_tips&lt;br /&gt;
** Load_Balancing|Load Balancing&lt;br /&gt;
** Binding/Pinning|Binding/Pinning&lt;br /&gt;
&lt;br /&gt;
* FAQs&lt;br /&gt;
** How-to-Google|How-to-Google&lt;br /&gt;
** Shell|Unix&lt;br /&gt;
** Wiki|Wiki&lt;br /&gt;
** Sample_Page|Sample_Page&lt;br /&gt;
&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=MediaWiki:Sidebar&amp;diff=1013</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=MediaWiki:Sidebar&amp;diff=1013"/>
		<updated>2018-07-11T13:17:17Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
* SEARCH&lt;br /&gt;
&lt;br /&gt;
* Basics&lt;br /&gt;
** Getting_Started|Getting Started&lt;br /&gt;
** Shell|Shell&lt;br /&gt;
** ssh|ssh&lt;br /&gt;
** File_Transfer|File Transfer&lt;br /&gt;
** Modules|Modules&lt;br /&gt;
** Scheduler|Scheduler&lt;br /&gt;
** HPC-Dictionary|HPC-Dictionary&lt;br /&gt;
** How-to-Google|How to Google&lt;br /&gt;
&lt;br /&gt;
* General Info&lt;br /&gt;
** Access|Access&lt;br /&gt;
** Nodes|Nodes&lt;br /&gt;
** Schedulers|Schedulers&lt;br /&gt;
** Site-specific documentation|Site-specific docu&lt;br /&gt;
** Support|Support&lt;br /&gt;
** Software|Software&lt;br /&gt;
&lt;br /&gt;
* HPC-User&lt;br /&gt;
** Compiler|Compiler&lt;br /&gt;
** Parallel_Programming|Parallelization&lt;br /&gt;
** How_to_Use_OpenMP|OpenMP Usage&lt;br /&gt;
** How_to_Use_MPI|MPI Usage&lt;br /&gt;
** ssh_keys|ssh Keys&lt;br /&gt;
&lt;br /&gt;
* HPC-Dev&lt;br /&gt;
** Performance_Engineering|Performance_Engineering&lt;br /&gt;
** OpenMP|OpenMP&lt;br /&gt;
** MPI|MPI&lt;br /&gt;
&lt;br /&gt;
* HPC-Admin&lt;br /&gt;
** Setting_up_Monitoring|Setting_up_Monitoring&lt;br /&gt;
&lt;br /&gt;
* Optimization_tips&lt;br /&gt;
** Load_Balancing|Load Balancing&lt;br /&gt;
** Binding/Pinning|Binding/Pinning&lt;br /&gt;
&lt;br /&gt;
* FAQs&lt;br /&gt;
** How-to-Google|How-to-Google&lt;br /&gt;
** Shell|Unix&lt;br /&gt;
** Wiki|Wiki&lt;br /&gt;
** Sample_Page|Sample_Page&lt;br /&gt;
&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=HPC_Wiki&amp;diff=1012</id>
		<title>HPC Wiki</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=HPC_Wiki&amp;diff=1012"/>
		<updated>2018-06-20T07:25:45Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to HPC Wiki of the ProPE Project.&lt;br /&gt;
&lt;br /&gt;
This website is currently work-in-progress and aims to provide a site independant HPC documentation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rubriken ==&lt;br /&gt;
&lt;br /&gt;
[[Getting_Started]] is a basic guide for first-time users. It covers a wide range of topics from access and login to system-independant concepts of Unix systems to data transfers.&lt;br /&gt;
&lt;br /&gt;
[[FAQs]]&lt;br /&gt;
&lt;br /&gt;
== Todo ==&lt;br /&gt;
Create pages with help of the [[Sample_Page|Sample Page]]&lt;br /&gt;
&lt;br /&gt;
Basics documentation:&lt;br /&gt;
&lt;br /&gt;
[[make]], [[cmake]], [[Ssh_keys]], [[compiler]], [[software-tools]], [[Modules]], [[vi/vim]],  [[screen/tmux]], [[ssh]] [[python/pip]], [[scp]], [[rsync]], [[git]], [[ps]], [[unix-primer]], [[shell]], [[chmod]], [[umask]], [[tar]], [[sh-file]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HPC-Programs: [[Measurement-tools]], [[Likwid]], [[Vampir]], [[ScoreP]], [[Must]]&lt;br /&gt;
&lt;br /&gt;
HPC-Pages:&lt;br /&gt;
[[PE-Process]], [[correctness checking]], [[Software]], [[Access]], [[Site-specific_documentation]], [[measurement-tools]], [[likwid]]&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=HPC_Wiki&amp;diff=1011</id>
		<title>HPC Wiki</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=HPC_Wiki&amp;diff=1011"/>
		<updated>2018-06-20T06:58:10Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to HPC Wiki of the ProPE Project.&lt;br /&gt;
&lt;br /&gt;
This website is currently work-in-progress and aims to provide a site independant HPC documentation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rubriken ==&lt;br /&gt;
&lt;br /&gt;
[[Getting_Started]] is a basic guide for first-time users. It covers a wide range of topics from access and login to system-independant concepts of Unix systems to data transfers.&lt;br /&gt;
&lt;br /&gt;
[[FAQs]]&lt;br /&gt;
&lt;br /&gt;
== Todo ==&lt;br /&gt;
Create pages with help of the [[Sample_Page|Sample Page]]&lt;br /&gt;
&lt;br /&gt;
Basics documentation:&lt;br /&gt;
&lt;br /&gt;
[[make]], [[cmake]], [[Ssh_keys]], [[compiler]], [[software-tools]], [[Modules]], [[vi/vim]],  [[screen/tmux]], [[ssh]] [[python/pip]], [[scp]], [[rsync]], [[git]], [[ps]], [[unix-primer]], [[shell]], [[chmod]], [[umask]], [[tar]], [[sh-file]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HPC-Programs: [[Likwid]], [[Vampir]], [[ScoreP]], [[Must]]&lt;br /&gt;
&lt;br /&gt;
HPC-Pages:&lt;br /&gt;
[[PE-Process]], [[correctness checking]], [[Software]], [[Access]], [[Site-specific_documentation]], [[measurement-tools]], [[likwid]]&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Shell&amp;diff=1010</id>
		<title>Shell</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Shell&amp;diff=1010"/>
		<updated>2018-06-20T06:50:40Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
The Shell or commandline is a program to interact with a given computer (or supercomputer). Contrary to a graphical user interface (e.g. Windows or Mac Desktop) which most desktop machines offer today, the shell seems simplistic, although daunting at the same time, because it requires the user to have a certain knowledge of the available commands and their uses. However, even with a few basic commands, the shell can be used productively and become a powerful tool in your toolbox. This power combined with the fact that the shell itself uses almost no resources is the reason, why it is still widely used on nearly every supercomputer.&lt;br /&gt;
&lt;br /&gt;
A common shell is the bash (Bourne Again SHell), which comes with nearly every Unix-based operating system. Others Unix shells include the sh, csh, tcsh, zsh, ksh. All of these have quite similar syntax and offer a similar range of commands, which will be described below.&lt;br /&gt;
&lt;br /&gt;
Windows has the DOS commands (available with cmd) or the PowerShell (ps), which is different syntax-wise and will not be covered in too much detail, since most supercomputers run Unix systems.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Enter a command, hit return and wait for the answer :-P&lt;br /&gt;
&lt;br /&gt;
You can abort most commands by pressing &amp;lt;code&amp;gt;Ctrl + C&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make your life easier, you can also write a bunch of commands together into a text file, save it as &amp;#039;name.sh&amp;#039; and then run that to call all those commands in sequence and repeatable. This is called an [[sh-file]] or shell script.&lt;br /&gt;
&lt;br /&gt;
Furthermore you can get help for most commands by appending &amp;lt;code&amp;gt;-h&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;--help&amp;lt;/code&amp;gt; to show the corresponding help message of the executed command. Additionally the so-called manual pages (or short: man pages) provide you with a detailed description for the specified command. Type &amp;lt;code&amp;gt;man ls&amp;lt;/code&amp;gt; to look at the man page for the &amp;lt;code&amp;gt;ls&amp;lt;/code&amp;gt; command, scroll with your arrow keys and press &amp;lt;code&amp;gt;q&amp;lt;/code&amp;gt; to exit.&lt;br /&gt;
&lt;br /&gt;
== Navigating the File System ==&lt;br /&gt;
The following commands tell you, where you are, take you somewhere else and show you what is there:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 45%;&amp;quot;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Linux Command&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;DOS Command&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;Description&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| pwd || cd || “Print Working Directory”. Shows the current location in the directory tree.&lt;br /&gt;
|-&lt;br /&gt;
| cd &amp;lt;directory&amp;gt; || cd &amp;lt;directory&amp;gt; || Change into the specified directory name. Example: cd /usr/src/linux&lt;br /&gt;
|-&lt;br /&gt;
| cd ~ || || “~” is an alias for your home directory. It can be used as a shortcut to your “home”, or other directories relative to your home.&lt;br /&gt;
|-&lt;br /&gt;
| cd .. || cd.. || Move up one directory. For example, if you are in /home/vic and you type “cd ..”, you will end up in /home.&lt;br /&gt;
|-&lt;br /&gt;
| ls || dir /w || List all files in the current directory, in column format.&lt;br /&gt;
|-&lt;br /&gt;
| ls -l || dir || List files in “long” format, one file per line. This also shows you additional info about the file, such as ownership, permissions, date, and size.&lt;br /&gt;
|-&lt;br /&gt;
| ls -a || dir /a || List all files, including “hidden” files. On Unix systems hidden files are those beginning with a “.”, e.g. The .bash_history file in your home directory.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Doing Stuff with Files and Directories ==&lt;br /&gt;
The following commands let you manipulate and interact with files. Since these commands all work on files, the syntax is usually&lt;br /&gt;
&lt;br /&gt;
 $ &amp;lt;command&amp;gt; &amp;lt;filename&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 40%;&amp;quot;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Linux Command&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;DOS Command&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;Description&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| file || || Find out what kind of file it is. For example, “file /bin/ls” tells us that it is a Linux executable file.&lt;br /&gt;
|-&lt;br /&gt;
| vim || || Opens the [[vim]] text editor to modify files.&lt;br /&gt;
|-&lt;br /&gt;
| cat || type || Display the contents of a text file on the screen. For example: cat MyFile.txt would display the contents of the file.&lt;br /&gt;
|-&lt;br /&gt;
| head || || Display the first few lines of a text file. Example: head /etc/services&lt;br /&gt;
|-&lt;br /&gt;
| tail || || Display the last few lines of a text file. Example: tail /etc/services&lt;br /&gt;
|-&lt;br /&gt;
| tail -f || || Display the last few lines of a text file, and then output appended data as the file grows (very useful for following log files!). Example: tail -f /var/log/messages&lt;br /&gt;
|-&lt;br /&gt;
| cp || copy || Copies a file from one location to another. Example: cp MyFile.txt /tmp (copies the MyFile.txt file to the /tmp directory)&lt;br /&gt;
|-&lt;br /&gt;
| mv || rename, ren, move || Moves a file to a new location, or renames it. For example: mv MyFile.txt /tmp (copy the file to /tmp, and delete it from the original location)&lt;br /&gt;
|-&lt;br /&gt;
| rm || del || Delete a file. Example: rm /tmp/MyFile.txt&lt;br /&gt;
|-&lt;br /&gt;
| mkdir || md || Create an empty directory. Example: mkdir /tmp/myfiles/&lt;br /&gt;
|-&lt;br /&gt;
| rmdir || rd, rmdir || Delete an empty directory. Example: rmdir /tmp/myfiles/&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Getting System Info ==&lt;br /&gt;
The following commands will give you information about the system or users:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 40%;&amp;quot;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Linux Command&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;Description&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| ps || Lists currently running process (programs).&lt;br /&gt;
|-&lt;br /&gt;
| w || Show who is logged on and what they are doing.&lt;br /&gt;
|-&lt;br /&gt;
| id || Print your user-id and group id&amp;#039;s&lt;br /&gt;
|-&lt;br /&gt;
| du || Disk Usage in a particular directory. &amp;lt;code&amp;gt;du -s&amp;lt;/code&amp;gt; provides a summary for the current directory.&lt;br /&gt;
|-&lt;br /&gt;
| top || Displays all currently running processes on your system in full-screen. A great way to see the activity on your computer in real-time. Type &amp;lt;code&amp;gt;q&amp;lt;/code&amp;gt; to quit.&lt;br /&gt;
|-&lt;br /&gt;
| free || Displays amount of free and used memory in the system.&lt;br /&gt;
|-&lt;br /&gt;
| cat /proc/cpuinfo || Displays information about your CPU.&lt;br /&gt;
|-&lt;br /&gt;
| cat /proc/meminfo || Display lots of information about current memory usage.&lt;br /&gt;
|-&lt;br /&gt;
| uname -a || Prints system information to the screen (kernel version, machine type, etc.)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Utilities ==&lt;br /&gt;
Following is a list of a few useful commands:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 40%;&amp;quot;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Linux Command&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;Description&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| clear || Removes the scrollback history from your shell and moves the current prompt to the top of the screen.&lt;br /&gt;
|-&lt;br /&gt;
| echo || Print text to the screen. Most useful when writing shell scripts, e.g. for logging progress or printing results. For example: &amp;lt;code&amp;gt;echo “Hello World”&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| less || An improved replacement for the “more” command. Allows you to scroll backwards as well as forwards.&lt;br /&gt;
|-&lt;br /&gt;
| grep || Search for a pattern in a file or program output and only print matching lines. For example, to find out which TCP network port is used by the “nfs” service, you can do this: &amp;lt;code&amp;gt;grep &amp;quot;nfs&amp;quot; /etc/services&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| sort || Sort a file or program output. Example: sort MyFile.txt&lt;br /&gt;
|-&lt;br /&gt;
| su || “Switch User”. Allows you to switch to another user&amp;#039;s account temporarily.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[http://www.karlin.mff.cuni.cz/~hron/NMNV532/ShellIntro.pdf A short info with a good basic command reference]&lt;br /&gt;
&lt;br /&gt;
[http://linux.org.mt/article/terminal/ A longer linux-shell tutorial]&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Talk:Access&amp;diff=1009</id>
		<title>Talk:Access</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Talk:Access&amp;diff=1009"/>
		<updated>2018-05-17T11:01:47Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wurde die Seite gründlich modifiziert? Vgl. Mail von DaM, 04/05/2018 05:00 PM&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
https://hpc-wiki.itc.rwth-aachen.de/mediawiki/index.php/Access&lt;br /&gt;
ist noch nicht komplett hinsichtlich des „BUND program“&lt;br /&gt;
&lt;br /&gt;
Vorschlag:  Statt:&lt;br /&gt;
Parallel to your regional center, you can also have a look at the BUND program where you can get computing time independent from your affiliated university/facility.&lt;br /&gt;
&lt;br /&gt;
Besser:&lt;br /&gt;
In addition to your regional HPC center, you can apply for computing resources at  &lt;br /&gt;
·  national HPC facilities organized in the Gauss Centre for Supercomputing or&lt;br /&gt;
·  European facilities in the context of the Partnership for Advanced Computing in Europe (PRACE).&lt;br /&gt;
------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Done siehe Seite&lt;br /&gt;
------------------------------------------------------------------------------&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=File:Hardware_hierarchy.PNG&amp;diff=1003</id>
		<title>File:Hardware hierarchy.PNG</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=File:Hardware_hierarchy.PNG&amp;diff=1003"/>
		<updated>2018-04-23T15:14:12Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=SLURM&amp;diff=1002</id>
		<title>SLURM</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=SLURM&amp;diff=1002"/>
		<updated>2018-04-23T12:15:23Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: Reverted edits by 134.130.1.109 (talk) to last revision by Ds019135&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
SLURM is a workload manager / job [[scheduler]]. To get an overview of the functionality of a scheduler, go [[Scheduler#General|here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== #SBATCH Usage ==&lt;br /&gt;
&lt;br /&gt;
If you are writing a [[jobscript]] for a SLURM batch system, the magic cookie is &amp;quot;#SBATCH&amp;quot;. To use it, start a new line in your script with &amp;quot;#SBATCH&amp;quot;. Following that, you can put one of the parameters shown below, where the word written in &amp;lt;...&amp;gt; should be replaced with a value.&lt;br /&gt;
&lt;br /&gt;
Basic settings:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 40%;&amp;quot;&lt;br /&gt;
| Parameter || Function&lt;br /&gt;
|-&lt;br /&gt;
| --job-name=&amp;lt;name&amp;gt; || job name&lt;br /&gt;
|-&lt;br /&gt;
| --output=&amp;lt;path&amp;gt; || path to the file where the job (error) output is written to&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Requesting resources:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&lt;br /&gt;
| Parameter || Function&lt;br /&gt;
|-&lt;br /&gt;
| --time=&amp;lt;runlimit&amp;gt; || runtime limit in the format hours:min:sec; once the time specified is up, the job will be killed by the [[scheduler]]&lt;br /&gt;
|-&lt;br /&gt;
| --mem=&amp;lt;memlimit&amp;gt; || job memory request per node, usually an integer followed by a prefix for the unit (e. g. --mem=1G for 1 GB)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Parallel programming (read more [[Parallel_Programming|here]]):&lt;br /&gt;
&lt;br /&gt;
Settings for OpenMP:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&lt;br /&gt;
| Parameter || Function&lt;br /&gt;
|-&lt;br /&gt;
| --nodes=1 || start a parallel job for a shared-memory system on only one node&lt;br /&gt;
|-&lt;br /&gt;
| --cpus-per-task=&amp;lt;num_threads&amp;gt; || number of threads to execute OpenMP application with&lt;br /&gt;
|-&lt;br /&gt;
| --ntasks-per-core=&amp;lt;num_hyperthreads&amp;gt; || number of hyperthreads per core; i. e. any value greater than 1 will turn on hyperthreading (the possible maximum depends on your CPU)&lt;br /&gt;
|-&lt;br /&gt;
| --ntasks-per-node=1 || for OpenMP, use one task per node only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Settings for MPI:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&lt;br /&gt;
| Parameter || Function&lt;br /&gt;
|-&lt;br /&gt;
| --nodes=&amp;lt;num_nodes&amp;gt; || start a parallel job for a distributed-memory system on several nodes&lt;br /&gt;
|-&lt;br /&gt;
| --cpus-per-task=1 || for MPI, use one task per CPU&lt;br /&gt;
|-&lt;br /&gt;
| --ntasks-per-core=1 || disable hyperthreading&lt;br /&gt;
|-&lt;br /&gt;
| --ntasks-per-node=&amp;lt;num_procs&amp;gt; || number of processes per node (the possible maximum depends on your nodes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Email notifications:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&lt;br /&gt;
| Parameter || Function&lt;br /&gt;
|-&lt;br /&gt;
| --mail-type=&amp;lt;type&amp;gt; || type can be one of BEGIN, END, FAIL, REQUEUE or ALL (where a mail will be sent each time the status of your process changes)&lt;br /&gt;
|-&lt;br /&gt;
| --mail-user=&amp;lt;email_address&amp;gt; || email address to send notifications to&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Job Submission ==&lt;br /&gt;
&lt;br /&gt;
This command submits the job you defined in your [[Jobscript|jobscript]] to the batch system:&lt;br /&gt;
&lt;br /&gt;
 $ sbatch jobscript.sh&lt;br /&gt;
&lt;br /&gt;
Just like any other incoming job, your job will first be queued. Then, the scheduler decides when your job will be run. The more resources your job requires, the longer it may be waiting to execute.&lt;br /&gt;
&lt;br /&gt;
You can check the current status of your submitted jobs and their job ids with the following shell command. A job can either be pending &amp;lt;code&amp;gt;PD&amp;lt;/code&amp;gt; (waiting for free nodes to run on) or running &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; (the jobscript is currently being executed). This command will also print the time (hours:min:sec) that your job has been running for.&lt;br /&gt;
&lt;br /&gt;
 $ squeue -u &amp;lt;user_id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case you submitted a job on accident or realised that your job might not be running correctly, you can always remove it from the queue or terminate it when running by typing:&lt;br /&gt;
&lt;br /&gt;
 $ scancel &amp;lt;job_id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Jobscript Examples ==&lt;br /&gt;
&lt;br /&gt;
This serial job will run a given executable, in this case &amp;quot;myapp.exe&amp;quot;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
### Job name&lt;br /&gt;
#SBATCH --job-name=MYJOB&lt;br /&gt;
&lt;br /&gt;
### File for the output&lt;br /&gt;
#SBATCH --output=MYJOB_OUTPUT&lt;br /&gt;
&lt;br /&gt;
### Time your job needs to execute, e. g. 15 min 30 sec&lt;br /&gt;
#SBATCH --time=00:15:30&lt;br /&gt;
&lt;br /&gt;
### Memory your job needs per node, e. g. 1 GB&lt;br /&gt;
#SBATCH --mem=1G&lt;br /&gt;
&lt;br /&gt;
### The last part consists of regular shell commands:&lt;br /&gt;
### Change to working directory&lt;br /&gt;
cd /home/usr/workingdirectory&lt;br /&gt;
&lt;br /&gt;
### Execute your application&lt;br /&gt;
myapp.exe&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you&amp;#039;d like to run a parallel job on a cluster that is managed by SLURM, you have to clarify that. Therefore, use the command &amp;quot;srun &amp;lt;my_executable&amp;gt;&amp;quot; in your jobscript.&lt;br /&gt;
&lt;br /&gt;
This OpenMP job will start the [[Parallel_Programming|parallel program]] &amp;quot;myapp.exe&amp;quot; with 24 threads.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
### Job name&lt;br /&gt;
#SBATCH --job-name=OMPJOB&lt;br /&gt;
&lt;br /&gt;
### File for the output&lt;br /&gt;
#SBATCH --output=OMPJOB_OUTPUT&lt;br /&gt;
&lt;br /&gt;
### Time your job needs to execute, e. g. 30 min&lt;br /&gt;
#SBATCH --time=00:30:00&lt;br /&gt;
&lt;br /&gt;
### Memory your job needs per node, e. g. 500 MB&lt;br /&gt;
#SBATCH --mem=500M&lt;br /&gt;
&lt;br /&gt;
### Use one node for parallel jobs on shared-memory systems&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
&lt;br /&gt;
### Number of threads to use, e. g. 24&lt;br /&gt;
#SBATCH --cpus-per-task=24&lt;br /&gt;
&lt;br /&gt;
### Number of hyperthreads per core&lt;br /&gt;
#SBATCH --ntasks-per-core=1&lt;br /&gt;
&lt;br /&gt;
### Tasks per node (for shared-memory parallelisation, use 1)&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
&lt;br /&gt;
### The last part consists of regular shell commands:&lt;br /&gt;
### Set the number of threads in your cluster environment to the value specified above&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
&lt;br /&gt;
### Change to working directory&lt;br /&gt;
cd /home/usr/workingdirectory&lt;br /&gt;
&lt;br /&gt;
### Run your parallel application&lt;br /&gt;
srun myapp.exe&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This MPI job will start the [[Parallel_Programming|parallel program]] &amp;quot;myapp.exe&amp;quot; with 12 processes.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
### Job name&lt;br /&gt;
#SBATCH --job-name=MPIJOB&lt;br /&gt;
&lt;br /&gt;
### File for the output&lt;br /&gt;
#SBATCH --output=MPIJOB_OUTPUT&lt;br /&gt;
&lt;br /&gt;
### Time your job needs to execute, e. g. 50 min&lt;br /&gt;
#SBATCH --time=00:50:00&lt;br /&gt;
&lt;br /&gt;
### Memory your job needs per node, e. g. 250 MB&lt;br /&gt;
#SBATCH --mem=250M&lt;br /&gt;
&lt;br /&gt;
### Use more than one node for parallel jobs on distributed-memory systems, e. g. 2&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
&lt;br /&gt;
### Number of CPUS per task (for distributed-memory parallelisation, use 1)&lt;br /&gt;
#SBATCH --cpus-per-task=1&lt;br /&gt;
&lt;br /&gt;
### Disable hyperthreading by setting the tasks per core to 1&lt;br /&gt;
#SBATCH --ntasks-per-core=1&lt;br /&gt;
&lt;br /&gt;
### Number of processes per node, e. g. 6 (6 processes on 2 nodes = 12 processes in total)&lt;br /&gt;
#SBATCH --ntasks-per-node=6&lt;br /&gt;
&lt;br /&gt;
### The last part consists of regular shell commands:&lt;br /&gt;
### Set the number of threads in your cluster environment to 1, as specified above&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
&lt;br /&gt;
### Change to working directory&lt;br /&gt;
cd /home/usr/workingdirectory&lt;br /&gt;
&lt;br /&gt;
### Run your parallel application&lt;br /&gt;
srun myapp.exe&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Site specific notes ==&lt;br /&gt;
&lt;br /&gt;
=== RRZE ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;--output=&amp;lt;/code&amp;gt; &amp;#039;&amp;#039;should not&amp;#039;&amp;#039; be used on RRZE&amp;#039;s clusters; the submit filter already sets suitable defaults automatically&lt;br /&gt;
* &amp;lt;code&amp;gt;--mem=&amp;lt;memlimit&amp;gt;&amp;lt;/code&amp;gt; &amp;#039;&amp;#039;&amp;#039;must not&amp;#039;&amp;#039;&amp;#039; be used on RRZE&amp;#039;s clusters&lt;br /&gt;
* the first line of the job script &amp;#039;&amp;#039;should be&amp;#039;&amp;#039; &amp;lt;code&amp;gt;#/bin/bash -l&amp;lt;/code&amp;gt; otherwise &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; commands won&amp;#039;t work in te job script&lt;br /&gt;
* to have a clean environment in job scripts, it is recommended to add &amp;lt;code&amp;gt;#SBATCH --export=NONE&amp;lt;/code&amp;gt; &amp;#039;&amp;#039;&amp;#039;and&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;unset SLURM_EXPORT_ENV&amp;lt;/code&amp;gt; to the job script. Otherwise, the job will inherit some settings from the submitting shell.&lt;br /&gt;
* access to the parallel file system has to be specified by &amp;lt;code&amp;gt;#SBATCH ---constraint=parfs&amp;lt;/code&amp;gt; or the command line shortcut &amp;lt;code&amp;gt;-C parfs&amp;lt;/code&amp;gt;&lt;br /&gt;
* access to hardware performance counters (e.g. to be able to use &amp;lt;code&amp;gt;likwid-perfctr&amp;lt;/code&amp;gt;) has to be requested by &amp;lt;code&amp;gt;#SBATCH ---constraint=hwperf&amp;lt;/code&amp;gt; or the command line shortcut &amp;lt;code&amp;gt;-C hwperf&amp;lt;/code&amp;gt;. Only request that feature if you really want to access the ardware performance counters as the feature interferes with the automatic system monitoring.&lt;br /&gt;
* multiple features have to be requested in a single &amp;lt;code&amp;gt;--constraint=&amp;lt;/code&amp;gt; statement, listing all required features separated by ampersand, e.g. &amp;lt;code&amp;gt;hwperf&amp;amp;parfs&amp;lt;/code&amp;gt;&lt;br /&gt;
* for Intel MPI, RRZE recommends the usage of &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt;; if &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; shall be used, the additional command line argument &amp;lt;code&amp;gt;--mpi=pmi2&amp;lt;/code&amp;gt; is required. The command line option &amp;lt;code&amp;gt;-ppn&amp;lt;/code&amp;gt; of &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; only works if you &amp;lt;code&amp;gt;export I_MPI_JOB_RESPECT_PROCESS_PLACEMENT=off&amp;lt;/code&amp;gt; before.&lt;br /&gt;
* for &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt; the option &amp;lt;code&amp;gt;-u user&amp;lt;/code&amp;gt; does not have any effect as you always only see your own jobs&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[https://www.lrz.de/services/compute/linux-cluster/batch_parallel/example_jobs/ Advanced SLURM jobscript examples]&lt;br /&gt;
&lt;br /&gt;
[http://www.nersc.gov/users/computational-systems/cori/running-jobs/example-batch-scripts/ Detailled guide to more advanced scripts]&lt;br /&gt;
&lt;br /&gt;
[https://slurm.schedmd.com/sbatch.html SBATCH documentation]&lt;br /&gt;
&lt;br /&gt;
[https://user.cscs.ch/getting_started/running_jobs/jobscript_generator/#slurm-jobscript-generator SLURM jobscript generator]&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=SLURM&amp;diff=999</id>
		<title>SLURM</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=SLURM&amp;diff=999"/>
		<updated>2018-04-23T08:44:46Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
SLURM is a workload manager / job [[scheduler]]. To get an overview of the functionality of a scheduler, go [[Scheduler#General|here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== #SBATCH Usage ==&lt;br /&gt;
&lt;br /&gt;
If you are writing a [[jobscript]] for a SLURM batch system, the magic cookie is &amp;quot;#SBATCH&amp;quot;. To use it, start a new line in your script with &amp;quot;#SBATCH&amp;quot;. Following that, you can put one of the parameters shown below, where the word written in &amp;lt;...&amp;gt; should be replaced with a value.&lt;br /&gt;
&lt;br /&gt;
Basic settings:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 40%;&amp;quot;&lt;br /&gt;
| Parameter || Function&lt;br /&gt;
|-&lt;br /&gt;
| --job-name=&amp;lt;name&amp;gt; || job name&lt;br /&gt;
|-&lt;br /&gt;
| --output=&amp;lt;path&amp;gt; || path to the file where the job (error) output is written to&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Requesting resources:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&lt;br /&gt;
| Parameter || Function&lt;br /&gt;
|-&lt;br /&gt;
| --time=&amp;lt;runlimit&amp;gt; || runtime limit in the format hours:min:sec; once the time specified is up, the job will be killed by the [[scheduler]]&lt;br /&gt;
|-&lt;br /&gt;
| --mem=&amp;lt;memlimit&amp;gt; || job memory request per node, usually an integer followed by a prefix for the unit (e. g. --mem=1G for 1 GB)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Parallel programming (read more [[Parallel_Programming|here]]):&lt;br /&gt;
&lt;br /&gt;
Settings for OpenMP:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&lt;br /&gt;
| Parameter || Function&lt;br /&gt;
|-&lt;br /&gt;
| --nodes=1 || start a parallel job for a shared-memory system on only one node&lt;br /&gt;
|-&lt;br /&gt;
| --cpus-per-task=&amp;lt;num_threads&amp;gt; || number of threads to execute OpenMP application with&lt;br /&gt;
|-&lt;br /&gt;
| --ntasks-per-core=&amp;lt;num_hyperthreads&amp;gt; || number of hyperthreads per core; i. e. any value greater than 1 will turn on hyperthreading (the possible maximum depends on your CPU)&lt;br /&gt;
|-&lt;br /&gt;
| --ntasks-per-node=1 || for OpenMP, use one task per node only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Settings for MPI:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&lt;br /&gt;
| Parameter || Function&lt;br /&gt;
|-&lt;br /&gt;
| --nodes=&amp;lt;num_nodes&amp;gt; || start a parallel job for a distributed-memory system on several nodes&lt;br /&gt;
|-&lt;br /&gt;
| --cpus-per-task=1 || for MPI, use one task per CPU&lt;br /&gt;
|-&lt;br /&gt;
| --ntasks-per-core=1 || disable hyperthreading&lt;br /&gt;
|-&lt;br /&gt;
| --ntasks-per-node=&amp;lt;num_procs&amp;gt; || number of processes per node (the possible maximum depends on your nodes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Email notifications:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&lt;br /&gt;
| Parameter || Function&lt;br /&gt;
|-&lt;br /&gt;
| --mail-type=&amp;lt;type&amp;gt; || type can be one of BEGIN, END, FAIL, REQUEUE or ALL (where a mail will be sent each time the status of your process changes)&lt;br /&gt;
|-&lt;br /&gt;
| --mail-user=&amp;lt;email_address&amp;gt; || email address to send notifications to&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Job Submission ==&lt;br /&gt;
&lt;br /&gt;
This command submits the job you defined in your [[Jobscript|jobscript]] to the batch system:&lt;br /&gt;
&lt;br /&gt;
 $ sbatch jobscript.sh&lt;br /&gt;
&lt;br /&gt;
Just like any other incoming job, your job will first be queued. Then, the scheduler decides when your job will be run. The more resources your job requires, the longer it may be waiting to execute.&lt;br /&gt;
&lt;br /&gt;
You can check the current status of your submitted jobs and their job ids with the following shell command. A job can either be pending &amp;lt;code&amp;gt;PD&amp;lt;/code&amp;gt; (waiting for free nodes to run on) or running &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; (the jobscript is currently being executed). This command will also print the time (hours:min:sec) that your job has been running for.&lt;br /&gt;
&lt;br /&gt;
 $ squeue -u &amp;lt;user_id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case you submitted a job on accident or realised that your job might not be running correctly, you can always remove it from the queue or terminate it when running by typing:&lt;br /&gt;
&lt;br /&gt;
 $ scancel &amp;lt;job_id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Jobscript Examples ==&lt;br /&gt;
&lt;br /&gt;
This serial job will run a given executable, in this case &amp;quot;myapp.exe&amp;quot;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
### Job name&lt;br /&gt;
#SBATCH --job-name=MYJOB&lt;br /&gt;
&lt;br /&gt;
### File for the output&lt;br /&gt;
#SBATCH --output=MYJOB_OUTPUT&lt;br /&gt;
&lt;br /&gt;
### Time your job needs to execute, e. g. 15 min 30 sec&lt;br /&gt;
#SBATCH --time=00:15:30&lt;br /&gt;
&lt;br /&gt;
### Memory your job needs per node, e. g. 1 GB&lt;br /&gt;
#SBATCH --mem=1G&lt;br /&gt;
&lt;br /&gt;
### The last part consists of regular shell commands:&lt;br /&gt;
### Change to working directory&lt;br /&gt;
cd /home/usr/workingdirectory&lt;br /&gt;
&lt;br /&gt;
### Execute your application&lt;br /&gt;
myapp.exe&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you&amp;#039;d like to run a parallel job on a cluster that is managed by SLURM, you have to clarify that. Therefore, use the command &amp;quot;srun &amp;lt;my_executable&amp;gt;&amp;quot; in your jobscript.&lt;br /&gt;
&lt;br /&gt;
This OpenMP job will start the [[Parallel_Programming|parallel program]] &amp;quot;myapp.exe&amp;quot; with 24 threads.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
### Job name&lt;br /&gt;
#SBATCH --job-name=OMPJOB&lt;br /&gt;
&lt;br /&gt;
### File for the output&lt;br /&gt;
#SBATCH --output=OMPJOB_OUTPUT&lt;br /&gt;
&lt;br /&gt;
### Time your job needs to execute, e. g. 30 min&lt;br /&gt;
#SBATCH --time=00:30:00&lt;br /&gt;
&lt;br /&gt;
### Memory your job needs per node, e. g. 500 MB&lt;br /&gt;
#SBATCH --mem=500M&lt;br /&gt;
&lt;br /&gt;
### Use one node for parallel jobs on shared-memory systems&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
&lt;br /&gt;
### Number of threads to use, e. g. 24&lt;br /&gt;
#SBATCH --cpus-per-task=24&lt;br /&gt;
&lt;br /&gt;
### Number of hyperthreads per core&lt;br /&gt;
#SBATCH --ntasks-per-core=1&lt;br /&gt;
&lt;br /&gt;
### Tasks per node (for shared-memory parallelisation, use 1)&lt;br /&gt;
#SBATCH --ntasks-per-node=1&lt;br /&gt;
&lt;br /&gt;
### The last part consists of regular shell commands:&lt;br /&gt;
### Set the number of threads in your cluster environment to the value specified above&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
&lt;br /&gt;
### Change to working directory&lt;br /&gt;
cd /home/usr/workingdirectory&lt;br /&gt;
&lt;br /&gt;
### Run your parallel application&lt;br /&gt;
srun myapp.exe&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This MPI job will start the [[Parallel_Programming|parallel program]] &amp;quot;myapp.exe&amp;quot; with 12 processes.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
### Job name&lt;br /&gt;
#SBATCH --job-name=MPIJOB&lt;br /&gt;
&lt;br /&gt;
### File for the output&lt;br /&gt;
#SBATCH --output=MPIJOB_OUTPUT&lt;br /&gt;
&lt;br /&gt;
### Time your job needs to execute, e. g. 50 min&lt;br /&gt;
#SBATCH --time=00:50:00&lt;br /&gt;
&lt;br /&gt;
### Memory your job needs per node, e. g. 250 MB&lt;br /&gt;
#SBATCH --mem=250M&lt;br /&gt;
&lt;br /&gt;
### Use more than one node for parallel jobs on distributed-memory systems, e. g. 2&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
&lt;br /&gt;
### Number of CPUS per task (for distributed-memory parallelisation, use 1)&lt;br /&gt;
#SBATCH --cpus-per-task=1&lt;br /&gt;
&lt;br /&gt;
### Disable hyperthreading by setting the tasks per core to 1&lt;br /&gt;
#SBATCH --ntasks-per-core=1&lt;br /&gt;
&lt;br /&gt;
### Number of processes per node, e. g. 6 (6 processes on 2 nodes = 12 processes in total)&lt;br /&gt;
#SBATCH --ntasks-per-node=6&lt;br /&gt;
&lt;br /&gt;
### The last part consists of regular shell commands:&lt;br /&gt;
### Set the number of threads in your cluster environment to 1, as specified above&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
&lt;br /&gt;
### Change to working directory&lt;br /&gt;
cd /home/usr/workingdirectory&lt;br /&gt;
&lt;br /&gt;
### Run your parallel application&lt;br /&gt;
srun myapp.exe&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Site specific notes ==&lt;br /&gt;
&lt;br /&gt;
=== RRZE ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;--output=&amp;lt;/code&amp;gt; &amp;#039;&amp;#039;should not&amp;#039;&amp;#039; be used on RRZE&amp;#039;s clusters; the submit filter already sets suitable defaults automatically&lt;br /&gt;
* &amp;lt;code&amp;gt;--mem=&amp;lt;memlimit&amp;gt;&amp;lt;/code&amp;gt; &amp;#039;&amp;#039;&amp;#039;must not&amp;#039;&amp;#039;&amp;#039; be used on RRZE&amp;#039;s clusters&lt;br /&gt;
* the first line of the job script &amp;#039;&amp;#039;should be&amp;#039;&amp;#039; &amp;lt;code&amp;gt;#/bin/bash -l&amp;lt;/code&amp;gt; otherwise &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; commands won&amp;#039;t work in te job script&lt;br /&gt;
* to have a clean environment in job scripts, it is recommended to add &amp;lt;code&amp;gt;#SBATCH --export=NONE&amp;lt;/code&amp;gt; &amp;#039;&amp;#039;&amp;#039;and&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;unset SLURM_EXPORT_ENV&amp;lt;/code&amp;gt; to the job script. Otherwise, the job will inherit some settings from the submitting shell.&lt;br /&gt;
* access to the parallel file system has to be specified by &amp;lt;code&amp;gt;#SBATCH ---constraint=parfs&amp;lt;/code&amp;gt; or the command line shortcut &amp;lt;code&amp;gt;-C parfs&amp;lt;/code&amp;gt;&lt;br /&gt;
* access to hardware performance counters (e.g. to be able to use &amp;lt;code&amp;gt;likwid-perfctr&amp;lt;/code&amp;gt;) has to be requested by &amp;lt;code&amp;gt;#SBATCH ---constraint=hwperf&amp;lt;/code&amp;gt; or the command line shortcut &amp;lt;code&amp;gt;-C hwperf&amp;lt;/code&amp;gt;. Only request that feature if you really want to access the ardware performance counters as the feature interferes with the automatic system monitoring.&lt;br /&gt;
* multiple features have to be requested in a single &amp;lt;code&amp;gt;--constraint=&amp;lt;/code&amp;gt; statement, listing all required features separated by ampersand, e.g. &amp;lt;code&amp;gt;hwperf&amp;amp;parfs&amp;lt;/code&amp;gt;&lt;br /&gt;
* for Intel MPI, RRZE recommends the usage of &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt;; if &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; shall be used, the additional command line argument &amp;lt;code&amp;gt;--mpi=pmi2&amp;lt;/code&amp;gt; is required. The command line option &amp;lt;code&amp;gt;-ppn&amp;lt;/code&amp;gt; of &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; only works if you &amp;lt;code&amp;gt;export I_MPI_JOB_RESPECT_PROCESS_PLACEMENT=off&amp;lt;/code&amp;gt; before.&lt;br /&gt;
* for &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt; the option &amp;lt;code&amp;gt;-u user&amp;lt;/code&amp;gt; does not have any effect as you always only see your own jobs&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[https://www.lrz.de/services/compute/linux-cluster/batch_parallel/example_jobs/ Advanced SLURM jobscript examples]&lt;br /&gt;
&lt;br /&gt;
[http://www.nersc.gov/users/computational-systems/cori/running-jobs/example-batch-scripts/ Detailled guide to more advanced scripts]&lt;br /&gt;
&lt;br /&gt;
[https://slurm.schedmd.com/sbatch.html SBATCH documentation]&lt;br /&gt;
&lt;br /&gt;
[https://user.cscs.ch/getting_started/running_jobs/jobscript_generator/#slurm-jobscript-generator SLURM jobscript generator]&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=HPC_Wiki&amp;diff=953</id>
		<title>HPC Wiki</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=HPC_Wiki&amp;diff=953"/>
		<updated>2018-04-18T07:43:39Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to HPC Wiki of the ProPE Project.&lt;br /&gt;
&lt;br /&gt;
This website is currently work-in-progress and aims to provide a site independant HPC documentation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rubriken ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Getting_Started]] is a basic guide for first-time users. It covers a wide range of topics from access and login to system-independant concepts of Unix systems to data transfers.&lt;br /&gt;
&lt;br /&gt;
[[FAQs]]&lt;br /&gt;
&lt;br /&gt;
== Todo ==&lt;br /&gt;
Create pages with help of the [[Sample_Page|Sample Page]]&lt;br /&gt;
&lt;br /&gt;
Miriam startet die Toolbox (basics docu, Tips &amp;amp; Tricks):&lt;br /&gt;
&lt;br /&gt;
[[make]], [[cmake]], [[Ssh_keys]], [[compiler]], [[software-tools]], [[Modules]], [[vi/vim]],  [[screen/tmux]], [[ssh]] [[python/pip]], [[scp]], [[rsync]], [[git]], [[ps]], [[unix-primer]], [[shell]], [[chmod]], [[umask]], [[tar]], [[sh-file]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jan macht [[make]] &amp;amp; [[Likwid]]&lt;br /&gt;
&lt;br /&gt;
Robert macht [[Vampir]], [[ScoreP]]&lt;br /&gt;
&lt;br /&gt;
Joachim mach eventuell [[Must]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HPC-Pages:&lt;br /&gt;
[[PE-Process]], [[correctness checking]], [[Software]], [[Access]], [[Site-specific_documentation]], [[measurement-tools]], [[likwid]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Struktur:&lt;br /&gt;
&lt;br /&gt;
Hirachisch, Prozess/Workflowbasiert, tagging der Seiten fuer Suche, Nutzerdifferenzierung auf der Startseite&lt;br /&gt;
&lt;br /&gt;
General Info: get a DB behind this to feed the Wiki? Cooperation with PeCoH?&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=HPC_Wiki&amp;diff=952</id>
		<title>HPC Wiki</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=HPC_Wiki&amp;diff=952"/>
		<updated>2018-04-18T07:42:04Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to HPC Wiki of the ProPE Project.&lt;br /&gt;
&lt;br /&gt;
This website is currently work-in-progress and aims to provide a site independant HPC documentation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rubriken ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Getting_Started]] is a basic guide for first-time users. It covers a wide range of topics from access and login to system-independant concepts of Unix systems to data transfers.&lt;br /&gt;
&lt;br /&gt;
[[FAQs]]&lt;br /&gt;
&lt;br /&gt;
== Todo ==&lt;br /&gt;
Create pages with help of the [[Sample_Page|Sample Page]]&lt;br /&gt;
&lt;br /&gt;
Miriam startet die Toolbox (basics docu, Tips &amp;amp; Tricks):&lt;br /&gt;
&lt;br /&gt;
[[make]], [[cmake]], [[keys]], [[compiler]], [[software-tools]], [[Modules]], [[vi/vim]],  [[screen/tmux]], [[ssh]] [[python/pip]], [[scp]], [[rsync]], [[git]], [[ps]], [[unix-primer]], [[shell]], [[chmod]], [[umask]], [[tar]], [[sh-file]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jan macht [[make]] &amp;amp; [[Likwid]]&lt;br /&gt;
&lt;br /&gt;
Robert macht [[Vampir]], [[ScoreP]]&lt;br /&gt;
&lt;br /&gt;
Joachim mach eventuell [[Must]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HPC-Pages:&lt;br /&gt;
[[PE-Process]], [[correctness checking]], [[Software]], [[Access]], [[Site-specific_documentation]], [[measurement-tools]], [[likwid]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Struktur:&lt;br /&gt;
&lt;br /&gt;
Hirachisch, Prozess/Workflowbasiert, tagging der Seiten fuer Suche, Nutzerdifferenzierung auf der Startseite&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=MediaWiki:Sidebar&amp;diff=922</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=MediaWiki:Sidebar&amp;diff=922"/>
		<updated>2018-04-17T11:54:16Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
* SEARCH&lt;br /&gt;
&lt;br /&gt;
* Basics&lt;br /&gt;
** Getting_Started|Getting Started&lt;br /&gt;
** Shell|Shell&lt;br /&gt;
** ssh|ssh&lt;br /&gt;
** File_Transfer|File Transfer&lt;br /&gt;
** Modules|Modules&lt;br /&gt;
** Scheduler|Scheduler&lt;br /&gt;
** HPC-Dictionary|HPC-Dictionary&lt;br /&gt;
** How-to-Google|How to Google&lt;br /&gt;
&lt;br /&gt;
* General Info&lt;br /&gt;
** Access|Access&lt;br /&gt;
** Nodes|Nodes&lt;br /&gt;
** Schedulers|Schedulers&lt;br /&gt;
** Site-specific documentation|Site-specific docu&lt;br /&gt;
** Support|Support&lt;br /&gt;
** Software|Software&lt;br /&gt;
&lt;br /&gt;
* HPC-User&lt;br /&gt;
** Compiler|Compiler&lt;br /&gt;
** Parallel_Programming|Parallelization&lt;br /&gt;
** How_to_Use_OpenMP|OpenMP Usage&lt;br /&gt;
** How_to_Use_MPI|MPI Usage&lt;br /&gt;
** ssh_keys|ssh Keys&lt;br /&gt;
&lt;br /&gt;
* HPC-Dev&lt;br /&gt;
** Performance_Engineering|Performance_Engineering&lt;br /&gt;
** OpenMP|OpenMP&lt;br /&gt;
** MPI|MPI&lt;br /&gt;
&lt;br /&gt;
* HPC-Admin&lt;br /&gt;
** Setting_up_Monitoring|Setting_up_LMS&lt;br /&gt;
&lt;br /&gt;
* Optimization_tips&lt;br /&gt;
** Load_Balancing|Load Balancing&lt;br /&gt;
** Binding/Pinning|Binding/Pinning&lt;br /&gt;
&lt;br /&gt;
* FAQs&lt;br /&gt;
** How-to-Google|How-to-Google&lt;br /&gt;
** Shell|Unix&lt;br /&gt;
** Wiki|Wiki&lt;br /&gt;
** Sample_Page|Sample_Page&lt;br /&gt;
&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Vim&amp;diff=912</id>
		<title>Vim</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Vim&amp;diff=912"/>
		<updated>2018-04-16T14:47:53Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
Vi or Vim (VI IMproved) is a visual text editor that can be run inside a [[shell]]. This has the advantage, that you can quickly write or edit text files in the [[shell]], even over an [[ssh]] connection without needing a graphical user interface. Alternatively there is the option to edit files locally (on your desktop computer) in your favourite editor or IDE (e.g. Notepad++, VSCode, ...) and then transfer the files to the remote (super)computer. Visit the [[File_Transfer|file transfer]] page for more information on that topic. As these tansfers can be a lot of effort, just to fix a missing &amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt; or typo, Vi/Vim can come in handy, as they are available on practically every Unix system.&lt;br /&gt;
&lt;br /&gt;
While it&amp;#039;s usage is far from intuitive, a few basics are generally helpful. For a more complete coverage of this editor, why people use it and why you should probably do that too, please take a look at the [[#Absolute_Basics|&amp;lt;code&amp;gt;vimtutor&amp;lt;/code&amp;gt;]], the [[#References|References]] or the internet in general. There are lots of great resources, presenting reasons for using Vi/Vim and giving detailed instructions for its effective usage.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
&lt;br /&gt;
In Vi/Vim there are six modes from which the four most important ones are listed below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Mode Name !! Description !! How to Reach the Mode from Normal&lt;br /&gt;
|-&lt;br /&gt;
|normal || For navigation and manipulation of text. This is the mode that vim will usually start in, which you can usually get back to with pressing &amp;lt;code&amp;gt;ESC&amp;lt;/code&amp;gt;. || you are already there or &amp;lt;code&amp;gt;ESC&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|insert || For inserting new text. Insert mode works more or less like you would expect a normal text editor to work with arrow keys for navigation, backspace for deletion and characters for text. || &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|visual || For navigation and manipulation of text selections, this mode allows you to perform most normal commands, and a few extra commands, on selected text. || &amp;lt;code&amp;gt;v&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|command-line || For entering editor commands. || &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
More information about different modes and their uses can be found in the [[#References|References]] or the internet.&lt;br /&gt;
&lt;br /&gt;
== Absolute Basics ==&lt;br /&gt;
To open yourfile.txt in Vi/Vim simply enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ vim yourfile.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From normal mode (press &amp;lt;code&amp;gt;Esc&amp;lt;/code&amp;gt; to get there) you can type&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 40%;&amp;quot;&lt;br /&gt;
| &amp;lt;code&amp;gt;:q&amp;lt;/code&amp;gt; || to quit Vi/Vim&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;:w&amp;lt;/code&amp;gt; || to save the current file&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;:q!&amp;lt;/code&amp;gt; || to quit Vi/Vim without saving (discarding changes)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;:x&amp;lt;/code&amp;gt; || to quit Vi/Vim with saving changes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For a tutorial you can call the&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ vimtutor&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and follow the instructions on screen.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[http://www.openvim.com/ Interactive Vim Tutorial]&lt;br /&gt;
&lt;br /&gt;
[https://wiki.gentoo.org/wiki/Vim/Guide Vim/Guide in the Gentoo wiki]&lt;br /&gt;
&lt;br /&gt;
[http://www.viemu.com/a-why-vi-vim.html Why should you use vi (or vim)]&lt;br /&gt;
&lt;br /&gt;
[https://vim-adventures.com/ Vim Game]&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=MediaWiki:Sidebar&amp;diff=849</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=MediaWiki:Sidebar&amp;diff=849"/>
		<updated>2018-04-13T13:44:12Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
* SEARCH&lt;br /&gt;
&lt;br /&gt;
* Basics&lt;br /&gt;
** Getting_Started|Getting Started&lt;br /&gt;
** Shell|Shell&lt;br /&gt;
** ssh|ssh&lt;br /&gt;
** File_Transfer|File Transfer&lt;br /&gt;
** Modules|Modules&lt;br /&gt;
** Scheduler|Scheduler&lt;br /&gt;
** HPC-Dictionary|HPC-Dictionary&lt;br /&gt;
&lt;br /&gt;
* General Info&lt;br /&gt;
** Access|Access&lt;br /&gt;
** Nodes|Nodes&lt;br /&gt;
** Schedulers|Schedulers&lt;br /&gt;
** Site-specific documentation|Site-specific docu&lt;br /&gt;
** Support|Support&lt;br /&gt;
** Software|Software&lt;br /&gt;
&lt;br /&gt;
* HPC-User&lt;br /&gt;
** Compiler|Compiler&lt;br /&gt;
** Parallel_Programming|Parallelization&lt;br /&gt;
** How_to_Use_OpenMP|OpenMP Usage&lt;br /&gt;
** How_to_Use_MPI|MPI Usage&lt;br /&gt;
** ssh_keys|ssh Keys&lt;br /&gt;
&lt;br /&gt;
* HPC-Dev&lt;br /&gt;
** Performance_Engineering|Performance_Engineering&lt;br /&gt;
** OpenMP|OpenMP&lt;br /&gt;
** MPI|MPI&lt;br /&gt;
&lt;br /&gt;
* HPC-Admin&lt;br /&gt;
** Setting_up_Monitoring|Setting_up_LMS&lt;br /&gt;
&lt;br /&gt;
* Optimization_tips&lt;br /&gt;
** Load_Balancing|Load Balancing&lt;br /&gt;
** Binding/Pinning|Binding/Pinning&lt;br /&gt;
&lt;br /&gt;
* FAQs&lt;br /&gt;
** How-to-Google|How-to-Google&lt;br /&gt;
** Shell|Unix&lt;br /&gt;
** Wiki|Wiki&lt;br /&gt;
** Sample_Page|Sample_Page&lt;br /&gt;
&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Nodes&amp;diff=774</id>
		<title>Nodes</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Nodes&amp;diff=774"/>
		<updated>2018-04-12T08:29:26Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: Use newer RWTH login node&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If one of these nodes are outdated please read the local documentation and migrate eventual changes to this page.&lt;br /&gt;
&lt;br /&gt;
== Log-In ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 40%;&amp;quot;&lt;br /&gt;
| IT Center - RWTH Aachen [https://doc.itc.rwth-aachen.de/display/CC/Hardware+of+the+RWTH+Compute+Cluster Hardware][https://doc.itc.rwth-aachen.de/display/CC/SSH+Fingerprints+of+the+Dialog+Systems Fingerprints] || login.hpc.itc.rwth-aachen.de&lt;br /&gt;
|-&lt;br /&gt;
| RRZE - FAU Erlangen [https://www.anleitungen.rrze.fau.de/hpc/dialogserver/ Dialogserver][https://www.anleitungen.rrze.fau.de/hpc/ HPC] || cshpc.rrze.fau.de (externally reachable gateway);&lt;br /&gt;
from there or from within the University, the cluster-specific login nodes can be reached, e.g. &lt;br /&gt;
* woody.rrze.uni-erlangen.de (used for Woody and Tiny*)&lt;br /&gt;
* lima.rrze.uni-erlangen.de&lt;br /&gt;
* emmy.rrze.uni-erlangen.de&lt;br /&gt;
* meggie.rrze.uni-erlangen.de&lt;br /&gt;
|-&lt;br /&gt;
| ZIH - TU Dresden || taurus.hrsk.tu-dresden.de&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Copy_Nodes ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 40%;&amp;quot;&lt;br /&gt;
| RWTH Aachen [https://doc.itc.rwth-aachen.de/display/CC/Remote+file+transfers File_transfer] || cluster-copy.rz.rwth-aachen.de || cluster-copy2.rz.rwth-aachen.de&lt;br /&gt;
|-&lt;br /&gt;
| RRZE - FAU Erlangen || no dedicated copy nodes; use the normal login nodes&lt;br /&gt;
|-&lt;br /&gt;
| ZIH - TU Dresden [https://doc.zih.tu-dresden.de/hpc-wiki/bin/view/Compendium/ExportNodes ExportNodes] || taurusexport.hrsk.tu-dresden.de&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=HPC_Wiki&amp;diff=669</id>
		<title>HPC Wiki</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=HPC_Wiki&amp;diff=669"/>
		<updated>2018-04-06T14:14:41Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: Undo revision 668 by Ds019135 (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to HPC Wiki of the ProPE Project.&lt;br /&gt;
&lt;br /&gt;
This is currently work-in-progress of a site independant HPC documentation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rubriken ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Getting_Started]] is a basic guide for first-time users. It covers a wide range from access and login, over system-independant concepts of unix systems, and data transfers.&lt;br /&gt;
&lt;br /&gt;
[[FAQs]]&lt;br /&gt;
&lt;br /&gt;
== Todo ==&lt;br /&gt;
Create pages with help of the [[Sample_Page|Sample Page]]&lt;br /&gt;
&lt;br /&gt;
Miriam startet die Toolbox (basics docu, Tips &amp;amp; Tricks):&lt;br /&gt;
&lt;br /&gt;
[[make]], [[cmake]], [[keys]], [[compiler]], [[software-tools]], [[Modules]], [[vi/vim]],  [[screen/tmux]], [[ssh]] [[python/pip]], [[scp]], [[rsync]], [[git]], [[ps]], [[unix-primer]], [[shell]], [[chmod]], [[umask]], [[tar]], [[sh-file]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jan macht [[make]] &amp;amp; [[Likwid]]&lt;br /&gt;
&lt;br /&gt;
Robert macht [[Vampir]], [[ScoreP]]&lt;br /&gt;
&lt;br /&gt;
Joachim mach eventuell [[Must]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HPC-Pages:&lt;br /&gt;
[[PE-Process]], [[Hardware]], [[correctness checking]], [[software]], [[Beantragung]], [[Site-uebersicht (tabellarisch)]], [[measurement-tools]], [[likwid]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Struktur:&lt;br /&gt;
&lt;br /&gt;
Hirachisch, Prozess/Workflowbasiert, tagging der Seiten fuer Suche, Nutzerdifferenzierung auf der Startseite&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=HPC_Wiki&amp;diff=668</id>
		<title>HPC Wiki</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=HPC_Wiki&amp;diff=668"/>
		<updated>2018-04-06T14:11:46Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: Reverted edits by Ds019135 (talk) to last revision by 134.130.1.109&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to HPC Wiki of the ProPE Project.&lt;br /&gt;
&lt;br /&gt;
This is currently work-in-progress of a site independant HPC documentation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rubriken ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Basics]] is a basic overview about system-independant concepts of unix systems, login and data transfers.&lt;br /&gt;
&lt;br /&gt;
[[Software]] documents the available Software and it&amp;#039;s usage&lt;br /&gt;
&lt;br /&gt;
[[Hardware]] documents the available Hardware and it&amp;#039;s usage&lt;br /&gt;
&lt;br /&gt;
[[Optimization Tipps]] &lt;br /&gt;
&lt;br /&gt;
[[FAQs]]&lt;br /&gt;
&lt;br /&gt;
== Todo ==&lt;br /&gt;
Create pages with help of the [[Sample_Page|Sample Page]]&lt;br /&gt;
&lt;br /&gt;
Miriam startet die Toolbox (basics docu, Tips &amp;amp; Tricks):&lt;br /&gt;
&lt;br /&gt;
[[make]], [[cmake]], [[putty]], [[keys]], [[compiler]], [[software-tools]], [[module-system]], [[vi/vim]], [[find/grep]], [[screen/tmux]], [[ssh(mosh) x]], [[python/pip]], [[scp/rsync]], [[git]], [[top]], [[du]], [[ps]], [[ctrl+c]], [[unix-primer]], [[bash/zsh]], [[chmod, umask]], [[navigation_cd, ls, mkdir rm, cp, mv]], [[tar]], [[sh]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jan macht [[make]] &amp;amp; [[Likwid]]&lt;br /&gt;
&lt;br /&gt;
Robert macht [[Vampir]], [[ScoreP]]&lt;br /&gt;
&lt;br /&gt;
Joachim mach eventuell [[Must]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HPC-Pages:&lt;br /&gt;
[[PE-Process]], [[Hardware]], [[correctness checking]], [[software]], [[Beantragung]], [[Site-uebersicht (tabellarisch)]], [[measurement-tools]], [[likwid]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Struktur:&lt;br /&gt;
&lt;br /&gt;
Hirachisch, Prozess/Workflowbasiert, tagging der Seiten fuer Suche, Nutzerdifferenzierung auf der Startseite&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=How_to_Use_OpenMP&amp;diff=663</id>
		<title>How to Use OpenMP</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=How_to_Use_OpenMP&amp;diff=663"/>
		<updated>2018-04-06T08:21:22Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
&lt;br /&gt;
This will give you a general overview of how to compile and execute a program that has been [[Parallel_Programming|parallelized]] with [[OpenMP]].&lt;br /&gt;
As opposed to [[How_to_Use_MPI|MPI]], you do not have to load any modules to use OpenMP.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to Compile OpenMP Code ==&lt;br /&gt;
&lt;br /&gt;
Additional compiler flags tell the compiler to enable OpenMP. Otherwise, the OpenMP pragmas in the code will be ignored by the compiler.&lt;br /&gt;
&lt;br /&gt;
Depending on which compiler you have loaded, use one of the flags below to compile your code.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width=60%;&amp;quot;&lt;br /&gt;
| Compiler || Flag&lt;br /&gt;
|-&lt;br /&gt;
| GNU || -fopenmp&lt;br /&gt;
|-&lt;br /&gt;
| Intel || -openmp&lt;br /&gt;
|-&lt;br /&gt;
| Oracle || -xopenmp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For example: if you plan to use an Intel compiler for your OpenMP code written in C, you have to type this to create an application called &amp;quot;omp_code.exe&amp;quot;:&lt;br /&gt;
 $ icc -openmp omp_code.c -o omp_code.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to Run an OpenMP Application ==&lt;br /&gt;
&lt;br /&gt;
=== Setting OMP_NUM_THREADS ===&lt;br /&gt;
&lt;br /&gt;
If you forget to set OMP_NUM_THREADS to any value, the default value of your cluster environment will be used. In most cases, the default is 1, so that your program is executed serially.&lt;br /&gt;
&lt;br /&gt;
One way to specify the number of threads is by passing an extra argument when running the executable file. In order to start the parallel regions of the example program above with 12 threads, you&amp;#039;d have to type:&lt;br /&gt;
 $ OMP_NUM_THREADS=12 ./omp_code.exe&lt;br /&gt;
This automatically sets the environment variable OMP_NUM_THREADS to 12, but it is reset to its default value after the execution of &amp;quot;omp_code.exe&amp;quot; finished.&lt;br /&gt;
&lt;br /&gt;
Another way to set the number of threads is by changing your environment variable. This example will increment it up to 24 threads and override the default value:&lt;br /&gt;
 $ export OMP_NUM_THREADS=24&lt;br /&gt;
If you simply run your application with &amp;lt;code&amp;gt;$ ./omp_code.exe&amp;lt;/code&amp;gt; next, this value will be used automatically.&lt;br /&gt;
&lt;br /&gt;
=== [[Binding/Pinning#How_to_Pin_Threads_in_OpenMP|Thread Pinning]] ===&lt;br /&gt;
&lt;br /&gt;
The performance of your application may be improved depending on the distribution of threads. Go [[Binding/Pinning|here]] to learn more about thread pinning in order to minimize the execution time.&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=How_to_Use_OpenMP&amp;diff=662</id>
		<title>How to Use OpenMP</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=How_to_Use_OpenMP&amp;diff=662"/>
		<updated>2018-04-06T08:20:21Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
&lt;br /&gt;
This will give you a general overview of how to compile and execute a program that has been [[Parallel_Programming|parallelized]] with [[OpenMP]].&lt;br /&gt;
As opposed to [[How_to_Use_MPI|MPI]], you do not have to load any modules to use OpenMP.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to Compile OpenMP Code ==&lt;br /&gt;
&lt;br /&gt;
Additional compiler flags tell the compiler to enable OpenMP. Otherwise, the OpenMP pragmas in the code will be ignored by the compiler.&lt;br /&gt;
&lt;br /&gt;
Depending on which compiler you have loaded, use one of the flags below to compile your code.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width=60%;&amp;quot;&lt;br /&gt;
| Compiler || Flag&lt;br /&gt;
|-&lt;br /&gt;
| GNU || -fopenmp&lt;br /&gt;
|-&lt;br /&gt;
| Intel || -openmp&lt;br /&gt;
|-&lt;br /&gt;
| Oracle || -xopenmp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For example: if you plan to use an Intel compiler for your OpenMP code written in C, you have to type this to create an application called &amp;quot;omp_code.exe&amp;quot;:&lt;br /&gt;
 $ icc -openmp omp_code.c -o omp_code.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to Run an OpenMP Application ==&lt;br /&gt;
&lt;br /&gt;
=== Setting OMP_NUM_THREADS ===&lt;br /&gt;
&lt;br /&gt;
If you forget to set OMP_NUM_THREADS to any value, the default value of your cluster environment will be used. In most cases, the default is 1, so that your program is executed serially.&lt;br /&gt;
&lt;br /&gt;
One way to specify the number of threads is by passing an extra argument when running the executable file. In order to start the parallel regions of the example program above with 12 threads, you&amp;#039;d have to type:&lt;br /&gt;
 $ OMP_NUM_THREADS=12 ./omp_code.exe&lt;br /&gt;
This automatically sets the environment variable OMP_NUM_THREADS to 12, but it is reset to its default value after the execution of &amp;quot;omp_code.exe&amp;quot; finished.&lt;br /&gt;
&lt;br /&gt;
Another way to set the number of threads is by changing your environment variable. This example will increment it up to 24 threads and override the default value:&lt;br /&gt;
 $ export OMP_NUM_THREADS=24&lt;br /&gt;
If you simply run your application with &amp;lt;code&amp;gt;$ ./omp_code.exe&amp;lt;/code&amp;gt; next, this value will be used automatically.&lt;br /&gt;
&lt;br /&gt;
=== [[Thread_Pinning|Thread Pinning]] ===&lt;br /&gt;
&lt;br /&gt;
The performance of your application may be improved depending on the distribution of threads. Go [[Binding/Pinning|here]] to learn more about thread pinning in order to minimize the execution time.&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=How_to_Use_MPI&amp;diff=661</id>
		<title>How to Use MPI</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=How_to_Use_MPI&amp;diff=661"/>
		<updated>2018-04-06T08:20:00Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
&lt;br /&gt;
This will give you a general overview of how to compile and execute a program that has been [[Parallel_Programming|parallelized]] with [[MPI]]. Many of the options listed below are the same for both Open MPI and Intel MPI, however, be care if they do differentiate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to Compile MPI Code ==&lt;br /&gt;
&lt;br /&gt;
Before continuing, please make sure that the openmpi or intelmpi module is loaded (go [[Modules|here]] to see how to load/switch modules).&lt;br /&gt;
&lt;br /&gt;
There are several so called MPI &amp;quot;compiler wrappers&amp;quot;, e.g. &amp;quot;mpicc&amp;quot;. These take care of including the correct MPI libraries for each programming language etc. for you. But they share most command line options. Depending on whether your code is written in C, C++ or Fortran, follow the instructions in one of the tables below. Make sure to replace the arguments inside &amp;lt;…&amp;gt; with specific values.&lt;br /&gt;
&lt;br /&gt;
=== Open MPI ===&lt;br /&gt;
&lt;br /&gt;
Use the following command to specify the program you would like to compile (replace &amp;lt;src_file&amp;gt; with a path to your code, e. g. ./myprog.c). &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 40%;&amp;quot;&lt;br /&gt;
| Language || Command&lt;br /&gt;
|-&lt;br /&gt;
| C || &amp;lt;code&amp;gt;$ mpicc &amp;lt;src_file&amp;gt; -o &amp;lt;name_of_executable&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| C++ || &amp;lt;code&amp;gt;$ mpicxx &amp;lt;src_file&amp;gt; -o &amp;lt;name_of_executable&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Fortran || &amp;lt;code&amp;gt;$ mpifort &amp;lt;src_file&amp;gt; -o &amp;lt;name_of_executable&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You can also type the command &amp;lt;code&amp;gt;$ mpicc [options]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;$ mpicxx [options]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;$ mpifort [options]&amp;lt;/code&amp;gt;. There are a few options that come with Open MPI, however, options are more important for running your program. The compiler options might be useful to fetch more information about the Open MPI module you&amp;#039;re using.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 40%;&amp;quot;&lt;br /&gt;
|Options || Function&lt;br /&gt;
|-&lt;br /&gt;
| -showme:help || print a short help message about the usage and lists all compiler options&lt;br /&gt;
|- &lt;br /&gt;
| -showme:version || show Open MPI version&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For RWTH cluster users:&lt;br /&gt;
Instead of typing the compiler wrapper &amp;lt;code&amp;gt;mpicc&amp;lt;/code&amp;gt; etc., you can simply put one of the environment variables &amp;lt;code&amp;gt;$MPICC&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;$MPICXX&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;$MPIFC&amp;lt;/code&amp;gt; for Fortran codes. They are already set by the module system so that you do not have to worry about which compiler module to use.&lt;br /&gt;
&lt;br /&gt;
=== Intel MPI ===&lt;br /&gt;
&lt;br /&gt;
Use the following command to specify the program you would like to compile (replace &amp;lt;src_file&amp;gt; with a path to your code, e. g. ./myprog.c). &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 40%;&amp;quot;&lt;br /&gt;
| Compiler Driver || C || C++ || Fortran&lt;br /&gt;
|-&lt;br /&gt;
| GCC || &amp;lt;code&amp;gt;$ mpicc &amp;lt;src_file&amp;gt; -o &amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;$ mpicpc &amp;lt;src_file&amp;gt; -o &amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;$ mpifort &amp;lt;src_file&amp;gt; -o &amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Intel || &amp;lt;code&amp;gt;$ mpiicc &amp;lt;src_file&amp;gt; -o &amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;$ mpiicpc &amp;lt;src_file&amp;gt; -o &amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;$ mpiifort &amp;lt;src_file&amp;gt; -o &amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You can also type the command &amp;lt;code&amp;gt;$ mpicc [options] &amp;lt;src_file&amp;gt; -o &amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; etc., where [options] can be replaced with one or more of the ones listed below. Intel MPI comes with rather advanced compiler options, that are mainly aimed at optimization and analyzing your code with the help of Intel tools.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 40%;&amp;quot;&lt;br /&gt;
|Options || Function&lt;br /&gt;
|-&lt;br /&gt;
| -g || enable debug mode&lt;br /&gt;
|- &lt;br /&gt;
| -O || enable compiler optimization&lt;br /&gt;
|-&lt;br /&gt;
| -v || print compiler version&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For RWTH cluster users:&lt;br /&gt;
Instead of typing the compiler wrapper &amp;lt;code&amp;gt;mpicc&amp;lt;/code&amp;gt; etc., you can simply put one of the environment variables &amp;lt;code&amp;gt;$MPICC&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;$MPICXX&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;$MPIFC&amp;lt;/code&amp;gt; for Fortran codes. They are already set by the module system so that you do not have to worry about which compiler module to use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to Run an MPI Executable ==&lt;br /&gt;
&lt;br /&gt;
Ensure that the correct MPI module is loaded (go [[Modules|here]] to see how to load/switch modules). Once again, the command line options slightly differ between Intel MPI and Open MPI.&lt;br /&gt;
In order to start any MPI program, type the following command where &amp;lt;executable&amp;gt; specifies the path to your application:&lt;br /&gt;
 $ mpirun -n &amp;lt;num_procs&amp;gt; [options] &amp;lt;executable&amp;gt;&lt;br /&gt;
Note that &amp;lt;code&amp;gt;mpiexec&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; are synonymous in Open MPI, in Intel MPI it&amp;#039;s &amp;lt;code&amp;gt;mpiexec.hydra&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Don’t forget to put the “-np” or “-n” option as explained below. All the other options listed below are not mandatory.&lt;br /&gt;
&lt;br /&gt;
=== Open MPI ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&lt;br /&gt;
| Option || Function&lt;br /&gt;
|-&lt;br /&gt;
| -np &amp;lt;num_procs&amp;gt; or  -n &amp;lt;num_procs&amp;gt; || number of processes to run&lt;br /&gt;
|-&lt;br /&gt;
| -npersocket &amp;lt;num_procs&amp;gt; || number of processes per socket&lt;br /&gt;
|-&lt;br /&gt;
| -npernode &amp;lt;num_procs&amp;gt; || number of processes per node&lt;br /&gt;
|-&lt;br /&gt;
| -wdir &amp;lt;directory&amp;gt; || change to directory specified before executing the program&lt;br /&gt;
|-&lt;br /&gt;
| -nw || complete command when all MPI processes have been launched successfully&lt;br /&gt;
|-&lt;br /&gt;
| -path &amp;lt;path&amp;gt; || look for executables in the directory specified&lt;br /&gt;
|-&lt;br /&gt;
| -q or -quiet || suppress helpful messages&lt;br /&gt;
|-&lt;br /&gt;
| -output-filename &amp;lt;name&amp;gt; || redirect output into the file &amp;lt;name&amp;gt;.&amp;lt;rank&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| -x &amp;lt;env_variable&amp;gt; || export the specified environment variable to the remote nodes where the program will be executed&lt;br /&gt;
|-&lt;br /&gt;
| --help || list all options available with an explanation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Intel MPI ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 60%;&amp;quot;&lt;br /&gt;
| Option || Function&lt;br /&gt;
|-&lt;br /&gt;
| -n &amp;lt;num_procs&amp;gt; || number of processes to run&lt;br /&gt;
|-&lt;br /&gt;
| -ppn &amp;lt;num_procs&amp;gt; || number of processes per node&lt;br /&gt;
|-&lt;br /&gt;
| -wdir &amp;lt;directory&amp;gt; || change to directory specified before executing the program&lt;br /&gt;
|-&lt;br /&gt;
| -path &amp;lt;path&amp;gt; || look for executables in the directory specified&lt;br /&gt;
|-&lt;br /&gt;
| -outfile-pattern &amp;lt;name&amp;gt; || redirect stdout to file&lt;br /&gt;
|-&lt;br /&gt;
| --help || list all options available with an explanation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Process Binding in Open MPI ===&lt;br /&gt;
&lt;br /&gt;
Binding processes means telling your system how to place the processes onto the architecture. This can be done by adding command-line options when calling &amp;quot;mpiexec&amp;quot; and may enhance the performance of your application. In order to learn more about that, go [[Binding/Pinning#Options_for_Binding_in_Open_MPI|here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[https://software.intel.com/en-us/mpi-developer-reference-linux-compiler-command-options Intel MPI compiler options]&lt;br /&gt;
&lt;br /&gt;
[https://www.open-mpi.org/doc/v2.0/man1/mpiexec.1.php Manual page for Open MPI&amp;#039;s mpiexec]&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=MediaWiki:Sidebar&amp;diff=660</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=MediaWiki:Sidebar&amp;diff=660"/>
		<updated>2018-04-06T08:19:09Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
* SEARCH&lt;br /&gt;
&lt;br /&gt;
* Basics&lt;br /&gt;
** Getting_Started|Getting Started&lt;br /&gt;
** Shell|Shell&lt;br /&gt;
** ssh|ssh&lt;br /&gt;
** File_Transfer|File Transfer&lt;br /&gt;
** Modules|Modules&lt;br /&gt;
&lt;br /&gt;
* General Info&lt;br /&gt;
** Access|Access&lt;br /&gt;
** Nodes|Nodes&lt;br /&gt;
** Schedulers|Schedulers&lt;br /&gt;
** Site-specific documentation|Site-specific docu&lt;br /&gt;
** Support|Support&lt;br /&gt;
&lt;br /&gt;
* HPC-User&lt;br /&gt;
** Compiler|Compiler&lt;br /&gt;
** Parallel_Programming|Parallelization&lt;br /&gt;
** How_to_Use_OpenMP|OpenMP Usage&lt;br /&gt;
** How_to_Use_MPI|MPI Usage&lt;br /&gt;
** ssh_keys|ssh Keys&lt;br /&gt;
&lt;br /&gt;
* HPC-Dev&lt;br /&gt;
** Performance_Engineering|Performance_Engineering&lt;br /&gt;
** OpenMP|OpenMP&lt;br /&gt;
** MPI|MPI&lt;br /&gt;
&lt;br /&gt;
* HPC-Admin&lt;br /&gt;
** Setting_up_Monitoring|Setting_up_LMS&lt;br /&gt;
&lt;br /&gt;
* Optimization_tips&lt;br /&gt;
** Load_Balancing|Load Balancing&lt;br /&gt;
** Binding/Pinning|Binding/Pinning&lt;br /&gt;
&lt;br /&gt;
* FAQs&lt;br /&gt;
** Shell|Unix&lt;br /&gt;
** Scheduler|Scheduler&lt;br /&gt;
** Wiki|Wiki&lt;br /&gt;
** Sample_Page|Sample_Page&lt;br /&gt;
&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Binding/Pinning&amp;diff=658</id>
		<title>Binding/Pinning</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Binding/Pinning&amp;diff=658"/>
		<updated>2018-04-06T08:18:20Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: Ds019135 moved page Thread Pinning to Binding/Pinning&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
&lt;br /&gt;
Pinning threads for shared-memory [[Parallel_Programming|parallelism]] or binding processes for distributed-memory parallelism is an advanced way to control how your system distributes the threads or processes across the available cores. It is important for improving the performance of your application by avoiding costly remote memory accesses and keeping the threads or processes close to each other. Threads are &amp;quot;pinned&amp;quot; by setting certain [[OpenMP]]-related environment variables, which you can do with this command:&lt;br /&gt;
 $ export &amp;lt;env_variable_name&amp;gt; = &amp;lt;value&amp;gt;&lt;br /&gt;
The terms &amp;quot;thread pinning&amp;quot; and &amp;quot;thread affinity&amp;quot; as well as &amp;quot;process binding&amp;quot; and &amp;quot;process affinity&amp;quot; are used interchangeably.&lt;br /&gt;
You can bind processes by specifying additional options when [[How_to_Use_MPI#How_to_Run_an_MPI_Executable|executing]] your Open [[MPI]] application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to Pin Threads in OpenMP ==&lt;br /&gt;
&lt;br /&gt;
[[File:Omp_places.png|thumb|350px|Schematic of how &amp;lt;code&amp;gt;OMP_PLACES={0}:8:2&amp;lt;/code&amp;gt; would be interpreted]]&lt;br /&gt;
&lt;br /&gt;
[[File:Proc_bind_close.PNG|thumb|350px|Schematic of how &amp;lt;code&amp;gt;OMP_PROC_BIND=close&amp;lt;/code&amp;gt; would be interpreted on a system comprising 2 nodes with 4 hardware threads each]]&lt;br /&gt;
&lt;br /&gt;
[[File:Proc_bind_spread.PNG|thumb|350px|Schematic of &amp;lt;code&amp;gt;OMP_PROC_BIND=spread&amp;lt;/code&amp;gt; and an remote memory access, if thread 0 and 1 work on the same data]]&lt;br /&gt;
&lt;br /&gt;
OMP_PLACES is employed to specify places on the machine where the threads are put. However, this variable on its own does not determine thread pinning completely, because your system still won&amp;#039;t know in what pattern to assign the threads to the given places. Therefore, you also need to set OMP_PROC_BIND.&lt;br /&gt;
&lt;br /&gt;
OMP_PROC_BIND specifies a binding policy which basically sets criteria by which the threads are distributed.&lt;br /&gt;
&lt;br /&gt;
If you want to get a schematic overview of your cluster&amp;#039;s hardware, e. g. to figure out how many hardware threads there are, type: &amp;lt;code&amp;gt;$ lstopo&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== OMP_PLACES ===&lt;br /&gt;
&lt;br /&gt;
This variable can hold two kinds of values: a name specifying (hardware) places, or a list that marks places.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
| Abstract name || Meaning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;threads&amp;lt;/code&amp;gt; || a place is a single hardware thread, i. e. the hyperthreading will be ignored&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cores&amp;lt;/code&amp;gt; || a place is a single core with its corresponding amount of hardware threads&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sockets&amp;lt;/code&amp;gt; || a place is a single socket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In order to define specific places by an interval, OMP_PLACES can be set to &amp;lt;code&amp;gt;&amp;lt;lowerbound&amp;gt;:&amp;lt;length&amp;gt;:&amp;lt;stride&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
All of these three values are non-negative integers and must not exceed your system&amp;#039;s bounds. The value of &amp;lt;code&amp;gt;&amp;lt;lowerbound&amp;gt;&amp;lt;/code&amp;gt; can be defined as a list of hardware threads. As an interval, &amp;lt;code&amp;gt;&amp;lt;lowerbound&amp;gt;&amp;lt;/code&amp;gt; has this format: &amp;lt;code&amp;gt;{&amp;lt;starting_point&amp;gt;:&amp;lt;length&amp;gt;}&amp;lt;/code&amp;gt; that can be a single place, or a place that holds several hardware threads, which is indicated by &amp;lt;code&amp;gt;&amp;lt;length&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
| Example hardware || OMP_PLACES || Places&lt;br /&gt;
|-&lt;br /&gt;
| 24 cores with one hardware thread each, starting at core 0 and using every 2nd core || &amp;lt;code&amp;gt;{0}:24:2&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;{0:1}:24:2&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;{0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22}&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 12 cores with two hardware threads each, starting at the first two hardware threads on the first core ({0,1}) and using every 4th core || &amp;lt;code&amp;gt;{0,1}:12:4&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;{0:2}:12:4&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;{{0,1}, {4,5}, {8,9}, {12,13}, {16,17}, {20,21}}&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You can also determine these places with a comma-separated list. Say there are 8 cores available with one hardware thread each, and you would like to execute your application on the first four cores, you could define this: &amp;lt;code&amp;gt;$ export OMP_PLACES={0, 1, 2, 3}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OMP_PROC_BIND ===&lt;br /&gt;
&lt;br /&gt;
Now that you have set OMP_PROC_BIND, you can now define the order in which the places should be assigned. This is especially useful for NUMA systems (see [[#References|references]] below) because some threads may have to access remote memory, which will slow your application down significantly. If OMP_PROC_BIND is not set, your system will distribute the threads across the nodes and cores randomly.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
| Value || Function&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; || the threads should not be moved&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; || the threads can be moved&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; || worker threads are in the same partition as the master&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;close&amp;lt;/code&amp;gt; || worker threads are close to the master in contiguous partitions, e. g. if the master is occupying hardware thread 0, worker 1 will be placed on hw thread 1, worker 2 on hw thread 2 and so on&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;spread&amp;lt;/code&amp;gt; || workers are spread across the available places to maximize the space inbetween two neighbouring threads&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Options for Binding in Open MPI ==&lt;br /&gt;
&lt;br /&gt;
Binding processes to certain processors can be done by specifying the options below when executing a program. This is a more advanced way of running an application and also requires knowledge about your system&amp;#039;s architecture, e. g. how many cores there are (for an overview of your hardware topology, use &amp;lt;code&amp;gt;$ lstopo&amp;lt;/code&amp;gt;). If none of these options are given, default values are set.&lt;br /&gt;
By overriding default values with the ones specified, you may be able to improve the performance of your application, if your system distributes them in a suboptimal way per default.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 80%;&amp;quot;&lt;br /&gt;
| Option || Function || Explanation&lt;br /&gt;
|-&lt;br /&gt;
| --bind-to &amp;lt;arg&amp;gt; || bind to the processors associated with hardware component; arg can be one of: none, hwthread, core, l1cache, l2cache, l3cache, socket, numa, board; default values: &amp;quot;core&amp;quot; for np &amp;lt;= 2, &amp;quot;socket&amp;quot; otherwise || e. g.: in case of &amp;quot;l3cache&amp;quot; the processes will be bound to those processors that share the same L3 cache&lt;br /&gt;
|-&lt;br /&gt;
| --bind-to-core || bind processes to cores || bind each process to a core&lt;br /&gt;
|-&lt;br /&gt;
| --bind-to-socket || bind processes to sockets || put each process onto a processor socket&lt;br /&gt;
|-&lt;br /&gt;
| --bind-to-none || bind no processes || do not bind any processes, but distribute them freely&lt;br /&gt;
|-&lt;br /&gt;
| --cpus-per-proc &amp;lt;num_cpus&amp;gt; || bind each process to the given number of CPUs || if set to 3, each process will take up 3 CPUs&lt;br /&gt;
|-&lt;br /&gt;
| --report-bindings || print any bindings for launched processes to the console&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[http://pages.tacc.utexas.edu/~eijkhout/pcse/html/omp-affinity.html Thread affinity in OpenMP]&lt;br /&gt;
&lt;br /&gt;
[https://docs.oracle.com/cd/E60778_01/html/E60751/goztg.html More information on OMP_PLACES and OMP_PROC_BIND]&lt;br /&gt;
&lt;br /&gt;
[https://doc.itc.rwth-aachen.de/download/attachments/35947076/03_OpenMPNumaSimd.pdf Introduction to OpenMP from PPCES (@RWTH Aachen) Part 3: NUMA &amp;amp; SIMD]&lt;br /&gt;
&lt;br /&gt;
[https://www.open-mpi.org/faq/?category=tuning#using-paffinity-v1.4 FAQ about process affinity in Open MPI]&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=641</id>
		<title>Ssh keys</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=641"/>
		<updated>2018-04-05T14:56:21Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An ssh key is a way of identifying (authenticating) yourself when connecting to a server per [[ssh]]. A different popular authentication method is via a password.&lt;br /&gt;
&lt;br /&gt;
== Why should I use it?==&lt;br /&gt;
When you connect to a server, authenticating via a password there are two main problems:&lt;br /&gt;
* Someone could bruteforce or guess the password, since many passwords are commonly weak, hard to remember or used for multiple applications and then cracked/leaked.&lt;br /&gt;
* Someone could intercept/crack your password, since it has to be send to the server at some point in some form.&lt;br /&gt;
&lt;br /&gt;
== How-to-use-it ==&lt;br /&gt;
=== Generate a key ===&lt;br /&gt;
You should start by generating a key pair:&lt;br /&gt;
 $ ssh-keygen -b 4096&lt;br /&gt;
where you can specify the max length of the key up to 16384 bits.&lt;br /&gt;
&lt;br /&gt;
You can then optionally protect your key with a passphrase. (Your key is basically just a file sitting on your computer and a passphrase protects your key, if someone happens to steal/copy that file).&lt;br /&gt;
&lt;br /&gt;
If you did not specify a different file, the key normaly gets generated into the folder &lt;br /&gt;
 ~/.ssh&lt;br /&gt;
with the files &amp;#039;&amp;#039;&amp;#039;id_rsa&amp;#039;&amp;#039;&amp;#039; being your private and &amp;#039;&amp;#039;&amp;#039;id_rsa.pub&amp;#039;&amp;#039;&amp;#039; being your public key.&lt;br /&gt;
&lt;br /&gt;
=== Copy the public key to the server ===&lt;br /&gt;
This public key now has to be copied to the server to the &lt;br /&gt;
 ~/.ssh/authorized_keys&lt;br /&gt;
file. This can be done, by opening an [[ssh]] connection via password and then using an editor (e.g. [[vim]]) to paste the key into the file (creating the &amp;#039;&amp;#039;&amp;#039;.ssh&amp;#039;&amp;#039;&amp;#039; directory if it does not exist):&lt;br /&gt;
 $ mkdir ~/.ssh&lt;br /&gt;
 $ vim ~/.ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
The next time you [[ssh]] to the server, it should use the key and instead of prompting the pass&amp;#039;&amp;#039;&amp;#039;word&amp;#039;&amp;#039;&amp;#039; for the server, prompt for the pass&amp;#039;&amp;#039;&amp;#039;phrase&amp;#039;&amp;#039;&amp;#039; of the key, if you chose to employ a passphrase.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If it still asks for your password, something went wrong. In that case you should check, whether the &amp;#039;&amp;#039;&amp;#039;authorized_keys&amp;#039;&amp;#039;&amp;#039; file really contains the key by executing:&lt;br /&gt;
 $ cat ~/.ssh/authorized_keys&lt;br /&gt;
on the &amp;#039;&amp;#039;&amp;#039;server&amp;#039;&amp;#039;&amp;#039; and &lt;br /&gt;
 $ cat ~/.ssh/id_rsa.pub&lt;br /&gt;
on &amp;#039;&amp;#039;&amp;#039;your local machine&amp;#039;&amp;#039;&amp;#039;. If the key of your local machine is not contained in the &amp;#039;&amp;#039;&amp;#039;authorized_keys&amp;#039;&amp;#039;&amp;#039; on the server, repeat the steps of copying the key to the server.&lt;br /&gt;
&lt;br /&gt;
== How-it-works ==&lt;br /&gt;
The basic principle is that of public and private keys. A public key is like an indestructible piggy bank: Everybody can put something (data) into it and nobody can get it back out again. A private key is the key for this. In this way you can distribute all the piggy banks you like and if someone put something in there and sends it back, only you can open it with your private key.&lt;br /&gt;
&lt;br /&gt;
Now since you gave the server the public key (=piggy bank), it can encrypt something (say a random number), send it back and only you can decrypt this number, since only you have the private key.&lt;br /&gt;
&lt;br /&gt;
For more detailed information on how this works, head over to the References.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[https://wiki.archlinux.de/title/SSH-Authentifizierung_mit_Schl%C3%BCsselpaaren SSH keys on the archlinux wiki]&lt;br /&gt;
&lt;br /&gt;
[https://medium.com/@vrypan/explaining-public-key-cryptography-to-non-geeks-f0994b3c2d5 Public and private keys easily explained]&lt;br /&gt;
&lt;br /&gt;
[https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process More detailed explanation of the connection and encryption process of ssh]&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=640</id>
		<title>Ssh keys</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=640"/>
		<updated>2018-04-05T14:56:01Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An ssh key is a way of identifying (authenticating) yourself when connecting to a server per [[ssh]]. A different popular authentication method is via a password.&lt;br /&gt;
&lt;br /&gt;
== Why should I use it?==&lt;br /&gt;
When you connect to a server, authenticating via a password there are two main problems:&lt;br /&gt;
* Someone could bruteforce or guess the password, since many passwords are commonly weak, hard to remember or used for multiple applications and then cracked/leaked.&lt;br /&gt;
* Someone could intercept/crack your password, since it has to be send to the server at some point in some form.&lt;br /&gt;
&lt;br /&gt;
== How-to-use-it ==&lt;br /&gt;
=== Generate a key ===&lt;br /&gt;
You should start by generating a key pair:&lt;br /&gt;
 $ ssh-keygen -b 4096&lt;br /&gt;
where you can specify the max length of the key up to 16384 bits.&lt;br /&gt;
&lt;br /&gt;
You can then optionally protect your key with a passphrase. (Your key is basically just a file sitting on your computer and a passphrase protects your key, if someone happens to steal/copy that file).&lt;br /&gt;
&lt;br /&gt;
If you did not specify a different file, the key normaly gets generated into the folder &lt;br /&gt;
 ~/.ssh&lt;br /&gt;
with the files &amp;#039;&amp;#039;&amp;#039;id_rsa&amp;#039;&amp;#039;&amp;#039; being your private and &amp;#039;&amp;#039;&amp;#039;id_rsa.pub&amp;#039;&amp;#039;&amp;#039; being your public key.&lt;br /&gt;
&lt;br /&gt;
=== Copy the public key to the server ===&lt;br /&gt;
This public key now has to be copied to the server to the &lt;br /&gt;
 ~/.ssh/authorized_keys&lt;br /&gt;
file. This can be done, by opening an [[ssh]] connection via password and then using an editor (e.g. [[vim]]) to paste the key into the file (creating the &amp;#039;&amp;#039;&amp;#039;.ssh&amp;#039;&amp;#039;&amp;#039; directory if it does not exist):&lt;br /&gt;
 $ mkdir ~/.ssh&lt;br /&gt;
 $ vim ~/.ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
The next time you [[ssh]] to the server, it should use the key and instead of prompting the pass&amp;#039;&amp;#039;&amp;#039;word&amp;#039;&amp;#039;&amp;#039; for the server, prompt for the pass&amp;#039;&amp;#039;&amp;#039;phrase&amp;#039;&amp;#039;&amp;#039; of the key, if you chose to employ a passphrase.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If it still asks for your password, something went wrong. In that case you should check, whether the &amp;#039;&amp;#039;&amp;#039;authorized_keys&amp;#039;&amp;#039;&amp;#039; file really contains the key by executing:&lt;br /&gt;
 $ cat ~/.ssh/authorized_keys&lt;br /&gt;
on the &amp;#039;&amp;#039;&amp;#039;server&amp;#039;&amp;#039;&amp;#039; and &lt;br /&gt;
 $ cat ~/.ssh/id_rsa.pub&lt;br /&gt;
on &amp;#039;&amp;#039;&amp;#039;your local machine&amp;#039;&amp;#039;&amp;#039;. If the key of your local machine is not contained in the &amp;#039;&amp;#039;&amp;#039;authorized_keys&amp;#039;&amp;#039;&amp;#039; on the server, repeat the steps of copying the key to the server.&lt;br /&gt;
&lt;br /&gt;
== How-it-works ==&lt;br /&gt;
The basic principle is that of public and private keys. A public key is like an indestructible piggy bank: Everybody can put something (data) into it and nobody can get it back out again. A private key is the key for this. In this way you can distribute all the piggy banks you like and if someone put something in there and sends it back, only you can open it with your private key.&lt;br /&gt;
&lt;br /&gt;
Now since you gave the server the public key (=piggy bank), it can encrypt something (say a random number), send it back and only you can decrypt this number, since only you have the private key.&lt;br /&gt;
&lt;br /&gt;
For more detailed information on how this works, head over to the References.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[https://wiki.archlinux.de/title/SSH-Authentifizierung_mit_Schl%C3%BCsselpaaren SSH keys on the archlinux wiki]&lt;br /&gt;
&lt;br /&gt;
[https://medium.com/@vrypan/explaining-public-key-cryptography-to-non-geeks-f0994b3c2d5 Public and private keys easily explained]&lt;br /&gt;
&lt;br /&gt;
[https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process More detailed explanation of the connection and encryption process of ssh]&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=639</id>
		<title>Ssh keys</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=639"/>
		<updated>2018-04-05T14:55:02Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An ssh key is a way of identifying (authenticating) yourself when connecting to a server per [[ssh]]. A different popular authentication method is via a password.&lt;br /&gt;
&lt;br /&gt;
== Why should I use it?==&lt;br /&gt;
When you connect to a server, authenticating via a password there are two main problems:&lt;br /&gt;
* Someone could bruteforce or guess the password, since many passwords are commonly weak, hard to remember or used for multiple applications and then cracked/leaked.&lt;br /&gt;
* Someone could intercept/crack your password, since it has to be send to the server at some point in some form.&lt;br /&gt;
&lt;br /&gt;
== How-to-use-it ==&lt;br /&gt;
=== Generate a key ===&lt;br /&gt;
You should start by generating a key pair:&lt;br /&gt;
 $ ssh-keygen -b 4096&lt;br /&gt;
where you can specify the max length of the key up to 16384 bits.&lt;br /&gt;
&lt;br /&gt;
You can then optionally protect your key with a passphrase. (Your key is basically just a file sitting on your computer and a passphrase protects your key, if someone happens to steal/copy that file).&lt;br /&gt;
&lt;br /&gt;
If you did not specify a different file, the key normaly gets generated into the folder &lt;br /&gt;
 ~/.ssh&lt;br /&gt;
with the files &amp;#039;&amp;#039;&amp;#039;id_rsa&amp;#039;&amp;#039;&amp;#039; being your private and &amp;#039;&amp;#039;&amp;#039;id_rsa.pub&amp;#039;&amp;#039;&amp;#039; being your public key.&lt;br /&gt;
&lt;br /&gt;
=== Copy the public key to the server ===&lt;br /&gt;
This public key now has to be copied to the server to the &lt;br /&gt;
 ~/.ssh/authorized_keys&lt;br /&gt;
file. This can be done, by opening an [[ssh]] connection via password and then using an editor (e.g. [[vim]]) to paste the key into the file (creating the &amp;#039;&amp;#039;&amp;#039;.ssh&amp;#039;&amp;#039;&amp;#039; directory if it does not exist):&lt;br /&gt;
 $ mkdir ~/.ssh&lt;br /&gt;
 $ vim ~/.ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
The next time you [[ssh]] to the server, it should use the key and instead of prompting the pass&amp;#039;&amp;#039;&amp;#039;word&amp;#039;&amp;#039;&amp;#039; for the server, prompt for the pass&amp;#039;&amp;#039;&amp;#039;phrase&amp;#039;&amp;#039;&amp;#039; of the key, if you chose to employ a passphrase.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If it still asks for your password, something went wrong. In that case you should check, whether the &amp;#039;&amp;#039;&amp;#039;authorized_keys&amp;#039;&amp;#039;&amp;#039; file really contains the key by executing:&lt;br /&gt;
 $ cat ~/.ssh/authorized_keys&lt;br /&gt;
on the &amp;#039;&amp;#039;&amp;#039;server&amp;#039;&amp;#039;&amp;#039; and &lt;br /&gt;
 $ cat ~/.ssh/id_rsa.pub&lt;br /&gt;
on &amp;#039;&amp;#039;&amp;#039;your local machine&amp;#039;&amp;#039;&amp;#039;. If the key of your local machine is not contained in the &amp;#039;&amp;#039;&amp;#039;authorized_keys&amp;#039;&amp;#039;&amp;#039; on the server, repeat the steps of copying the key to the server.&lt;br /&gt;
&lt;br /&gt;
== How-it-works ==&lt;br /&gt;
The basic principle is that of public and private keys. A public key is like an indestructible piggy bank: Everybody can put something (data) into it and nobody can get it back out again. A private key is the key for this. In this way you can distribute all the piggy banks you like and if someone put something in there and sends it back, only you can open it with your private key.&lt;br /&gt;
&lt;br /&gt;
Now since you gave the server the public key, it can encrypt something (say a random number) and only you can decrypt this number, since only you have the private key.&lt;br /&gt;
&lt;br /&gt;
For more detailed information on how this works, head over to the References.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[https://wiki.archlinux.de/title/SSH-Authentifizierung_mit_Schl%C3%BCsselpaaren SSH keys on the archlinux wiki]&lt;br /&gt;
&lt;br /&gt;
[https://medium.com/@vrypan/explaining-public-key-cryptography-to-non-geeks-f0994b3c2d5 Public and private keys easily explained]&lt;br /&gt;
&lt;br /&gt;
[https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process More detailed explanation of the connection and encryption process of ssh]&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=638</id>
		<title>Ssh keys</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=638"/>
		<updated>2018-04-05T14:54:37Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An ssh key is a way of identifying (authenticating) yourself when connecting to a server per [[ssh]]. A different popular authentication method is via a password.&lt;br /&gt;
&lt;br /&gt;
== Why should I use it?==&lt;br /&gt;
When you connect to a server, authenticating via a password there are two main problems:&lt;br /&gt;
* Someone could bruteforce or guess the password, since many passwords are commonly weak, hard to remember or used for multiple applications and then cracked/leaked.&lt;br /&gt;
* Someone could intercept/crack your password, since it has to be send to the server at some point in some form.&lt;br /&gt;
&lt;br /&gt;
== How-to-use-it ==&lt;br /&gt;
=== Generate a key ===&lt;br /&gt;
You should start by generating a key pair:&lt;br /&gt;
 $ ssh-keygen -b 4096&lt;br /&gt;
where you can specify the max length of the key up to 16384 bits.&lt;br /&gt;
&lt;br /&gt;
You can then optionally protect your key with a passphrase. (Your key is basically just a file sitting on your computer and a passphrase protects your key, if someone happens to steal/copy that file).&lt;br /&gt;
&lt;br /&gt;
If you did not specify a different file, the key normaly gets generated into the folder &lt;br /&gt;
 ~/.ssh&lt;br /&gt;
with the files &amp;#039;&amp;#039;&amp;#039;id_rsa&amp;#039;&amp;#039;&amp;#039; being your private and &amp;#039;&amp;#039;&amp;#039;id_rsa.pub&amp;#039;&amp;#039;&amp;#039; being your public key.&lt;br /&gt;
&lt;br /&gt;
=== Copy the public key to the server ===&lt;br /&gt;
This public key now has to be copied to the server to the &lt;br /&gt;
 ~/.ssh/authorized_keys&lt;br /&gt;
file. This can be done, by opening an [[ssh]] connection via password and then using an editor (e.g. [[vim]]) to paste the key into the file (creating the &amp;#039;&amp;#039;&amp;#039;.ssh&amp;#039;&amp;#039;&amp;#039; directory if it does not exist):&lt;br /&gt;
 $ mkdir ~/.ssh&lt;br /&gt;
 $ vim ~/.ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
The next time you [[ssh]] to the server, it should use the key and instead of prompting the pass&amp;#039;&amp;#039;&amp;#039;word&amp;#039;&amp;#039;&amp;#039; for the server, prompt for the pass&amp;#039;&amp;#039;&amp;#039;phrase&amp;#039;&amp;#039;&amp;#039; of the key, if you chose to employ a passphrase.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If it still asks for your password, something went wrong. In that case you should check, whether the &amp;#039;&amp;#039;&amp;#039;authorized_keys&amp;#039;&amp;#039;&amp;#039; file really contains the key by executing:&lt;br /&gt;
 $ cat ~/.ssh/authorized_keys&lt;br /&gt;
on the &amp;#039;&amp;#039;&amp;#039;server&amp;#039;&amp;#039;&amp;#039; and &lt;br /&gt;
 $ cat ~/.ssh/id_rsa.pub&lt;br /&gt;
on &amp;#039;&amp;#039;&amp;#039;your local machine&amp;#039;&amp;#039;&amp;#039;. If the key of your local machine is not contained in the &amp;#039;&amp;#039;&amp;#039;authorized_keys&amp;#039;&amp;#039;&amp;#039; on the server, repeat the steps&lt;br /&gt;
&lt;br /&gt;
== How-it-works ==&lt;br /&gt;
The basic principle is that of public and private keys. A public key is like an indestructible piggy bank: Everybody can put something (data) into it and nobody can get it back out again. A private key is the key for this. In this way you can distribute all the piggy banks you like and if someone put something in there and sends it back, only you can open it with your private key.&lt;br /&gt;
&lt;br /&gt;
Now since you gave the server the public key, it can encrypt something (say a random number) and only you can decrypt this number, since only you have the private key.&lt;br /&gt;
&lt;br /&gt;
For more detailed information on how this works, head over to the References.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[https://wiki.archlinux.de/title/SSH-Authentifizierung_mit_Schl%C3%BCsselpaaren SSH keys on the archlinux wiki]&lt;br /&gt;
&lt;br /&gt;
[https://medium.com/@vrypan/explaining-public-key-cryptography-to-non-geeks-f0994b3c2d5 Public and private keys easily explained]&lt;br /&gt;
&lt;br /&gt;
[https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process More detailed explanation of the connection and encryption process of ssh]&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=637</id>
		<title>Ssh keys</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=637"/>
		<updated>2018-04-05T14:52:47Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An ssh key is a way of identifying (authenticating) yourself when connecting to a server per [[ssh]]. A different popular authentication method is via a password.&lt;br /&gt;
&lt;br /&gt;
== Why should I use it?==&lt;br /&gt;
When you connect to a server, authenticating via a password there are two main problems:&lt;br /&gt;
* Someone could bruteforce or guess the password, since many passwords are commonly weak, hard to remember or used for multiple applications and then cracked/leaked.&lt;br /&gt;
* Someone could intercept/crack your password, since it has to be send to the server at some point in some form.&lt;br /&gt;
&lt;br /&gt;
== How-to-use-it ==&lt;br /&gt;
You should start by generating a key pair:&lt;br /&gt;
 $ ssh-keygen -b 4096&lt;br /&gt;
where you can specify the max length of the key up to 16384 bits.&lt;br /&gt;
&lt;br /&gt;
You can then optionally protect your key with a passphrase. (Your key is basically just a file sitting on your computer and a passphrase protects your key, if someone happens to steal/copy that file).&lt;br /&gt;
&lt;br /&gt;
If you did not specify a different file, the key normaly gets generated into the folder &lt;br /&gt;
 ~/.ssh&lt;br /&gt;
with the files &amp;#039;&amp;#039;&amp;#039;id_rsa&amp;#039;&amp;#039;&amp;#039; being your private and &amp;#039;&amp;#039;&amp;#039;id_rsa.pub&amp;#039;&amp;#039;&amp;#039; being your public key.&lt;br /&gt;
&lt;br /&gt;
This public key now has to be copied to the server to the &lt;br /&gt;
 ~/.ssh/authorized_keys&lt;br /&gt;
file. This can be done, by opening an [[ssh]] connection via password and then using an editor (e.g. [[vim]]) to paste the key into the file (creating the &amp;#039;&amp;#039;&amp;#039;.ssh&amp;#039;&amp;#039;&amp;#039; directory if it does not exist):&lt;br /&gt;
 $ mkdir ~/.ssh&lt;br /&gt;
 $ vim ~/.ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
The next time you [[ssh]] to the server, it should use the key and instead of prompting the pass&amp;#039;&amp;#039;&amp;#039;word&amp;#039;&amp;#039;&amp;#039; for the server, prompt for the pass&amp;#039;&amp;#039;&amp;#039;phrase&amp;#039;&amp;#039;&amp;#039; of the key, if you chose to employ a passphrase.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If it still asks for your password, something went wrong. In that case you should check, whether the &amp;#039;&amp;#039;&amp;#039;authorized_keys&amp;#039;&amp;#039;&amp;#039; file really contains the key by executing:&lt;br /&gt;
 $ cat ~/.ssh/authorized_keys&lt;br /&gt;
on the &amp;#039;&amp;#039;&amp;#039;server&amp;#039;&amp;#039;&amp;#039; and &lt;br /&gt;
 $ cat ~/.ssh/id_rsa.pub&lt;br /&gt;
on your local machine.&lt;br /&gt;
&lt;br /&gt;
== How-it-works ==&lt;br /&gt;
The basic principle is that of public and private keys. A public key is like an indestructible piggy bank: Everybody can put something (data) into it and nobody can get it back out again. A private key is the key for this. In this way you can distribute all the piggy banks you like and if someone put something in there and sends it back, only you can open it with your private key.&lt;br /&gt;
&lt;br /&gt;
Now since you gave the server the public key, it can encrypt something (say a random number) and only you can decrypt this number, since only you have the private key.&lt;br /&gt;
&lt;br /&gt;
For more detailed information on how this works, head over to the References.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[https://wiki.archlinux.de/title/SSH-Authentifizierung_mit_Schl%C3%BCsselpaaren SSH keys on the archlinux wiki]&lt;br /&gt;
&lt;br /&gt;
[https://medium.com/@vrypan/explaining-public-key-cryptography-to-non-geeks-f0994b3c2d5 Public and private keys easily explained]&lt;br /&gt;
&lt;br /&gt;
[https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process More detailed explanation of the connection and encryption process of ssh]&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=636</id>
		<title>Ssh keys</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=636"/>
		<updated>2018-04-05T14:52:25Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An ssh key is a way of identifying (authenticating) yourself when connecting to a server per [[ssh]]. A different popular authentication method is via a password.&lt;br /&gt;
&lt;br /&gt;
== Why should I use it?==&lt;br /&gt;
When you connect to a server, authenticating via a password there are two main problems:&lt;br /&gt;
* Someone could bruteforce or guess the password, since many passwords are commonly weak, hard to remember or used for multiple applications and then cracked/leaked.&lt;br /&gt;
* Someone could intercept/crack your password, since it has to be send to the server at some point in some form.&lt;br /&gt;
&lt;br /&gt;
== How-to-use-it ==&lt;br /&gt;
You should start by generating a key pair:&lt;br /&gt;
 $ ssh-keygen -b 4096&lt;br /&gt;
where you can specify the max length of the key up to 16384 bits.&lt;br /&gt;
&lt;br /&gt;
You can then optionally protect your key with a passphrase. (Your key is basically just a file sitting on your computer and a passphrase protects your key, if someone happens to steal/copy that file).&lt;br /&gt;
&lt;br /&gt;
If you did not specify a different file, the key normaly gets generated into the folder &lt;br /&gt;
 ~/.ssh&lt;br /&gt;
with the files &amp;#039;&amp;#039;&amp;#039;id_rsa&amp;#039;&amp;#039;&amp;#039; being your private and &amp;#039;&amp;#039;&amp;#039;id_rsa.pub&amp;#039;&amp;#039;&amp;#039; being your public key.&lt;br /&gt;
&lt;br /&gt;
This public key now has to be copied to the server to the &lt;br /&gt;
 ~/.ssh/authorized_keys&lt;br /&gt;
file. This can be done, by opening an [[ssh]] connection via password and then using an editor (e.g. [[vim]]) to paste the key into the file (creating the &amp;#039;&amp;#039;&amp;#039;.ssh&amp;#039;&amp;#039;&amp;#039; directory if it does not exist):&lt;br /&gt;
 $ mkdir ~/.ssh&lt;br /&gt;
 $ vim ~/.ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
The next time you [[ssh]] to the server, it should use the key and instead of prompting the pass&amp;#039;&amp;#039;&amp;#039;word&amp;#039;&amp;#039;&amp;#039; for the server, prompt for the pass&amp;#039;&amp;#039;&amp;#039;phrase&amp;#039;&amp;#039;&amp;#039; of the key, if you chose to employ a passphrase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If it still asks for your password, something went wrong. In that case you should check, whether the &amp;#039;&amp;#039;&amp;#039;authorized_keys&amp;#039;&amp;#039;&amp;#039; file really contains the key by executing:&lt;br /&gt;
 $ cat ~/.ssh/authorized_keys&lt;br /&gt;
on the &amp;#039;&amp;#039;&amp;#039;server&amp;#039;&amp;#039;&amp;#039; and &lt;br /&gt;
 $ cat ~/.ssh/id_rsa.pub&lt;br /&gt;
on your local machine.&lt;br /&gt;
&lt;br /&gt;
== How-it-works ==&lt;br /&gt;
The basic principle is that of public and private keys. A public key is like an indestructible piggy bank: Everybody can put something (data) into it and nobody can get it back out again. A private key is the key for this. In this way you can distribute all the piggy banks you like and if someone put something in there and sends it back, only you can open it with your private key.&lt;br /&gt;
&lt;br /&gt;
Now since you gave the server the public key, it can encrypt something (say a random number) and only you can decrypt this number, since only you have the private key.&lt;br /&gt;
&lt;br /&gt;
For more detailed information on how this works, head over to the References.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[https://wiki.archlinux.de/title/SSH-Authentifizierung_mit_Schl%C3%BCsselpaaren SSH keys on the archlinux wiki]&lt;br /&gt;
&lt;br /&gt;
[https://medium.com/@vrypan/explaining-public-key-cryptography-to-non-geeks-f0994b3c2d5 Public and private keys easily explained]&lt;br /&gt;
&lt;br /&gt;
[https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process More detailed explanation of the connection and encryption process of ssh]&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=635</id>
		<title>Ssh keys</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=635"/>
		<updated>2018-04-05T14:51:55Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An ssh key is a way of identifying (authenticating) yourself when connecting to a server per [[ssh]]. A different popular authentication method is via a password.&lt;br /&gt;
&lt;br /&gt;
== Why should I use it?==&lt;br /&gt;
When you connect to a server, authenticating via a password there are two main problems:&lt;br /&gt;
* Someone could bruteforce or guess the password, since many passwords are commonly weak, hard to remember or used for multiple applications and then cracked/leaked.&lt;br /&gt;
* Someone could intercept/crack your password, since it has to be send to the server at some point in some form.&lt;br /&gt;
&lt;br /&gt;
== How-to-use-it ==&lt;br /&gt;
You should start by generating a key pair:&lt;br /&gt;
 $ ssh-keygen -b 4096&lt;br /&gt;
where you can specify the max length of the key up to 16384 bits.&lt;br /&gt;
&lt;br /&gt;
You can then optionally protect your key with a passphrase. (Your key is basically just a file sitting on your computer and a passphrase protects your key, if someone happens to steal/copy that file).&lt;br /&gt;
&lt;br /&gt;
If you did not specify a different file, the key normaly gets generated into the folder &lt;br /&gt;
 ~/.ssh&lt;br /&gt;
with the files &amp;#039;&amp;#039;&amp;#039;id_rsa&amp;#039;&amp;#039;&amp;#039; being your private and &amp;#039;&amp;#039;&amp;#039;id_rsa.pub&amp;#039;&amp;#039;&amp;#039; being your public key.&lt;br /&gt;
&lt;br /&gt;
This public key now has to be copied to the server to the &lt;br /&gt;
 ~/.ssh/authorized_keys&lt;br /&gt;
file. This can be done, by opening an [[ssh]] connection via password and then using an editor (e.g. [[vim]]) to paste the key into the file (creating the &amp;#039;&amp;#039;&amp;#039;.ssh&amp;#039;&amp;#039;&amp;#039; directory if it does not exist):&lt;br /&gt;
 $ mkdir ~/.ssh&lt;br /&gt;
 $ vim ~/.ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
The next time you [[ssh]] to the server, it should use the key and instead of prompting the pass&amp;#039;&amp;#039;&amp;#039;word&amp;#039;&amp;#039;&amp;#039; for the server, prompt for the pass&amp;#039;&amp;#039;&amp;#039;phrase&amp;#039;&amp;#039;&amp;#039; of the key, if you chose to employ a passphrase. If it still asks for your password, something went wrong. In that case you should check, whether the &amp;#039;&amp;#039;&amp;#039;authorized_keys&amp;#039;&amp;#039;&amp;#039; file really contains the key by executing:&lt;br /&gt;
 $ cat ~/.ssh/authorized_keys&lt;br /&gt;
on the &amp;#039;&amp;#039;&amp;#039;server&amp;#039;&amp;#039;&amp;#039; and &lt;br /&gt;
 $ cat ~/.ssh/id_rsa.pub&lt;br /&gt;
on your local machine.&lt;br /&gt;
&lt;br /&gt;
== How-it-works ==&lt;br /&gt;
The basic principle is that of public and private keys. A public key is like an indestructible piggy bank: Everybody can put something (data) into it and nobody can get it back out again. A private key is the key for this. In this way you can distribute all the piggy banks you like and if someone put something in there and sends it back, only you can open it with your private key.&lt;br /&gt;
&lt;br /&gt;
Now since you gave the server the public key, it can encrypt something (say a random number) and only you can decrypt this number, since only you have the private key.&lt;br /&gt;
&lt;br /&gt;
For more detailed information on how this works, head over to the References.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[https://wiki.archlinux.de/title/SSH-Authentifizierung_mit_Schl%C3%BCsselpaaren SSH keys on the archlinux wiki]&lt;br /&gt;
&lt;br /&gt;
[https://medium.com/@vrypan/explaining-public-key-cryptography-to-non-geeks-f0994b3c2d5 Public and private keys easily explained]&lt;br /&gt;
&lt;br /&gt;
[https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process More detailed explanation of the connection and encryption process of ssh]&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=How_to_Use_OpenMP&amp;diff=634</id>
		<title>How to Use OpenMP</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=How_to_Use_OpenMP&amp;diff=634"/>
		<updated>2018-04-05T14:44:44Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
&lt;br /&gt;
This will give you a general overview of how to compile and execute a program that has been [[Parallel_Programming|parallelized]] with [[OpenMP]].&lt;br /&gt;
As opposed to [[How_to_Use_MPI|MPI]], you do not have to load any modules to use OpenMP.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to Compile OpenMP Code ==&lt;br /&gt;
&lt;br /&gt;
Additional compiler flags tell the compiler to enable OpenMP. Otherwise, the OpenMP pragmas in the code will be ignored by the compiler.&lt;br /&gt;
&lt;br /&gt;
Depending on which compiler you have loaded, use one of the flags below to compile your code.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width=60%;&amp;quot;&lt;br /&gt;
| Compiler || Flag&lt;br /&gt;
|-&lt;br /&gt;
| GNU || -fopenmp&lt;br /&gt;
|-&lt;br /&gt;
| Intel || -openmp&lt;br /&gt;
|-&lt;br /&gt;
| Oracle || -xopenmp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For example: if you plan to use an Intel compiler for your OpenMP code written in C, you have to type this to create an application called &amp;quot;omp_code.exe&amp;quot;:&lt;br /&gt;
 $ icc -openmp omp_code.c -o omp_code.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to Run an OpenMP Application ==&lt;br /&gt;
&lt;br /&gt;
=== Setting OMP_NUM_THREADS ===&lt;br /&gt;
&lt;br /&gt;
If you forget to set OMP_NUM_THREADS to any value, the default value of your cluster environment will be used. In most cases, the default is 1, so that your program is executed serially.&lt;br /&gt;
&lt;br /&gt;
One way to specify the number of threads is by passing an extra argument when running the executable file. In order to start the parallel regions of the example program above with 12 threads, you&amp;#039;d have to type:&lt;br /&gt;
 $ OMP_NUM_THREADS=12 ./omp_code.exe&lt;br /&gt;
This automatically sets the environment variable OMP_NUM_THREADS to 12, but it is reset to its default value after the execution of &amp;quot;omp_code.exe&amp;quot; finished.&lt;br /&gt;
&lt;br /&gt;
Another way to set the number of threads is by changing your environment variable. This example will increment it up to 24 threads and override the default value:&lt;br /&gt;
 $ export OMP_NUM_THREADS=24&lt;br /&gt;
If you simply run your application with &amp;lt;code&amp;gt;$ ./omp_code.exe&amp;lt;/code&amp;gt; next, this value will be used automatically.&lt;br /&gt;
&lt;br /&gt;
=== [[Thread_Pinning|Thread Pinning]] ===&lt;br /&gt;
&lt;br /&gt;
The performance of your application may be improved depending on the distribution of threads. Go [[Thread_Pinning|here]] to learn more about thread pinning in order to minimize the execution time.&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=633</id>
		<title>Ssh keys</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=633"/>
		<updated>2018-04-05T14:43:05Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An ssh key is a way of identifying (authenticating) yourself when connecting to a server per [[ssh]]. A different popular authentication method is via a password.&lt;br /&gt;
&lt;br /&gt;
== Why should I use it?==&lt;br /&gt;
When you connect to a server, authenticating via a password there are two main problems:&lt;br /&gt;
* Someone could bruteforce or guess the password, since many passwords are commonly weak, hard to remember or used for multiple applications and then cracked/leaked.&lt;br /&gt;
* Someone could intercept/crack your password, since it has to be send to the server at some point in some form.&lt;br /&gt;
&lt;br /&gt;
== How-to-use-it ==&lt;br /&gt;
You should start by generating a key pair:&lt;br /&gt;
 $ ssh-keygen -b 4096&lt;br /&gt;
where you can specify the max length of the key up to 16384 bits.&lt;br /&gt;
&lt;br /&gt;
You can then optionally protect your key with a passphrase. (Your key is basically just a file sitting on your computer and a passphrase protects your key, if someone happens to steal/copy that file).&lt;br /&gt;
&lt;br /&gt;
If you did not specify a different file, the key normaly gets generated into the folder &lt;br /&gt;
 ~/.ssh&lt;br /&gt;
with the files &amp;#039;&amp;#039;&amp;#039;id_rsa&amp;#039;&amp;#039;&amp;#039; being your private and &amp;#039;&amp;#039;&amp;#039;id_rsa.pub&amp;#039;&amp;#039;&amp;#039; being your public key.&lt;br /&gt;
&lt;br /&gt;
This public key now has to be copied to the server to the &lt;br /&gt;
 ~/.ssh/authorized_keys&lt;br /&gt;
file. This can be done, by opening an [[ssh]] connection via password and then using an editor (e.g. [[vim]]) to paste the key into the file (creating the &amp;#039;&amp;#039;&amp;#039;.ssh&amp;#039;&amp;#039;&amp;#039; directory if it does not exist):&lt;br /&gt;
 $ mkdir ~/.ssh&lt;br /&gt;
 $ vim ~/.ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
The next time you [[ssh]] to the server, it should use the key and instead of prompting the pass&amp;#039;&amp;#039;&amp;#039;word&amp;#039;&amp;#039;&amp;#039; for the server, prompt for the pass&amp;#039;&amp;#039;&amp;#039;phrase&amp;#039;&amp;#039;&amp;#039; of the key, if you chose to employ one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How-it-works ==&lt;br /&gt;
The basic principle is that of public and private keys. A public key is like an indestructible piggy bank: Everybody can put something (data) into it and nobody can get it back out again. A private key is the key for this. In this way you can distribute all the piggy banks you like and if someone put something in there and sends it back, only you can open it with your private key.&lt;br /&gt;
&lt;br /&gt;
Now since you gave the server the public key, it can encrypt something (say a random number) and only you can decrypt this number, since only you have the private key.&lt;br /&gt;
&lt;br /&gt;
For more detailed information on how this works, head over to the References.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[https://wiki.archlinux.de/title/SSH-Authentifizierung_mit_Schl%C3%BCsselpaaren SSH keys on the archlinux wiki]&lt;br /&gt;
&lt;br /&gt;
[https://medium.com/@vrypan/explaining-public-key-cryptography-to-non-geeks-f0994b3c2d5 Public and private keys easily explained]&lt;br /&gt;
&lt;br /&gt;
[https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process More detailed explanation of the connection and encryption process of ssh]&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=632</id>
		<title>Ssh keys</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=632"/>
		<updated>2018-04-05T14:39:32Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An ssh key is a way of identifying (authenticating) yourself when connecting to a server per [[ssh]]. A different popular authentication method is via a password.&lt;br /&gt;
&lt;br /&gt;
== Why should I use it?==&lt;br /&gt;
When you connect to a server, authenticating via a password there are two main problems:&lt;br /&gt;
* Someone could bruteforce or guess the password, since many passwords are commonly weak, hard to remember or used for multiple applications and then cracked/leaked.&lt;br /&gt;
* Someone could intercept/crack your password, since it has to be send to the server at some point in some form.&lt;br /&gt;
&lt;br /&gt;
== How-to-use-it ==&lt;br /&gt;
You should start by generating a key pair:&lt;br /&gt;
 $ ssh-keygen -b 4096&lt;br /&gt;
where you can specify the max length of the key up to 16384 bits.&lt;br /&gt;
&lt;br /&gt;
You can then optionally protect your key with a passphrase. (Your key is basically just a file sitting on your computer and a passphrase protects your key, if someone happens to steal/copy that file).&lt;br /&gt;
&lt;br /&gt;
If you did not specify a different file, the key normaly gets generated into the folder &lt;br /&gt;
 ~/.ssh&lt;br /&gt;
with the files &amp;#039;&amp;#039;&amp;#039;id_rsa&amp;#039;&amp;#039;&amp;#039; being your private and &amp;#039;&amp;#039;&amp;#039;id_rsa.pub&amp;#039;&amp;#039;&amp;#039; being your public key.&lt;br /&gt;
&lt;br /&gt;
This public key now has to be copied to the server to the &lt;br /&gt;
 ~/.ssh/authorized_keys&lt;br /&gt;
file. This can be done, by opening an [[ssh]] connection via password and then using an editor (e.g. [[vim]]) to paste the key into the file (creating the &amp;#039;&amp;#039;&amp;#039;.ssh&amp;#039;&amp;#039;&amp;#039; directory if it does not exist):&lt;br /&gt;
 $ mkdir ~/.ssh&lt;br /&gt;
 $ vim ~/.ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
The next time you [[ssh]] to the server, it should use the key and instead of prompting the pass&amp;#039;&amp;#039;&amp;#039;word&amp;#039;&amp;#039;&amp;#039; for the server, prompt for the pass&amp;#039;&amp;#039;&amp;#039;phrase&amp;#039;&amp;#039;&amp;#039; of the key, if you chose to employ one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How-it-works ==&lt;br /&gt;
The basic principle is that of public and private keys. A public key is like an indestructible piggy bank: Everybody can put something (data) into it and nobody can get it back out again. A private key is the key for this. In this way you can distribute all the piggy banks you like and if someone put something in there and sends it back, only you can open it with your private key.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An [[ssh]] connection is encrypted with a symmetric encryption using a single-use sessesion key, negotiated with a Diffie-Hellman exchange. Once the connection is established, the server prompts for authentication of the client (you). Instead of transmitting a hash of your password, your program now tells the server, it wants to use the key. The server then uses the public key, you gave it, to encrypt a random number and you can then decrypt that with your private key. You send the number back and the server knows, you are in posession of the private key and grants you the corresponding privileges.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[https://wiki.archlinux.de/title/SSH-Authentifizierung_mit_Schl%C3%BCsselpaaren SSH keys on the archlinux wiki]&lt;br /&gt;
&lt;br /&gt;
[https://medium.com/@vrypan/explaining-public-key-cryptography-to-non-geeks-f0994b3c2d5 Public and private keys easily explained]&lt;br /&gt;
&lt;br /&gt;
[https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process More detailed explanation of the connection and encryption process of ssh]&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=631</id>
		<title>Ssh keys</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=631"/>
		<updated>2018-04-05T14:13:52Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An ssh key is a way of identifying (authenticating) yourself when connecting to a server per [[ssh]]. A different popular authentication method is via a password.&lt;br /&gt;
&lt;br /&gt;
== Why should I use it?==&lt;br /&gt;
When you connect to a server, authenticating via a password there are two main problems:&lt;br /&gt;
* Someone could intercept/crack your password, since it has to be send to the server at some point in some form.&lt;br /&gt;
* Someone could bruteforce or guess the password, since many passwords are commonly weak, hard to remember or used for multiple applications and then cracked/leaked.&lt;br /&gt;
&lt;br /&gt;
== How-to-use-it ==&lt;br /&gt;
You should start by generating a key pair:&lt;br /&gt;
 $ ssh-keygen -b 4096&lt;br /&gt;
where you can specify the max length of the key up to 16384 bits.&lt;br /&gt;
&lt;br /&gt;
You can then optionally protect your key with a passphrase. (Your key is basically just a file sitting on your computer and a passphrase protects your key, if someone happens to steal/copy that file).&lt;br /&gt;
&lt;br /&gt;
If you did not specify a different file, the key normaly gets generated into the folder &lt;br /&gt;
 ~/.ssh&lt;br /&gt;
with the files &amp;#039;&amp;#039;&amp;#039;id_rsa&amp;#039;&amp;#039;&amp;#039; being your private and &amp;#039;&amp;#039;&amp;#039;id_rsa.pub&amp;#039;&amp;#039;&amp;#039; being your public key.&lt;br /&gt;
&lt;br /&gt;
This public key now has to be copied to the server to the &lt;br /&gt;
 ~/.ssh/authorized_keys&lt;br /&gt;
file. This can be done, by opening an [[ssh]] connection via password and then using an editor (e.g. [[vim]]) to paste the key into the file (creating the &amp;#039;&amp;#039;&amp;#039;.ssh&amp;#039;&amp;#039;&amp;#039; directory if it does not exist):&lt;br /&gt;
 $ mkdir ~/.ssh&lt;br /&gt;
 $ vim ~/.ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
The next time you [[ssh]] to the server, it should use the key and instead of prompting the password for the server, prompt for the passphrase of the key, if you chose to employ one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== how-it-works ==&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=630</id>
		<title>Ssh keys</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Ssh_keys&amp;diff=630"/>
		<updated>2018-04-05T14:02:28Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: Created page with &amp;quot;An ssh key is a way of identifying (authenticating) yourself when connecting to a server per ssh. A different popular authentication method is via a password.  == Why shou...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An ssh key is a way of identifying (authenticating) yourself when connecting to a server per [[ssh]]. A different popular authentication method is via a password.&lt;br /&gt;
&lt;br /&gt;
== Why should I use it?==&lt;br /&gt;
When you connect to a server, authenticating via a password there are two main problems:&lt;br /&gt;
* Someone could intercept/crack your password, since it has to be send to the server at some point in some form.&lt;br /&gt;
* Someone could bruteforce or guess the password, since many passwords are commonly weak, hard to remember or used for multiple applications and then cracked/leaked.&lt;br /&gt;
&lt;br /&gt;
== How-to-use-it ==&lt;br /&gt;
You should start by generating a key pair:&lt;br /&gt;
 $ ssh-keygen -b 4096&lt;br /&gt;
where you can specify the max length of the key up to 16384 bits.&lt;br /&gt;
&lt;br /&gt;
You can then optionally protect your key with a passphrase. (Your key is basically just a file sitting on your computer and a passphrase protects your key, if someone happens to steal/copy that file).&lt;br /&gt;
&lt;br /&gt;
If you did not specify a different file, the key normaly gets generated to &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== how-it-works ==&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=SSH&amp;diff=629</id>
		<title>SSH</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=SSH&amp;diff=629"/>
		<updated>2018-04-05T13:37:21Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
Secure Shell (ssh) is a [[shell|commandline]]-tool for logging into a different computer over some network (e.g. the internet) and for executing commands on that machine, as if one would be sitting there instead of the own computer. So you use ssh to build a connection to the other computer and can then interact with it, using it&amp;#039;s [[shell]]. It is commonly used to [[Getting_Started#Log-in_or_.22How-to-now-actually-connect-to-the-supercomputer.22|log-in]] to the [[Nodes#Log-In|frontent Nodes]] of a supercomputer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
OpenSSH is the standard ssh client on Linux and MAC and it is freely available for everyone. On Windows you can use Putty or the Gitbash (coming with ssh) which is also free.&lt;br /&gt;
&lt;br /&gt;
Sometimes this access is restricted, so you can only connect, when you are within the university/facility and it&amp;#039;s Network. To still access the Log-in Nodes externally, one can &amp;#039;pretend to be inside the network&amp;#039; by using a [[VPN|Virtual Private Network (VPN)]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Logging in with OpenSSH on a Linux Cluster is done with:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -l &amp;lt;login&amp;gt; &amp;lt;cluster&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here login is your user name and [[Nodes#Log-In|frontent Nodes]] is one of the frontend nodes of the system.&lt;br /&gt;
&lt;br /&gt;
If you need to start graphical applications you need to enable X11 forwarding/X11 tunneling by your ssh client. &lt;br /&gt;
For OpenSSH this is done by giving it the &amp;quot;-X&amp;quot; command line option:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -X -l &amp;lt;login&amp;gt; &amp;lt;cluster&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which might or might not work depending on the your Operating System.&lt;br /&gt;
&lt;br /&gt;
For more Security and easy of use you should consider setting up authentication via [[ssh_keys|ssh keys]]. &lt;br /&gt;
&lt;br /&gt;
== FAQs ==&lt;br /&gt;
[https://wickie.hlrs.de/platforms/index.php/Secure_Shell_ssh slightly longer description]&lt;br /&gt;
&lt;br /&gt;
[https://www.freebsd.org/cgi/man.cgi?query=ssh&amp;amp;sektion=1 ssh manpage]&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=MediaWiki:Sidebar&amp;diff=628</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=MediaWiki:Sidebar&amp;diff=628"/>
		<updated>2018-04-05T13:36:54Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
* SEARCH&lt;br /&gt;
&lt;br /&gt;
* Basics&lt;br /&gt;
** Getting_Started|Getting Started&lt;br /&gt;
** Shell|Shell&lt;br /&gt;
** ssh|ssh&lt;br /&gt;
** File_Transfer|File Transfer&lt;br /&gt;
** Modules|Modules&lt;br /&gt;
&lt;br /&gt;
* General Info&lt;br /&gt;
** Access|Access&lt;br /&gt;
** Nodes|Nodes&lt;br /&gt;
** Schedulers|Schedulers&lt;br /&gt;
** Site-specific documentation|Site-specific docu&lt;br /&gt;
** Support|Support&lt;br /&gt;
&lt;br /&gt;
* HPC-User&lt;br /&gt;
** Compiler|Compiler&lt;br /&gt;
** Parallel_Programming|Parallelization&lt;br /&gt;
** How_to_Use_OpenMP|OpenMP Usage&lt;br /&gt;
** How_to_Use_MPI|MPI Usage&lt;br /&gt;
** ssh_keys|ssh Keys&lt;br /&gt;
&lt;br /&gt;
* HPC-Dev&lt;br /&gt;
** Performance_Engineering|Performance_Engineering&lt;br /&gt;
** OpenMP|OpenMP&lt;br /&gt;
** MPI|MPI&lt;br /&gt;
&lt;br /&gt;
* HPC-Admin&lt;br /&gt;
** Setting_up_Monitoring|Setting_up_LMS&lt;br /&gt;
&lt;br /&gt;
* Optimization_tips&lt;br /&gt;
** Load_Balancing|Load Balancing&lt;br /&gt;
** Thread_Pinning|Thread Pinning&lt;br /&gt;
&lt;br /&gt;
* FAQs&lt;br /&gt;
** Shell|Unix&lt;br /&gt;
** Scheduler|Scheduler&lt;br /&gt;
** Wiki|Wiki&lt;br /&gt;
** Sample_Page|Sample_Page&lt;br /&gt;
&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Getting_Started&amp;diff=627</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Getting_Started&amp;diff=627"/>
		<updated>2018-04-05T13:17:53Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== [[Access|Access]] or &amp;quot;How-to-be-allowed-onto-the-supercomputer&amp;quot; ==&lt;br /&gt;
Depending on the specific supercomputer, one has either to register to get a user account or write a project proposal and apply for computing resources that way. The respective pages are linked in [[Access|this overview]].&lt;br /&gt;
&lt;br /&gt;
After this is done and login credentials are supplied, one can proceed to&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Nodes#Log-In|Log-in]] or &amp;quot;How-to-now-actually-connect-to-the-supercomputer&amp;quot; ==&lt;br /&gt;
Most HPC Systems are unix-based environments with [[shell]] (commandline) access.&lt;br /&gt;
&lt;br /&gt;
To log in, one usually uses [[ssh]] to reach the respective [[Nodes#Log-In|Log-in Nodes]] (Computers reserved for people just like you that want to connect to the supercomputer). Sometimes this access is restricted, so you can only connect, when you are within the university/facility and it&amp;#039;s Network. To still access the Log-in Nodes externally, one can &amp;#039;pretend to be inside the network&amp;#039; by using a [[VPN|Virtual Private Network (VPN)]].&lt;br /&gt;
&lt;br /&gt;
Once there, the user can interact with the system and run (small) programs to generally test the system/software.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[File_Transfer|File Transfer]] or How-to-get-your-data-onto-or-off-the-supercomputer ==&lt;br /&gt;
To get your data (files) onto the supercomputer or back to your local machine, there are usually different ways. Sometimes there are computers specifically reserved for this purpose called [[Nodes#Copy_Nodes|copy Nodes]]&lt;br /&gt;
&lt;br /&gt;
Please use these nodes to copy your data to or off the supercomputer, if available, since you will get a better/faster connection and disturb other users less. Also the tools mentioned below might only work on those nodes. If there are no dedicated copy nodes, you can usually use the [[Nodes#Log-In|Log-in Nodes]] for this purpose&lt;br /&gt;
&lt;br /&gt;
Commonly used and widely supported copying tools are [[rsync]] which mirrors directories (folders) between the supercomputer and your local machine. [[scp]] which is useful for a few single files or specified file-lists, and lastly the commonly used [[ftp]] or the encrypted version sftp (or ftps).&lt;br /&gt;
A little bit more information can be found in the [[File_Transfer|File Transfer]] article.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Scheduler|Schedulers]] or &amp;quot;How-To-Run-Applications-on-a-supercomputer&amp;quot; ==&lt;br /&gt;
To run any significant program or workload on a supercomputer, generally [[Scheduler|schedulers]] are employed. Except from the above-mentioned Login Nodes there are usually far more Backend Nodes (Computers exclusively reserved for computing, where you can not directly connect to). A programm called [[Scheduler|scheduler]] decides who gets how many of those for what time. Please use the [[Scheduler|scheduler]] for everything which is not a simple small test, which only runs for a few minutes. More than 98% of the power of a supercomputer can only be accessed via the [[Scheduler|scheduler]] and you will block the Login-Nodes for everybody when you run your calculations there :/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When you log in into a supercomputer, you can run commands on the Log-in nodes interactive. You type, you hit return, the command gets executed. [[Scheduler|Schedulers]] works different: You submit a series of commands (in form of a file) and tell it, how long you think these commands will take (also in the file) and how much resources it will approximately need in terms of:&lt;br /&gt;
&lt;br /&gt;
* time: If the specified time runs out, before your application finishes and exits, it will be terminated by the scheduler.&lt;br /&gt;
* compute resources:   how many cpus (&amp;#039;calculation thingies&amp;#039;), sockets (&amp;#039;cpu-houses&amp;#039;) and nodes (&amp;#039;computers&amp;#039;)&lt;br /&gt;
* memory resources:    how much RAM (&amp;#039;very fast memory, similar to the few books you have at home&amp;#039;)&lt;br /&gt;
* how to actually execute your application&lt;br /&gt;
&lt;br /&gt;
and the [[Scheduler|scheduler]] then runs this series of commands when there is a part of the supercomputer free, which fits your requirements. This is usually delayed (sometimes you have to wait a day or two) and not instant. Furthermore you can not change the series of commands, but just terminate &amp;#039;job&amp;#039; and submit a new one in case of an error.&lt;br /&gt;
&lt;br /&gt;
The file specifying this series of commands and the requirements is called a [[Jobscript]] and specific/different depending on the scheduler. When you have this [[Jobscript|jobscript]] ready with the help of [[jobscript-examples]], colleagues or your local [[Support]], you can submit it to the respective [[Schedulers|scheduler of your facility]]. The Scheduler then waits until a set of nodes (computers) are free and then allocated those to compute your &amp;#039;job&amp;#039;. Sometimes there is (an optional) Email notification on when your job starts/finishes computation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The requirements you specified obviously have to fit within the boundaries of the system of your facility. If you ask for more than there is, chances are, the scheduler will take your job and wait until you buy and install the missing hardware in your facility -&amp;gt; probably forever. Information over the available hardware can be found in the [https://gauss-allianz.de/de/hpc-ecosystem Overview of the Gauss Allianz] or the [[Site-specific_documentation|documentation of the different sites]]. You can find more information about [[Getting_Started#Parallelizing_or_.22How-To-Use-More-Than-One-Core.22|parallelizing programs here]]. Also there is an [[Schedulers|Overview of the schedulers of the different sites]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Modules|Modules]] or &amp;quot;How-To-Use-Software-Without-installing-everything-yourself&amp;quot; ==&lt;br /&gt;
Since a lot of applications rely on 3rd party software, there is a program on most supercomputers, called the [[Modules|Module system]]. With this system, other software, like compilers or special math libraries, are easily loadable and usable. Depending on the institution, different modules might be available, but there are usually common ones like the [[Compiler#Intel_Compiler|Intel]] or [[Compiler#Gnu_Compiler_Collection|GCC]] [[Compiler|Compilers]].&lt;br /&gt;
&lt;br /&gt;
A few common commands, to enter into the supercomputer commandline and talk to the module system, are &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 40%;&amp;quot;&lt;br /&gt;
| module list || lists loaded modules&lt;br /&gt;
|-&lt;br /&gt;
| module avail || lists available (loadable) modules&lt;br /&gt;
|-&lt;br /&gt;
| module load/unload x || loads/unloads modul x&lt;br /&gt;
|-&lt;br /&gt;
| module switch x y || switches out module x for module y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you recurrently need lots of modules, this loading can be automated with an [[sh-file]], so that you just have to execute the file once and it loads all modules, you need.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Parallel_Programming|Parallel Programming]] or &amp;quot;How-To-Use-More-Than-One-Core&amp;quot; ==&lt;br /&gt;
Currently development of computers is at a point, where you can not just make a processor run faster, because the semiconductor physics simply dont work that way. Therefore the current solution is to split the work into multiple, ideally independent parts, which are then executed in parallel. Similar to cleaning your house, where everybody takes care of a few rooms, on a supercomputer this is usually done with parallel programming paradigms like [[OpenMP|Open Multi-Processing (OpenMP)]] or [[MPI|Message Passing Interface (MPI)]]. However like the fact that you only have one vacuum cleaner in the whole house which not everybody can use at the same time, there are limits on how fast you can get, even with a big number of processing units/cpus/cores (analogous to people in the metaphor) working on your problem (cleaning the house) in parallel.&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Jobscript-examples&amp;diff=626</id>
		<title>Jobscript-examples</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Jobscript-examples&amp;diff=626"/>
		<updated>2018-04-05T13:10:21Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These examples are very minimal and intended to give a rough overview of the functionality of [[Jobscript|jobscripts]]. They contain comments starting with &amp;quot;###&amp;quot; that explain the code.&lt;br /&gt;
* [[LSF#Jobscript_Examples|LSF]]&lt;br /&gt;
* [[SLURM#Jobscript_Examples|SLURM]]&lt;br /&gt;
* [[Torque#Jobscript_Examples|Torque]]&lt;br /&gt;
&lt;br /&gt;
If you&amp;#039;re not sure, go to [[Schedulers|this overview]] to figure out, which [[scheduler]] is used in your facility.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[https://doc.itc.rwth-aachen.de/display/CC/Example+scripts More detailled LSF examples]&lt;br /&gt;
&lt;br /&gt;
[https://user.cscs.ch/getting_started/running_jobs/jobscript_generator/#slurm-jobscript-generator SLURM jobscript generator]&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Scheduling_Basics&amp;diff=625</id>
		<title>Scheduling Basics</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Scheduling_Basics&amp;diff=625"/>
		<updated>2018-04-05T13:08:38Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
[[File:Batch_System.PNG|thumb|500px|Schematic of how users can access the batch system]]&lt;br /&gt;
&lt;br /&gt;
A scheduler is software that controls a batch system. Such a batch system makes up the majority of a cluster (about 98%) and is the most powerful and power-consuming part. This is where the big applications are intended to run, where the computation requires a lot of memory and time for computation.&lt;br /&gt;
&lt;br /&gt;
Such a batch system can be viewed as the counterpart of the [[Nodes#Log-in|login-nodes]]. A user can simply log onto those so called &amp;quot;front-end&amp;quot; nodes and type in commands that are immediately executed on the same machine.&lt;br /&gt;
A batch system, however, consists of &amp;quot;back-end&amp;quot; nodes that are not directly accessible for the users. In order to run an application on there, the user has to ask for time and memory resources and specify the application inside a [[Jobscript|jobscript]].&lt;br /&gt;
&lt;br /&gt;
This [[Jobscript|jobscript]] can be submitted to the batch system, that is, sending the [[Jobscript|jobscript]] from the front-end nodes to the back-end nodes. Any job will first be added to a queue. Based on the resources the job needs, the scheduler will decide when the job will leave the queue, and on which part of the back-end nodes it will run.&lt;br /&gt;
&lt;br /&gt;
Be careful about the resources you request and know your system&amp;#039;s limits:&lt;br /&gt;
If you demand less time than your job actually needs to finish, your scheduler will simply kill the job once the given time is up. Your job might be stuck in the queue forever, if you specify more memory than actually available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
Generally speaking, every scheduler has three main goals:&lt;br /&gt;
* minimize the time between the job submission and finishing the job: no job should stay in the queue for extensive periods of time&lt;br /&gt;
* optimize CPU utilization: the CPUs of the supercomputer are one of the core resources for a big application; therefore, there should only be few time slots where a CPU is not working&lt;br /&gt;
* maximize the job throughput: manage as many jobs per time unit as possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Illustration ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Scheduler.PNG|thumb|500px|Schematic of how a scheduler may distribute jobs onto nodes]]&lt;br /&gt;
&lt;br /&gt;
Assuming that the batch system you are using consists of 6 nodes, this is how the scheduler could place the nine jobs in the queue onto the available nodes.&lt;br /&gt;
The goal is to eliminate the free areas, which, in this case, are nodes that are not busy at that moment - that would be a waste of resources. &lt;br /&gt;
Therefore, the jobs may not be distributed among the nodes in the same order in which they first entered the queue.&lt;br /&gt;
The space that a job take up is determined by the time and number of nodes required for executing it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scheduling Algorithms ==&lt;br /&gt;
&lt;br /&gt;
There two very basic strategies that schedulers can use to determine which job to run next. Note that modern schedulers do not stick strictly to just one of these algorithms, but rather employ a combination of the two.&lt;br /&gt;
Besides, there are many more aspects a scheduler has to take into consideration, e. g. the current system load.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;First Come, First Serve&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Jobs are run in the exact same order in which they first enter the queue. The advantage is that every job will definitely be run, however, very tiny jobs might wait for an inadequately long time compared to their actual execution time.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Shortest Job First&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Based on the execution time and memory declared in the [[Jobscript|jobscript]], the scheduler can roughly estimate how long it will take to execute the job. Then, the jobs are ranked by that estimated time.&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=HPC_Wiki&amp;diff=610</id>
		<title>HPC Wiki</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=HPC_Wiki&amp;diff=610"/>
		<updated>2018-04-05T09:08:26Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to HPC Wiki of the ProPE Project.&lt;br /&gt;
&lt;br /&gt;
This is currently work-in-progress of a site independant HPC documentation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rubriken ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Getting_Started]] is a basic guide for first-time users. It covers a wide range from access and login, over system-independant concepts of unix systems, and data transfers.&lt;br /&gt;
&lt;br /&gt;
[[FAQs]]&lt;br /&gt;
&lt;br /&gt;
== Todo ==&lt;br /&gt;
Create pages with help of the [[Sample_Page|Sample Page]]&lt;br /&gt;
&lt;br /&gt;
Miriam startet die Toolbox (basics docu, Tips &amp;amp; Tricks):&lt;br /&gt;
&lt;br /&gt;
[[make]], [[cmake]], [[keys]], [[compiler]], [[software-tools]], [[Modules]], [[vi/vim]],  [[screen/tmux]], [[ssh]] [[python/pip]], [[scp]], [[rsync]], [[git]], [[ps]], [[unix-primer]], [[shell]], [[chmod]], [[umask]], [[tar]], [[sh-file]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jan macht [[make]] &amp;amp; [[Likwid]]&lt;br /&gt;
&lt;br /&gt;
Robert macht [[Vampir]], [[ScoreP]]&lt;br /&gt;
&lt;br /&gt;
Joachim mach eventuell [[Must]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HPC-Pages:&lt;br /&gt;
[[PE-Process]], [[Hardware]], [[correctness checking]], [[software]], [[Beantragung]], [[Site-uebersicht (tabellarisch)]], [[measurement-tools]], [[likwid]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Struktur:&lt;br /&gt;
&lt;br /&gt;
Hirachisch, Prozess/Workflowbasiert, tagging der Seiten fuer Suche, Nutzerdifferenzierung auf der Startseite&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=Getting_Started&amp;diff=608</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=Getting_Started&amp;diff=608"/>
		<updated>2018-04-05T09:06:57Z</updated>

		<summary type="html">&lt;p&gt;Ds019135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== [[Access|Access]] or &amp;quot;How-to-be-allowed-onto-the-supercomputer&amp;quot; ==&lt;br /&gt;
Depending on the specific supercomputer, one has either to register to get a user account or write a project proposal and apply for computing resources that way. The respective pages are linked in [[Access|this overview]].&lt;br /&gt;
&lt;br /&gt;
After this is done and login credentials are supplied, one can proceed to&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Nodes#Log-In|Log-in]] or &amp;quot;How-to-now-actually-connect-to-the-supercomputer&amp;quot; ==&lt;br /&gt;
Most HPC Systems are unix-based environments with [[shell]] (commandline) access.&lt;br /&gt;
&lt;br /&gt;
To log in, one usually uses [[ssh]] to reach the respective [[Nodes#Log-In|Log-in Nodes]] (Computers reserved for people just like you that want to connect to the supercomputer). Sometimes this access is restricted, so you can only connect, when you are within the university/facility and it&amp;#039;s Network. To still access the Log-in Nodes externally, one can &amp;#039;pretend to be inside the network&amp;#039; by using a [[VPN|Virtual Private Network (VPN)]].&lt;br /&gt;
&lt;br /&gt;
Once there, the user can interact with the system and run (small) programs to generally test the system/software.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[File_Transfer|File Transfer]] or How-to-get-your-data-onto-or-off-the-supercomputer ==&lt;br /&gt;
To get your data (files) onto the supercomputer or back to your local machine, there are usually different ways. Sometimes there are computers specifically reserved for this purpose called [[Nodes#Copy_Nodes|copy Nodes]]&lt;br /&gt;
&lt;br /&gt;
Please use these nodes to copy your data to or off the supercomputer, if available, since you will get a better/faster connection and disturb other users less. Also the tools mentioned below might only work on those nodes. If there are no dedicated copy nodes, you can usually use the [[Nodes#Log-In|Log-in Nodes]] for this purpose&lt;br /&gt;
&lt;br /&gt;
Commonly used and widely supported copying tools are [[rsync]] which mirrors directories (folders) between the supercomputer and your local machine. [[scp]] which is useful for a few single files or specified file-lists, and lastly the commonly used [[ftp]] or the encrypted version sftp (or ftps).&lt;br /&gt;
A little bit more information can be found in the [[File_Transfer|File Transfer]] article.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Schedulers|Schedulers]] or &amp;quot;How-To-Run-Applications-on-a-supercomputer&amp;quot; ==&lt;br /&gt;
To run any significant program or workload on a supercomputer, generally schedulers are employed. Except from the above-mentioned Login Nodes there are usually far more Backend Nodes (Computers exclusively reserved for computing, where you can not directly connect to). A programm called scheduler decides who gets how many of those for what time. Please use the scheduler for everything which is not a simple small test, which only runs for a few minutes. More than 98% of the power of a supercomputer can only be accessed via the scheduler and you will block the Login-Nodes for everybody when you run your calculations there :/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When you log in, you can run commands on the Log-in nodes interactive. You type, you hit return, the command gets executed. Schedulers works different: You submit a series of commands (in form of a file) and tell it, how long you think these commands will take (also in the file) and how much resources it will approximately need in terms of:&lt;br /&gt;
&lt;br /&gt;
* time: If the specified time runs out, before your application finishes and exits, it will be terminated by the scheduler.&lt;br /&gt;
* compute resources:   how many cpus (&amp;#039;calculation thingies&amp;#039;), sockets (&amp;#039;cpu-houses&amp;#039;) and nodes (&amp;#039;computers&amp;#039;)&lt;br /&gt;
* memory resources:    how much RAM (&amp;#039;very fast memory, similar to the few books you have at home&amp;#039;)&lt;br /&gt;
* how to actually execute your application&lt;br /&gt;
&lt;br /&gt;
and the scheduler then runs this series of commands when there is a part of the supercomputer free, which fits your requirements. This is usually delayed (sometimes you have to wait a day or two) and not instant. Furthermore you can not change the series of commands, but just terminate &amp;#039;job&amp;#039; and submit a new one in case of an error.&lt;br /&gt;
&lt;br /&gt;
The file specifying this series of commands and the requirements is called a [[Jobscript]] and specific/different depending on the scheduler. When you have this jobscript ready with the help of [[jobscript-examples]], colleagues or your local [[Support]], you can submit it to the respective [[Scheduler]] of your facility. The Scheduler then waits until a set of nodes (computers) are free and then allocated those to compute your &amp;#039;job&amp;#039;. Sometimes there is (an optional) Email notification on when your job starts/finishes computation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The requirements you specified obviously have to fit within the boundaries of the system of your facility. If you ask for more than there is, chances are, the scheduler will take your job and wait until you buy and install the missing hardware in your facility -&amp;gt; probably forever. Information over the available hardware can be found in the [https://gauss-allianz.de/de/hpc-ecosystem Overview of the Gauss Allianz] or the [[Site-specific_documentation|documentation of the different sites]]. You can find more information about [[Getting_Started#Parallelizing_or_.22How-To-Use-More-Than-One-Core.22|parallelizing programs here]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Modules|Modules]] or &amp;quot;How-To-Use-Software-Without-installing-everything-yourself&amp;quot; ==&lt;br /&gt;
Since a lot of applications rely on 3rd party software, there is a program on most supercomputers, called the [[Modules|Module system]]. With this system, other software, like compilers or special math libraries, are easily loadable and usable. Depending on the institution, different modules might be available, but there are usually common ones like the [[Compiler#Intel_Compiler|Intel]] or [[Compiler#Gnu_Compiler_Collection|GCC]] [[Compiler|Compilers]].&lt;br /&gt;
&lt;br /&gt;
A few common commands, to enter into the supercomputer commandline and talk to the module system, are &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 40%;&amp;quot;&lt;br /&gt;
| module list || lists loaded modules&lt;br /&gt;
|-&lt;br /&gt;
| module avail || lists available (loadable) modules&lt;br /&gt;
|-&lt;br /&gt;
| module load/unload x || loads/unloads modul x&lt;br /&gt;
|-&lt;br /&gt;
| module switch x y || switches out module x for module y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you recurrently need lots of modules, this loading can be automated with an [[sh-file]], so that you just have to execute the file once and it loads all modules, you need.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Parallel_Programming|Parallel Programming]] or &amp;quot;How-To-Use-More-Than-One-Core&amp;quot; ==&lt;br /&gt;
Currently development of computers is at a point, where you can not just make a processor run faster, because the semiconductor physics simply dont work that way. Therefore the current solution is to split the work into multiple, ideally independent parts, which are then executed in parallel. Similar to cleaning your house, where everybody takes care of a few rooms, on a supercomputer this is usually done with parallel programming paradigms like [[OpenMP|Open Multi-Processing (OpenMP)]] or [[MPI|Message Passing Interface (MPI)]]. However like the fact that you only have one vacuum cleaner in the whole house which not everybody can use at the same time, there are limits on how fast you can get, even with a big number of processing units/cpus/cores (analogous to people in the metaphor) working on your problem (cleaning the house) in parallel.&lt;/div&gt;</summary>
		<author><name>Ds019135</name></author>
	</entry>
</feed>