<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>HPCwiki  - Recent changes [en]</title>
		<link>https://wiki.anunna.wur.nl/Special:RecentChanges</link>
		<description>Track the most recent changes to the wiki in this feed.</description>
		<language>en</language>
		<generator>MediaWiki 1.45.3</generator>
		<lastBuildDate>Sun, 09 Aug 2026 12:55:00 GMT</lastBuildDate>
		<item>
			<title>OpenMPI</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=OpenMPI&amp;diff=3038&amp;oldid=3036</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=OpenMPI&amp;diff=3038&amp;oldid=3036</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:55, 6 August 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l92&quot;&gt;Line 92:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 92:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;module load 2024 foss/2024a&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;module load 2024 foss/2024a&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;export OMPI_MCA_pml=cm&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;export OMPI_MCA_mtl=ofi&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;export FI_PROVIDER=psm2&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;export OMPI_MCA_btl=self,sm&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;mpirun -np ${SLURM_NTASKS} ./my_mpi_program&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;mpirun -np ${SLURM_NTASKS} ./my_mpi_program&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l140&quot;&gt;Line 140:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 145:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;module load 2024 foss/2024a&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;module load 2024 foss/2024a&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;mpirun --mca pml cm --mca mtl ofi --mca mtl_ofi_provider_include psm2 \&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;mpirun --mca pml cm --mca mtl ofi &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;       &lt;/ins&gt;--mca mtl_ofi_provider_include psm2 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;       --mca btl self,sm &lt;/ins&gt;\&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        -x FI_PROVIDER=psm2 \&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        -x FI_PROVIDER=psm2 \&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        -np ${SLURM_NTASKS} ./my_mpi_program &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;--input data.nc&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        -np ${SLURM_NTASKS} ./my_mpi_program&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Note some of the settings can be done by OpenMPI&#039;s own tags. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Exporting variables to the other nodes: the &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt; flag ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Exporting variables to the other nodes: the &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt; flag ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt; hands a named environment variable to every rank:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt; hands a named environment variable to every rank&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, including those in other nodes &lt;/ins&gt;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l155&quot;&gt;Line 155:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 162:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;-x VAR=value&amp;lt;/code&amp;gt; sets it; &amp;lt;code&amp;gt;-x VAR&amp;lt;/code&amp;gt; passes through whatever value it already has. Use one &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt; per variable.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;-x VAR=value&amp;lt;/code&amp;gt; sets it; &amp;lt;code&amp;gt;-x VAR&amp;lt;/code&amp;gt; passes through whatever value it already has. Use one &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt; per variable.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;With OpenMPI 5 inside a Slurm job, you usually do not need it.&#039;&#039;&#039; &#039;&#039;&#039;Though, do not read that as universal,  it depends on the version.&#039;&#039;&#039; It was verified for OpenMPI 5.0.7, in the &amp;lt;code&amp;gt;2025&amp;lt;/code&amp;gt; bucket. The &amp;lt;code&amp;gt;2023&amp;lt;/code&amp;gt; bucket carries &#039;&#039;&#039;OpenMPI 4.1.5&#039;&#039;&#039;, which &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;predates the PRRTE launcher and has &lt;/del&gt;not &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;been tested here&lt;/del&gt;; historically variables did have to be passed by hand. And in a hostfile launch over &amp;lt;code&amp;gt;ssh&amp;lt;/code&amp;gt;, rather than inside a Slurm allocation, remote shells start clean and nothing travels at all.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;With OpenMPI 5 inside a Slurm job, you usually do not need it.&#039;&#039;&#039; &#039;&#039;&#039;Though, do not read that as universal,  it depends on the version.&#039;&#039;&#039; It was verified for OpenMPI 5.0.7, in the &amp;lt;code&amp;gt;2025&amp;lt;/code&amp;gt; bucket. The &amp;lt;code&amp;gt;2023&amp;lt;/code&amp;gt; bucket carries &#039;&#039;&#039;OpenMPI 4.1.5&#039;&#039;&#039;, which &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;may &lt;/ins&gt;not &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;propagate your environment automatically&lt;/ins&gt;; historically variables did have to be passed by hand. And in a hostfile launch over &amp;lt;code&amp;gt;ssh&amp;lt;/code&amp;gt;, rather than inside a Slurm allocation, remote shells start clean and nothing travels at all.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;So use &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt; if you are on the &amp;lt;code&amp;gt;2023&amp;lt;/code&amp;gt; bucket, if you are launching outside Slurm, or if you simply would rather not depend on any of the above. It costs nothing when it turns out to be redundant, and it is the one form that works in every case.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;So use &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt; if you are on the &amp;lt;code&amp;gt;2023&amp;lt;/code&amp;gt; bucket, if you are launching outside Slurm, or if you simply would rather not depend on any of the above. It costs nothing when it turns out to be redundant, and it is the one form that works in every case.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Thu, 06 Aug 2026 14:55:29 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:OpenMPI</comments>
		</item>
		<item>
			<title>Software</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Software&amp;diff=3037&amp;oldid=3033</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Software&amp;diff=3037&amp;oldid=3033</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:48, 6 August 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Apptainer]] — containers&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Apptainer]] — containers&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[OpenMPI]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[OpenMPI]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[IntelMPI]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Licensed Software]] — software that needs a licence&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Licensed Software]] — software that needs a licence&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Thu, 06 Aug 2026 14:48:30 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Software</comments>
		</item>
		<item>
			<title>OpenMPI</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=OpenMPI&amp;diff=3036&amp;oldid=3032</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=OpenMPI&amp;diff=3036&amp;oldid=3032</guid>
			<description>&lt;p&gt;Add recommended environment section&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:46, 6 August 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l67&quot;&gt;Line 67:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 67:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If none of those settles it, prefer the newest bucket your software is available in: the OpenMPI it carries is the one that has had the most attention here.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If none of those settles it, prefer the newest bucket your software is available in: the OpenMPI it carries is the one that has had the most attention here.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Recommended Environment ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;syntaxhighlight lang=&quot;bash&quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;export OMPI_MCA_pml=cm&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;export OMPI_MCA_mtl=ofi&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;export FI_PROVIDER=psm2&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;export OMPI_MCA_btl=self,sm #substitute sm with vader for v4&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Running on a single node ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Running on a single node ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Thu, 06 Aug 2026 14:46:43 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:OpenMPI</comments>
		</item>
		<item>
			<title>IntelMPI</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=IntelMPI&amp;diff=3035&amp;oldid=3034</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=IntelMPI&amp;diff=3035&amp;oldid=3034</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:46, 5 August 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l44&quot;&gt;Line 44:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 44:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;module list           # everything loaded, dependencies included&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;module list           # everything loaded, dependencies included&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;mpirun -version       # which Intel MPI is on your PATH&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;mpirun -version       # which Intel MPI is on your PATH&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;If your software has its own module, load &#039;&#039;&#039;that&#039;&#039;&#039; instead and let it pull the matching MPI in as a dependency. A package built with this toolchain has a name ending in &amp;lt;code&amp;gt;-intel-2024a&amp;lt;/code&amp;gt; or similar, which tells you what you are getting:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;syntaxhighlight lang=&quot;bash&quot;&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;module load 2024&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;module load &amp;lt;YourSoftware&amp;gt;/&amp;lt;version&amp;gt;    # Intel MPI arrives as a dependency&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l138&quot;&gt;Line 138:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 131:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;-genv&amp;lt;/code&amp;gt; is still the habit worth keeping&amp;#039;&amp;#039;&amp;#039; for anything the run depends on, as in the script above. It does not rely on which layer happens to be propagating, it states the intent in the launch line, it survives a site or script that restricts propagation later, and it is the first thing to try if a variable does mysteriously fail to arrive.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;-genv&amp;lt;/code&amp;gt; is still the habit worth keeping&amp;#039;&amp;#039;&amp;#039; for anything the run depends on, as in the script above. It does not rely on which layer happens to be propagating, it states the intent in the launch line, it survives a site or script that restricts propagation later, and it is the first thing to try if a variable does mysteriously fail to arrive.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Intel MPI, MKL, and &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;our &lt;/del&gt;AMD nodes ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Intel MPI, MKL, and AMD nodes ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Most of Anunna&amp;#039;s compute is AMD, and the Intel stack has a well-known wrinkle there. It is worth being precise about where it lives: &amp;#039;&amp;#039;&amp;#039;the issue is in MKL, not in Intel MPI.&amp;#039;&amp;#039;&amp;#039; But MKL arrives with the same &amp;lt;code&amp;gt;intel/&amp;lt;year&amp;gt;a&amp;lt;/code&amp;gt; module, and &amp;quot;our Intel build is slow on the AMD nodes&amp;quot; is usually this, so it belongs on this page.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Most of Anunna&amp;#039;s compute is AMD, and the Intel stack has a well-known wrinkle there. It is worth being precise about where it lives: &amp;#039;&amp;#039;&amp;#039;the issue is in MKL, not in Intel MPI.&amp;#039;&amp;#039;&amp;#039; But MKL arrives with the same &amp;lt;code&amp;gt;intel/&amp;lt;year&amp;gt;a&amp;lt;/code&amp;gt; module, and &amp;quot;our Intel build is slow on the AMD nodes&amp;quot; is usually this, so it belongs on this page.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l151&quot;&gt;Line 151:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 144:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Before assuming this is your problem, two things are worth checking, because often it is not. The shim only &#039;&#039;widens arithmetic&#039;&#039;, so it pays off when MKL is doing &#039;&#039;&#039;compute-bound &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Level-3 &lt;/del&gt;work&#039;&#039;&#039; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;such as &amp;lt;code&amp;gt;DGEMM&amp;lt;/code&amp;gt;&lt;/del&gt;. It does nothing when MKL is only handling bandwidth-bound &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Level-1/2 vector kernels&lt;/del&gt;, and nothing at all if your library does its own arithmetic &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;— &lt;/del&gt;PETSc&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, for instance, performs its sparse matrix–vector products itself, so MKL never sees the dominant cost of a Krylov solve&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Before assuming this is your problem, two things are worth checking, because often it is not. The shim only &#039;&#039;widens arithmetic&#039;&#039;, so it pays off when MKL is doing &#039;&#039;&#039;compute-bound work&#039;&#039;&#039;. It does nothing when MKL is only handling bandwidth-bound &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;work&lt;/ins&gt;, and nothing at all if your library does its own arithmetic &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;e.g. &lt;/ins&gt;PETSc.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;MKL_VERBOSE=1&amp;lt;/code&amp;gt; is the quick way to find out: it prints every MKL call, so you can see whether MKL is on your hot path at all and what it is being asked to do. Keep it off any run you intend to time — at high call counts the logging is itself a real cost.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;MKL_VERBOSE=1&amp;lt;/code&amp;gt; is the quick way to find out: it prints every MKL call, so you can see whether MKL is on your hot path at all and what it is being asked to do. Keep it off any run you intend to time — at high call counts the logging is itself a real cost.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Wed, 05 Aug 2026 14:46:12 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:IntelMPI</comments>
		</item>
		<item>
			<title>IntelMPI</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=IntelMPI&amp;diff=3034&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=IntelMPI&amp;diff=3034&amp;oldid=0</guid>
			<description>&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Intel MPI&amp;#039;&amp;#039;&amp;#039; is the other MPI implementation available on Anunna, alongside &lt;a href=&quot;/OpenMPI&quot; title=&quot;OpenMPI&quot;&gt;OpenMPI&lt;/a&gt;. It arrives as part of the Intel toolchain, together with the Intel compilers and the Intel Math Kernel Library (MKL).  Everything general about MPI — that it runs one program as many cooperating processes, that it has to be built into the program, and when it is the right tool at all — is covered on &lt;a href=&quot;/Workflows/Multi-Process&quot; title=&quot;Workflows/Multi-Process&quot;&gt;Multi-Process Workflows&lt;/a&gt;. This page is the Intel-sp...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Intel MPI&amp;#039;&amp;#039;&amp;#039; is the other MPI implementation available on Anunna, alongside [[OpenMPI]]. It arrives as part of the Intel toolchain, together with the Intel compilers and the Intel Math Kernel Library (MKL).&lt;br /&gt;
&lt;br /&gt;
Everything general about MPI — that it runs one program as many cooperating processes, that it has to be built into the program, and when it is the right tool at all — is covered on [[Workflows/Multi-Process|Multi-Process Workflows]]. This page is the Intel-specific practice: which modules exist, how to launch, how the pinning controls differ from OpenMPI&amp;#039;s, and one thing that catches people out on our AMD nodes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Which should you use?&amp;#039;&amp;#039;&amp;#039; Whichever your program was built with. That is not a dodge — mixing MPI implementations between build and run does not work, so in practice the software chooses for you. Where you genuinely have a choice, Intel MPI and MKL are the natural pairing for code that leans on Intel&amp;#039;s maths libraries, and [[OpenMPI]] is the default for everything else here.&lt;br /&gt;
&lt;br /&gt;
== What is available on Anunna ==&lt;br /&gt;
&lt;br /&gt;
Software is built with [https://easybuild.io EasyBuild] and grouped into [[Environment Modules|buckets]]; a bucket has to be loaded before you can load anything from it. The Intel toolchain follows the same yearly generations as &amp;lt;code&amp;gt;foss&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Bucket !! Toolchain !! Contains&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2023&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;intel/2023a&amp;lt;/code&amp;gt; || Intel compilers, Intel MPI, MKL&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2024&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;intel/2024a&amp;lt;/code&amp;gt; || Intel compilers, Intel MPI, MKL&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2025&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;intel/2025a&amp;lt;/code&amp;gt; || Intel compilers, Intel MPI, MKL&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;intel/&amp;lt;year&amp;gt;a&amp;lt;/code&amp;gt; is the counterpart of &amp;lt;code&amp;gt;foss/&amp;lt;year&amp;gt;a&amp;lt;/code&amp;gt;: one module that brings the whole stack — compilers, MPI, MKL and FFTW. There are leaner ways in, mirroring &amp;lt;code&amp;gt;gompi&amp;lt;/code&amp;gt; on the &amp;lt;code&amp;gt;foss&amp;lt;/code&amp;gt; side:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;iimpi/&amp;lt;year&amp;gt;a&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; — Intel compilers and Intel MPI, without MKL. The lean choice when you only need MPI.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;impi/&amp;lt;version&amp;gt;&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; — the MPI library alone. In the 2025 bucket this is &amp;lt;code&amp;gt;impi/2021.15.0-intel-compilers-2025.1.1&amp;lt;/code&amp;gt;; note that Intel MPI&amp;#039;s own version numbering (2021.x) does not track the toolchain year.&lt;br /&gt;
&lt;br /&gt;
To see what a bucket actually offers, ask the module system — &amp;lt;code&amp;gt;module key&amp;lt;/code&amp;gt; reads Lmod&amp;#039;s cache, so it needs no bucket loaded and searches every bucket at once:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module key intel      # the toolchains&lt;br /&gt;
module key impi       # the MPI library on its own&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loading it ===&lt;br /&gt;
&lt;br /&gt;
Bucket first, then the module — the same two steps as any other software here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module load 2024 intel/2024a&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then confirm what you got, which is worth the habit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module list           # everything loaded, dependencies included&lt;br /&gt;
mpirun -version       # which Intel MPI is on your PATH&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your software has its own module, load &amp;#039;&amp;#039;&amp;#039;that&amp;#039;&amp;#039;&amp;#039; instead and let it pull the matching MPI in as a dependency. A package built with this toolchain has a name ending in &amp;lt;code&amp;gt;-intel-2024a&amp;lt;/code&amp;gt; or similar, which tells you what you are getting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module load 2024&lt;br /&gt;
module load &amp;lt;YourSoftware&amp;gt;/&amp;lt;version&amp;gt;    # Intel MPI arrives as a dependency&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keep a job inside one bucket. Do not load &amp;lt;code&amp;gt;intel&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;foss&amp;lt;/code&amp;gt; in the same job — they provide competing compilers, MPI libraries and BLAS, and the result is unpredictable rather than merely slow. If you want a clean starting point, &amp;lt;code&amp;gt;module reset&amp;lt;/code&amp;gt; returns you to the system defaults; the &amp;lt;code&amp;gt;slurm&amp;lt;/code&amp;gt; module is &amp;#039;&amp;#039;sticky&amp;#039;&amp;#039; and survives it either way.&lt;br /&gt;
&lt;br /&gt;
== Running on a single node ==&lt;br /&gt;
&lt;br /&gt;
Nothing runs on the login nodes. Put the work in a script, keep data on Lustre under &amp;lt;code&amp;gt;$myScratch&amp;lt;/code&amp;gt;, and submit with &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash -l&lt;br /&gt;
#SBATCH --job-name=impi_single&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
#SBATCH --ntasks=64&lt;br /&gt;
#SBATCH --cpus-per-task=1&lt;br /&gt;
#SBATCH --mem-per-cpu=2G        # per CORE, not per node&lt;br /&gt;
#SBATCH --time=01:00:00&lt;br /&gt;
#SBATCH --output=%x-%j.out&lt;br /&gt;
&lt;br /&gt;
cd &amp;quot;$myScratch/my_simulation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
module load 2024 intel/2024a&lt;br /&gt;
&lt;br /&gt;
mpirun -np ${SLURM_NTASKS} ./my_mpi_program --input data.nc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Two things carried over from [[OpenMPI]], for the same reasons: pass &amp;lt;code&amp;gt;${SLURM_NTASKS}&amp;lt;/code&amp;gt; rather than hard-coding the rank count, and use &amp;lt;code&amp;gt;--mem-per-cpu&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;--mem&amp;lt;/code&amp;gt;, which is a per-&amp;#039;&amp;#039;node&amp;#039;&amp;#039; request divided among all the ranks on that node.&lt;br /&gt;
&lt;br /&gt;
Note the &amp;lt;code&amp;gt;#!/bin/bash -l&amp;lt;/code&amp;gt;. A login shell is what initialises Lmod, so without it &amp;lt;code&amp;gt;module load&amp;lt;/code&amp;gt; can fail quietly. For the same reason, never launch an MPI job with &amp;lt;code&amp;gt;sbatch --wrap&amp;lt;/code&amp;gt; — that runs under &amp;lt;code&amp;gt;dash&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; does not exist.&lt;br /&gt;
&lt;br /&gt;
On one node the ranks talk through shared memory and there is nothing to configure.&lt;br /&gt;
&lt;br /&gt;
== Running across several nodes ==&lt;br /&gt;
&lt;br /&gt;
Anunna&amp;#039;s fabric is &amp;#039;&amp;#039;&amp;#039;Omni-Path (OPA100)&amp;#039;&amp;#039;&amp;#039;, and both MPI implementations reach it through &amp;#039;&amp;#039;&amp;#039;libfabric&amp;#039;&amp;#039;&amp;#039;. The provider that works reliably here is &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;psm2&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;; the &amp;lt;code&amp;gt;opx&amp;lt;/code&amp;gt; provider is broken for inter-node traffic on this hardware. So an inter-node job should name the provider rather than trust auto-selection:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash -l&lt;br /&gt;
#SBATCH --job-name=impi_multi&lt;br /&gt;
#SBATCH --nodes=4&lt;br /&gt;
#SBATCH --ntasks-per-node=64&lt;br /&gt;
#SBATCH --cpus-per-task=1&lt;br /&gt;
#SBATCH --mem-per-cpu=2G&lt;br /&gt;
#SBATCH --time=02:00:00&lt;br /&gt;
#SBATCH --output=%x-%j.out&lt;br /&gt;
&lt;br /&gt;
cd &amp;quot;$myScratch/my_simulation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
module load 2024 intel/2024a&lt;br /&gt;
&lt;br /&gt;
mpirun -genv I_MPI_OFI_PROVIDER psm2 -genv FI_PROVIDER psm2 \&lt;br /&gt;
       -np ${SLURM_NTASKS} ./my_mpi_program --input data.nc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what was actually selected — provider, pinning, rank layout — turn up Intel MPI&amp;#039;s own diagnostics:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
export I_MPI_DEBUG=4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That prints the chosen fabric and the rank-to-core map at start-up, and is the fastest way to confirm a setting took effect instead of assuming it did.&lt;br /&gt;
&lt;br /&gt;
=== Getting variables to the other nodes ===&lt;br /&gt;
&lt;br /&gt;
Ranks on remote nodes are started fresh, so any variable your program or the fabric depends on has to reach them. Intel MPI&amp;#039;s controls are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Option !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-genv &amp;lt;VAR&amp;gt; &amp;lt;value&amp;gt;&amp;lt;/code&amp;gt; || Set one variable for &amp;#039;&amp;#039;&amp;#039;all&amp;#039;&amp;#039;&amp;#039; ranks. The explicit, always-safe form.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-genvall&amp;lt;/code&amp;gt; || Pass the whole launching environment to all ranks. This is the default.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-genvlist &amp;lt;a,b,c&amp;gt;&amp;lt;/code&amp;gt; || Pass only the named variables.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-genvnone&amp;lt;/code&amp;gt; || Pass nothing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In practice &amp;#039;&amp;#039;&amp;#039;a plain &amp;lt;code&amp;gt;export&amp;lt;/code&amp;gt; in your job script does reach every rank&amp;#039;&amp;#039;&amp;#039; — tested on Anunna across two nodes.&lt;br /&gt;
&lt;br /&gt;
It arrives whatever you do to stop it: restricting Intel MPI&amp;#039;s own propagation with &amp;lt;code&amp;gt;-genvlist PATH&amp;lt;/code&amp;gt;, which should have excluded the test variable, delivered it to both nodes anyway. [[OpenMPI]] 5.0.7 behaved identically — with &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt;, without it, and even with Slurm&amp;#039;s own environment forwarding suppressed.&lt;br /&gt;
&lt;br /&gt;
The practical reading is that &amp;#039;&amp;#039;&amp;#039;inside a Slurm allocation both implementations get your environment to the ranks&amp;#039;&amp;#039;&amp;#039;, by way of the process-management layer (PMIx and the launcher&amp;#039;s job description) rather than the batch environment. On the OpenMPI side that was pinned down: removing the variable from &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt;&amp;#039;s own environment is the only thing that stopped it arriving — see [[OpenMPI#Exporting variables to the other nodes: the -x flag|the OpenMPI page]] for the full result.&lt;br /&gt;
&lt;br /&gt;
None of which is worth depending on in a job script. It held for the current toolchains and not necessarily for older ones, so say what your run needs explicitly with &amp;lt;code&amp;gt;-genv&amp;lt;/code&amp;gt; and the question stops mattering.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;-genv&amp;lt;/code&amp;gt; is still the habit worth keeping&amp;#039;&amp;#039;&amp;#039; for anything the run depends on, as in the script above. It does not rely on which layer happens to be propagating, it states the intent in the launch line, it survives a site or script that restricts propagation later, and it is the first thing to try if a variable does mysteriously fail to arrive.&lt;br /&gt;
&lt;br /&gt;
== Intel MPI, MKL, and our AMD nodes ==&lt;br /&gt;
&lt;br /&gt;
Most of Anunna&amp;#039;s compute is AMD, and the Intel stack has a well-known wrinkle there. It is worth being precise about where it lives: &amp;#039;&amp;#039;&amp;#039;the issue is in MKL, not in Intel MPI.&amp;#039;&amp;#039;&amp;#039; But MKL arrives with the same &amp;lt;code&amp;gt;intel/&amp;lt;year&amp;gt;a&amp;lt;/code&amp;gt; module, and &amp;quot;our Intel build is slow on the AMD nodes&amp;quot; is usually this, so it belongs on this page.&lt;br /&gt;
&lt;br /&gt;
MKL checks the &amp;#039;&amp;#039;&amp;#039;CPU vendor&amp;#039;&amp;#039;&amp;#039; at run time. On a non-Intel CPU, kernels without specific Zen coverage can fall back to an &amp;#039;&amp;#039;&amp;#039;SSE&amp;#039;&amp;#039;&amp;#039; code path instead of using &amp;#039;&amp;#039;&amp;#039;AVX2&amp;#039;&amp;#039;&amp;#039;, leaving much of the vector width unused. This is still the behaviour in MKL 2025.x — it has not been quietly fixed. The old &amp;lt;code&amp;gt;MKL_DEBUG_CPU_TYPE&amp;lt;/code&amp;gt; workaround is gone, removed back in MKL 2020 Update 1, so anything you read recommending it is out of date.&lt;br /&gt;
&lt;br /&gt;
The current mitigation is a small shim, &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;libfakeintel.so&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;, &amp;lt;code&amp;gt;LD_PRELOAD&amp;lt;/code&amp;gt;ed ahead of MKL. It overrides the vendor test (&amp;lt;code&amp;gt;mkl_serv_intel_cpu_true&amp;lt;/code&amp;gt;) so that it returns true, and MKL then dispatches its AVX2 kernels:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
export LD_PRELOAD=/path/to/libfakeintel.so&lt;br /&gt;
mpirun -np ${SLURM_NTASKS} ./my_mpi_program&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before assuming this is your problem, two things are worth checking, because often it is not. The shim only &amp;#039;&amp;#039;widens arithmetic&amp;#039;&amp;#039;, so it pays off when MKL is doing &amp;#039;&amp;#039;&amp;#039;compute-bound Level-3 work&amp;#039;&amp;#039;&amp;#039; such as &amp;lt;code&amp;gt;DGEMM&amp;lt;/code&amp;gt;. It does nothing when MKL is only handling bandwidth-bound Level-1/2 vector kernels, and nothing at all if your library does its own arithmetic — PETSc, for instance, performs its sparse matrix–vector products itself, so MKL never sees the dominant cost of a Krylov solve.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;MKL_VERBOSE=1&amp;lt;/code&amp;gt; is the quick way to find out: it prints every MKL call, so you can see whether MKL is on your hot path at all and what it is being asked to do. Keep it off any run you intend to time — at high call counts the logging is itself a real cost.&lt;br /&gt;
&lt;br /&gt;
If MKL turns out to suit your workload poorly on the AMD nodes, the &amp;lt;code&amp;gt;foss&amp;lt;/code&amp;gt; toolchain&amp;#039;s OpenBLAS-based BLAS is worth benchmarking against.&lt;br /&gt;
&lt;br /&gt;
== Advanced: pinning and rank placement ==&lt;br /&gt;
&lt;br /&gt;
Intel MPI and OpenMPI express placement differently: OpenMPI takes command-line flags, Intel MPI reads &amp;lt;code&amp;gt;I_MPI_*&amp;lt;/code&amp;gt; environment variables. The intents map across cleanly, so if you know one dialect this table gives you the other:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Intent !! Intel MPI !! OpenMPI&lt;br /&gt;
|-&lt;br /&gt;
| One rank per physical core, no migration || &amp;lt;code&amp;gt;I_MPI_PIN=1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;I_MPI_PIN_DOMAIN=core&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;--bind-to core&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Fill the node, neighbours adjacent || &amp;lt;code&amp;gt;I_MPI_PIN_ORDER=compact&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;--map-by core&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Under-subscribed, spread across all NUMA domains || &amp;lt;code&amp;gt;I_MPI_PIN_ORDER=scatter&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;--map-by numa --bind-to core&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| One rank per chiplet / L3 slice || &amp;lt;code&amp;gt;I_MPI_PIN_DOMAIN=cache3&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;--map-by l3cache --bind-to core&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Print the map actually used || &amp;lt;code&amp;gt;I_MPI_DEBUG=4&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;--report-bindings&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Three rules that matter more than the individual settings:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Verify, do not assume.&amp;#039;&amp;#039;&amp;#039; Print the map with &amp;lt;code&amp;gt;I_MPI_DEBUG=4&amp;lt;/code&amp;gt; before and after any change. Placement bugs do not announce themselves; the job runs and is simply slower than it should be.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;One source of truth.&amp;#039;&amp;#039;&amp;#039; Pin with the MPI launcher &amp;#039;&amp;#039;&amp;#039;or&amp;#039;&amp;#039;&amp;#039; with Slurm (&amp;lt;code&amp;gt;--cpu-bind&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--distribution&amp;lt;/code&amp;gt;), never both. Two pinners fighting each other produce a nonsense map.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Spread suits memory-bound work.&amp;#039;&amp;#039;&amp;#039; AMD sockets are built from 8-core chiplets, each with its own cache slice and share of the memory channels. A bandwidth-bound job saturates memory well before every core is busy, so spreading a reduced number of ranks across all NUMA domains keeps every memory channel active, while packing them together leaves most idle. Asking for ranks in multiples of 8 keeps chiplets evenly filled.&lt;br /&gt;
&lt;br /&gt;
For the reasoning behind that last point, and the equivalent OpenMPI syntax, see [[OpenMPI#Advanced: pinning and rank placement|the OpenMPI page]].&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[OpenMPI]] — the other MPI here, and the default for most software.&lt;br /&gt;
* [[Workflows/Multi-Process|Multi-Process Workflows]] — whether MPI is the right shape for your work.&lt;br /&gt;
* [[Environment Modules]] — buckets, and finding the module you need.&lt;br /&gt;
* [[Compute Hardware Overview]] — what the nodes actually are.&lt;br /&gt;
* [[Batch Jobs]] — writing and submitting job scripts.&lt;br /&gt;
* [[Scheduler Overview (Slurm)]] — how the scheduler allocates what you ask for.&lt;/div&gt;</description>
			<pubDate>Wed, 05 Aug 2026 14:40:48 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:IntelMPI</comments>
		</item>
		<item>
			<title>Software</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Software&amp;diff=3033&amp;oldid=3029</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Software&amp;diff=3033&amp;oldid=3029</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:07, 5 August 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l10&quot;&gt;Line 10:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 10:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Julia]] — Julia&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Julia]] — Julia&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Apptainer]] — containers&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Apptainer]] — containers&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[OpenMPI]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Licensed Software]] — software that needs a licence&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Licensed Software]] — software that needs a licence&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Wed, 05 Aug 2026 14:07:15 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Software</comments>
		</item>
		<item>
			<title>OpenMPI</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=OpenMPI&amp;diff=3032&amp;oldid=3030</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=OpenMPI&amp;diff=3032&amp;oldid=3030</guid>
			<description>&lt;p&gt;Trimming&lt;/p&gt;
&lt;a href=&quot;https://wiki.anunna.wur.nl/index.php?title=OpenMPI&amp;amp;diff=3032&amp;amp;oldid=3030&quot;&gt;Show changes&lt;/a&gt;</description>
			<pubDate>Wed, 05 Aug 2026 14:04:43 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:OpenMPI</comments>
		</item>
		<item>
			<title>OpenMPI</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=OpenMPI&amp;diff=3030&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=OpenMPI&amp;diff=3030&amp;oldid=0</guid>
			<description>&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;OpenMPI&amp;#039;&amp;#039;&amp;#039; is the MPI library Anunna is built around. MPI — the Message Passing Interface — is how a single program runs as many cooperating processes at once, each with its own private memory, passing messages between themselves as the calculation proceeds. It is what lets one job use more than one node.  This page is the practical side: which OpenMPI modules exist here, how to launch a job on one node and across several, and how to choose the network transport,...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;OpenMPI&amp;#039;&amp;#039;&amp;#039; is the MPI library Anunna is built around. MPI — the Message Passing Interface — is how a single program runs as many cooperating processes at once, each with its own private memory, passing messages between themselves as the calculation proceeds. It is what lets one job use more than one node.&lt;br /&gt;
&lt;br /&gt;
This page is the practical side: which OpenMPI modules exist here, how to launch a job on one node and across several, and how to choose the network transport, which on Anunna needs saying out loud. If you are still deciding whether MPI is the right shape for your work at all, start at [[Workflows/Multi-Process|Multi-Process Workflows]] — that page covers when to use MPI and when a [[Workflows/Embarassinly-Parallel|job array]] or [[Workflows/Multi-threaded|threads]] would serve you better. For a worked example you can run yourself, see [[Tutorials/Parallelism-Estimating-Pi|Parallelism: Estimating π]].&lt;br /&gt;
&lt;br /&gt;
One thing to be clear about before anything else: &amp;#039;&amp;#039;&amp;#039;MPI has to be built into the program.&amp;#039;&amp;#039;&amp;#039; You cannot add it from a job script. If your software&amp;#039;s documentation never mentions MPI or ranks, this page is not the one you need.&lt;br /&gt;
&lt;br /&gt;
== What is available on Anunna ==&lt;br /&gt;
&lt;br /&gt;
Software here is built with [https://easybuild.io EasyBuild] and grouped into [[Environment Modules|buckets]]. A bucket has to be loaded before you can &amp;#039;&amp;#039;load&amp;#039;&amp;#039; anything from it — and before &amp;lt;code&amp;gt;module avail&amp;lt;/code&amp;gt; will list its contents. Each bucket corresponds to an EasyBuild toolchain generation:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Bucket !! Toolchain !! OpenMPI !! Compiler&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2023&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;foss/2023a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gompi/2023a&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;OpenMPI/4.1.5&amp;lt;/code&amp;gt; || GCC 12.3.0&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2024&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;foss/2024a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gompi/2024a&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;OpenMPI/5.0.3&amp;lt;/code&amp;gt; || GCC 13.3.0&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2025&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;foss/2025a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gompi/2025a&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;OpenMPI/5.0.7&amp;lt;/code&amp;gt; || GCC 14.2.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Three ways in, and they differ only in how much they bring with them:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;foss&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; — the full toolchain: GCC, OpenMPI, OpenBLAS, FFTW and ScaLAPACK. Load this if your program wants linear algebra or FFTs as well as MPI.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;gompi&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; — GCC and OpenMPI, nothing else. The lean choice when MPI is all you need.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;OpenMPI/&amp;lt;version&amp;gt;&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; — the library on its own, with its compiler underneath.&lt;br /&gt;
&lt;br /&gt;
You can list them yourself with &amp;lt;code&amp;gt;module key&amp;lt;/code&amp;gt;, which searches module descriptions as well as names. It reads Lmod&amp;#039;s cache rather than your current environment, so — unlike &amp;lt;code&amp;gt;module avail&amp;lt;/code&amp;gt; — it needs &amp;#039;&amp;#039;&amp;#039;no&amp;#039;&amp;#039;&amp;#039; bucket loaded and reports matches from every bucket at once:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module key OpenMPI        # no bucket needed; searches across all of them&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is the quickest way to see which OpenMPI versions exist and which toolchains carry them. Once you have picked one, &amp;#039;&amp;#039;then&amp;#039;&amp;#039; load its bucket and the module.&lt;br /&gt;
&lt;br /&gt;
=== Loading it ===&lt;br /&gt;
&lt;br /&gt;
Two steps, always in this order: &amp;#039;&amp;#039;&amp;#039;the bucket, then the module.&amp;#039;&amp;#039;&amp;#039; Nothing from a bucket can be loaded until the bucket itself is.&lt;br /&gt;
&lt;br /&gt;
To get the full toolchain from the 2024 bucket:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module load 2024&lt;br /&gt;
module load foss/2024a&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, equivalently, on one line — &amp;lt;code&amp;gt;module load&amp;lt;/code&amp;gt; takes several names and loads them left to right:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module load 2024 foss/2024a&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Swap the second module for whichever of the three routes you want:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module load 2024 gompi/2024a      # GCC + OpenMPI, no maths libraries&lt;br /&gt;
module load 2024 OpenMPI/5.0.3    # OpenMPI alone&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The short version number is enough — you do &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; need to type the compiler suffix. &amp;lt;code&amp;gt;OpenMPI/5.0.3&amp;lt;/code&amp;gt; resolves to &amp;lt;code&amp;gt;OpenMPI/5.0.3-GCC-13.3.0&amp;lt;/code&amp;gt;, which is the full name &amp;lt;code&amp;gt;module list&amp;lt;/code&amp;gt; will show you afterwards. If you want to see everything a bucket offers, &amp;lt;code&amp;gt;module avail OpenMPI&amp;lt;/code&amp;gt; lists it once that bucket is loaded.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Check what you actually got.&amp;#039;&amp;#039;&amp;#039; Two commands, both worth the habit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module list        # everything now loaded, including pulled-in dependencies&lt;br /&gt;
mpirun --version   # confirms which OpenMPI is on your PATH&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;module list&amp;lt;/code&amp;gt; will show more than you asked for — loading a toolchain pulls in its compiler, binutils and so on. That is expected.&lt;br /&gt;
&lt;br /&gt;
If you are running software that has its own module, &amp;#039;&amp;#039;&amp;#039;load that instead&amp;#039;&amp;#039;&amp;#039; and let it bring the right MPI with it as a dependency:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module load 2024&lt;br /&gt;
module load &amp;lt;YourSoftware&amp;gt;/&amp;lt;version&amp;gt;    # OpenMPI arrives as a dependency&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where a package exists in more than one toolchain flavour, the full name ends in the toolchain it was built with — &amp;lt;code&amp;gt;-foss-2024a&amp;lt;/code&amp;gt; and so on — which tells you which OpenMPI you are getting.&lt;br /&gt;
&lt;br /&gt;
A few things worth knowing:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;ml&amp;lt;/code&amp;gt; is shorthand&amp;#039;&amp;#039;&amp;#039; for &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt;, so &amp;lt;code&amp;gt;ml 2024 foss/2024a&amp;lt;/code&amp;gt; is the same as the load above, and &amp;lt;code&amp;gt;ml&amp;lt;/code&amp;gt; on its own lists what is loaded.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Load modules inside your job script, not just in your shell.&amp;#039;&amp;#039;&amp;#039; A batch job does not reliably inherit the environment you submitted from, so the &amp;lt;code&amp;gt;module load&amp;lt;/code&amp;gt; lines belong in the script itself — as they are in every example on this page.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;For a clean slate, &amp;lt;code&amp;gt;module reset&amp;lt;/code&amp;gt; is usually what you want&amp;#039;&amp;#039;&amp;#039; — it returns you to the system default set rather than stripping everything. &amp;lt;code&amp;gt;module purge&amp;lt;/code&amp;gt; also works, and does &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; cost you Slurm: the &amp;lt;code&amp;gt;slurm&amp;lt;/code&amp;gt; module is &amp;#039;&amp;#039;sticky&amp;#039;&amp;#039; (Lmod marks it &amp;lt;code&amp;gt;(S)&amp;lt;/code&amp;gt; and would need &amp;lt;code&amp;gt;--force&amp;lt;/code&amp;gt; to remove), so it survives a purge.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Stay inside one bucket per job.&amp;#039;&amp;#039;&amp;#039; Mixing software built with different compilers is a reliable source of mysterious failures.&lt;br /&gt;
&lt;br /&gt;
=== Which one to load ===&lt;br /&gt;
&lt;br /&gt;
The rule that saves the most time: &amp;#039;&amp;#039;&amp;#039;load the same MPI the program was built against.&amp;#039;&amp;#039;&amp;#039; Building with one MPI and running under another produces failures that look like almost anything except the mismatch causing them — hangs, garbled output, crashes inside library calls.&lt;br /&gt;
&lt;br /&gt;
In practice that means:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Running software from the module system?&amp;#039;&amp;#039;&amp;#039; Load &amp;#039;&amp;#039;&amp;#039;its&amp;#039;&amp;#039;&amp;#039; module and let it pull in the matching MPI as a dependency. You never have to choose, and you cannot get it wrong.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Running something you built yourself?&amp;#039;&amp;#039;&amp;#039; Load the same toolchain you built it with.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Building it yourself?&amp;#039;&amp;#039;&amp;#039; Use the compiler wrappers the MPI module provides — &amp;lt;code&amp;gt;mpicc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mpicxx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mpifort&amp;lt;/code&amp;gt; — which call your ordinary compiler with the MPI headers and libraries already in place.&lt;br /&gt;
&lt;br /&gt;
If none of those settles it, prefer the newest bucket your software is available in: the OpenMPI it carries is the one that has had the most attention here.&lt;br /&gt;
&lt;br /&gt;
== Running on a single node ==&lt;br /&gt;
&lt;br /&gt;
Nothing runs on the login nodes — they are shared, and are for editing, submitting and light housekeeping only. Describe the job in a script, keep the data on Lustre under &amp;lt;code&amp;gt;$myScratch&amp;lt;/code&amp;gt;, and hand it to &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=mpi_single&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
#SBATCH --ntasks=64             # 64 ranks, all on one machine&lt;br /&gt;
#SBATCH --cpus-per-task=1&lt;br /&gt;
#SBATCH --mem-per-cpu=2G        # per CORE, not per node&lt;br /&gt;
#SBATCH --time=01:00:00&lt;br /&gt;
#SBATCH --output=%x-%j.out&lt;br /&gt;
&lt;br /&gt;
cd &amp;quot;$myScratch/my_simulation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
module load 2024 foss/2024a&lt;br /&gt;
&lt;br /&gt;
mpirun -np ${SLURM_NTASKS} ./my_mpi_program --input data.nc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Two habits in there are worth keeping:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;-np ${SLURM_NTASKS}&amp;lt;/code&amp;gt;, never a hard-coded number.&amp;#039;&amp;#039;&amp;#039; Slurm exports the task count it granted; passing that through means the request and the run cannot drift apart when you change one of them.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;--mem-per-cpu&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;--mem&amp;lt;/code&amp;gt;.&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;--mem&amp;lt;/code&amp;gt; is a &amp;#039;&amp;#039;per-node&amp;#039;&amp;#039; request shared out among all ranks on that node — at 64 or 128 ranks each one ends up with a few megabytes, less than an MPI process needs simply to start, and the job dies of an out-of-memory kill that points nowhere near the flag responsible.&lt;br /&gt;
&lt;br /&gt;
On one node OpenMPI talks to itself through shared memory. There is nothing to configure and no network involved, which is why this case is simple and the next one is not.&lt;br /&gt;
&lt;br /&gt;
== Running across several nodes ==&lt;br /&gt;
&lt;br /&gt;
The moment a job spans two nodes, the ranks have to talk over the network — and on Anunna that path needs to be chosen explicitly.&lt;br /&gt;
&lt;br /&gt;
Anunna&amp;#039;s fabric is &amp;#039;&amp;#039;&amp;#039;Omni-Path (OPA100)&amp;#039;&amp;#039;&amp;#039;, and inter-node MPI rides it through &amp;#039;&amp;#039;&amp;#039;libfabric&amp;#039;&amp;#039;&amp;#039;. libfabric offers more than one &amp;#039;&amp;#039;provider&amp;#039;&amp;#039; for this hardware, and on our cluster they are not equally healthy:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Provider !! Status on Anunna !! Use it?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;psm2&amp;lt;/code&amp;gt; || Validated at line rate (~97 Gbps), on both Intel and AMD nodes, under all three toolchains || &amp;#039;&amp;#039;&amp;#039;Yes — this is the one&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;opx&amp;lt;/code&amp;gt; || Broken for inter-node traffic on OPA100: crashes either on entering rendezvous for larger messages, or during MPI start-up, depending on the libfabric version || No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because &amp;lt;code&amp;gt;opx&amp;lt;/code&amp;gt; can be picked up automatically, &amp;#039;&amp;#039;&amp;#039;an inter-node MPI job should ask for &amp;lt;code&amp;gt;psm2&amp;lt;/code&amp;gt; by name&amp;#039;&amp;#039;&amp;#039; rather than trusting the default:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mpirun --mca pml cm --mca mtl ofi --mca mtl_ofi_provider_include psm2 \&lt;br /&gt;
       -x FI_PROVIDER=psm2 \&lt;br /&gt;
       -np ${SLURM_NTASKS} ./my_mpi_program --input data.nc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A complete multi-node job script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=mpi_multi&lt;br /&gt;
#SBATCH --nodes=4&lt;br /&gt;
#SBATCH --ntasks-per-node=64    # 256 ranks in total&lt;br /&gt;
#SBATCH --cpus-per-task=1&lt;br /&gt;
#SBATCH --mem-per-cpu=2G&lt;br /&gt;
#SBATCH --time=02:00:00&lt;br /&gt;
#SBATCH --output=%x-%j.out&lt;br /&gt;
&lt;br /&gt;
cd &amp;quot;$myScratch/my_simulation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
module load 2024 foss/2024a&lt;br /&gt;
&lt;br /&gt;
mpirun --mca pml cm --mca mtl ofi --mca mtl_ofi_provider_include psm2 \&lt;br /&gt;
       -x FI_PROVIDER=psm2 \&lt;br /&gt;
       -np ${SLURM_NTASKS} ./my_mpi_program --input data.nc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To check what libfabric can actually see, ask it — on a compute node, not the login node:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
fi_info -p psm2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If that comes back empty under a given bucket, the &amp;lt;code&amp;gt;PSM2&amp;lt;/code&amp;gt; module supplies the provider; load it alongside your toolchain.&lt;br /&gt;
&lt;br /&gt;
=== Exporting variables to the other nodes: the &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt; flag ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt; hands a named environment variable to every rank:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mpirun -x FI_PROVIDER=psm2 -x MY_DATA_DIR -np ${SLURM_NTASKS} ./prog&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-x VAR=value&amp;lt;/code&amp;gt; sets it; &amp;lt;code&amp;gt;-x VAR&amp;lt;/code&amp;gt; passes through whatever value it already has. Use one &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt; per variable.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;With OpenMPI 5 inside a Slurm job, you usually do not need it.&amp;#039;&amp;#039;&amp;#039; Measured on Anunna, two nodes, OpenMPI 5.0.7, four ways:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! What was run !! Did the variable reach the ranks?&lt;br /&gt;
|-&lt;br /&gt;
| Plain &amp;lt;code&amp;gt;export&amp;lt;/code&amp;gt;, no &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt; || Yes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-x MY_TEST&amp;lt;/code&amp;gt; || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Slurm&amp;#039;s own forwarding suppressed (&amp;lt;code&amp;gt;SLURM_EXPORT_ENV=NONE&amp;lt;/code&amp;gt;) || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Variable removed from &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt;&amp;#039;s own environment (&amp;lt;code&amp;gt;env -u&amp;lt;/code&amp;gt;) || &amp;#039;&amp;#039;&amp;#039;No&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Taken together those say the ranks inherit &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; environment, and that OpenMPI&amp;#039;s own process-management layer — PRRTE and PMIx — is what delivers it, not the batch system.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Do not read that as universal, because it depends on the version.&amp;#039;&amp;#039;&amp;#039; It was verified for OpenMPI 5.0.7, in the &amp;lt;code&amp;gt;2025&amp;lt;/code&amp;gt; bucket. The &amp;lt;code&amp;gt;2023&amp;lt;/code&amp;gt; bucket carries &amp;#039;&amp;#039;&amp;#039;OpenMPI 4.1.5&amp;#039;&amp;#039;&amp;#039;, which predates the PRRTE launcher and has not been tested here; historically variables did have to be passed by hand. And in a hostfile launch over &amp;lt;code&amp;gt;ssh&amp;lt;/code&amp;gt;, rather than inside a Slurm allocation, remote shells start clean and nothing travels at all.&lt;br /&gt;
&lt;br /&gt;
So use &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt; if you are on the &amp;lt;code&amp;gt;2023&amp;lt;/code&amp;gt; bucket, if you are launching outside Slurm, or if you simply would rather not depend on any of the above. It costs nothing when it turns out to be redundant, and it is the one form that works in every case.&lt;br /&gt;
&lt;br /&gt;
So treat &amp;lt;code&amp;gt;-x&amp;lt;/code&amp;gt; as the &amp;#039;&amp;#039;&amp;#039;explicit&amp;#039;&amp;#039;&amp;#039; form rather than a workaround. It costs nothing, it states in the launch line what the run depends on, and it keeps working if the launch path changes underneath you. And if a job behaves differently across several nodes than it does on one, a variable that failed to travel is still the first thing worth suspecting.&lt;br /&gt;
&lt;br /&gt;
=== A start-up gotcha ===&lt;br /&gt;
&lt;br /&gt;
Do not use &amp;lt;code&amp;gt;sbatch --wrap&amp;lt;/code&amp;gt; for MPI jobs. The wrapped command runs under &amp;lt;code&amp;gt;dash&amp;lt;/code&amp;gt;, where Lmod&amp;#039;s &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; function is not initialised, so module loads fail quietly and the job proceeds without the software it asked for. Write a real script starting &amp;lt;code&amp;gt;#!/bin/bash -l&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
&lt;br /&gt;
== Advanced: pinning and rank placement ==&lt;br /&gt;
&lt;br /&gt;
By default OpenMPI decides where each rank sits and which cores it may use. For most jobs that is fine. It stops being fine when a job is memory-bandwidth-bound, when ranks each run threads of their own, or when timings vary between runs for no visible reason — all of which come down to &amp;#039;&amp;#039;placement&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Two ideas, easy to mix up:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Mapping&amp;#039;&amp;#039;&amp;#039; — which rank goes where. &amp;lt;code&amp;gt;--map-by &amp;lt;unit&amp;gt;&amp;lt;/code&amp;gt;, where the unit can be &amp;lt;code&amp;gt;core&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;l3cache&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;numa&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;package&amp;lt;/code&amp;gt; (socket), or &amp;lt;code&amp;gt;node&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Binding&amp;#039;&amp;#039;&amp;#039; — how tightly a rank is then pinned. &amp;lt;code&amp;gt;--bind-to core&amp;lt;/code&amp;gt; is the usual choice; &amp;lt;code&amp;gt;--bind-to none&amp;lt;/code&amp;gt; lets a rank roam.&lt;br /&gt;
&lt;br /&gt;
Before tuning anything, look at what you are actually getting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mpirun --report-bindings -np ${SLURM_NTASKS} ./my_mpi_program&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That prints one line per rank showing the cores it is bound to. It is the only way to know rather than assume, and defaults differ between OpenMPI versions.&lt;br /&gt;
&lt;br /&gt;
=== Why multiples of eight suit our AMD nodes ===&lt;br /&gt;
&lt;br /&gt;
Most of Anunna&amp;#039;s compute is AMD — &amp;#039;&amp;#039;&amp;#039;Zen 3&amp;#039;&amp;#039;&amp;#039; (EPYC Milan) and &amp;#039;&amp;#039;&amp;#039;Zen 5&amp;#039;&amp;#039;&amp;#039; (EPYC Turin). Both build a socket out of &amp;#039;&amp;#039;chiplets&amp;#039;&amp;#039; of &amp;#039;&amp;#039;&amp;#039;8 cores&amp;#039;&amp;#039;&amp;#039;, and each chiplet has its own slice of L3 cache. Cores inside a chiplet share that cache and reach memory together; cores in different chiplets do not.&lt;br /&gt;
&lt;br /&gt;
The practical consequence: &amp;#039;&amp;#039;&amp;#039;ask for ranks in multiples of 8&amp;#039;&amp;#039;&amp;#039;, so that chiplets are filled evenly and no chiplet is left holding a single stray rank while its cache and memory channels go mostly unused. 64, 128 and 256 are comfortable numbers here; 50 or 100 are not, and will spread unevenly no matter how you map them.&lt;br /&gt;
&lt;br /&gt;
Mapping by cache makes the intent explicit — one rank per chiplet, each free to use that chiplet&amp;#039;s cores:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mpirun --map-by l3cache --bind-to core -np ${SLURM_NTASKS} ./my_mpi_program&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A related point for memory-bound work: spreading ranks across chiplets and NUMA domains uses many memory controllers at once, while packing them close leaves most idle. On our AMD nodes that difference is large, not marginal.&lt;br /&gt;
&lt;br /&gt;
=== Ranks with threads inside them ===&lt;br /&gt;
&lt;br /&gt;
If each rank also runs OpenMP threads, mapping and binding stop being optional. Give each rank a block of cores with &amp;lt;code&amp;gt;PE=&amp;lt;/code&amp;gt;, and bind inside it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}&lt;br /&gt;
mpirun --map-by ppr:8:node:PE=${SLURM_CPUS_PER_TASK} --bind-to core \&lt;br /&gt;
       -x OMP_NUM_THREADS \&lt;br /&gt;
       -np ${SLURM_NTASKS} ./my_hybrid_program&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That reads as: place 8 ranks per node, give each one &amp;lt;code&amp;gt;SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt; cores, and bind them there. &amp;#039;&amp;#039;&amp;#039;Without the &amp;lt;code&amp;gt;PE=&amp;lt;/code&amp;gt; part every thread of a rank can end up on one single core&amp;#039;&amp;#039;&amp;#039; — the job runs, produces correct results, and is many times slower than it should be. It is a silent failure, so check it with &amp;lt;code&amp;gt;--report-bindings&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Note also that &amp;#039;&amp;#039;&amp;#039;MPI binding and OpenMP affinity are separate knobs.&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;--map-by&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--bind-to&amp;lt;/code&amp;gt; decide which cores a &amp;#039;&amp;#039;rank&amp;#039;&amp;#039; owns; &amp;lt;code&amp;gt;OMP_PROC_BIND&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;OMP_PLACES&amp;lt;/code&amp;gt; decide how that rank&amp;#039;s &amp;#039;&amp;#039;threads&amp;#039;&amp;#039; arrange themselves within those cores. Setting the OpenMP variables cannot rescue a rank that was only given one core to begin with — the threads have nowhere to spread to. Get the MPI side right first.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Workflows/Multi-Process|Multi-Process Workflows]] — when MPI is the right choice, and what the job script looks like.&lt;br /&gt;
* [[Intel MPI]] — the other MPI here, its &amp;lt;code&amp;gt;I_MPI_*&amp;lt;/code&amp;gt; pinning dialect, and MKL&amp;#039;s behaviour on AMD nodes.&lt;br /&gt;
* [[Workflows/Multi-threaded|Multi-threaded Workflows]] — threads on one node, for programs that are not MPI.&lt;br /&gt;
* [[Tutorials/Parallelism-Estimating-Pi|Parallelism: Estimating π]] — the same calculation run serially, threaded, with MPI, and across nodes.&lt;br /&gt;
* [[Environment Modules]] — buckets, and how to find the module you need.&lt;br /&gt;
* [[Compute Hardware Overview]] — the nodes, their core counts and their memory.&lt;br /&gt;
* [[Batch Jobs]] — writing and submitting job scripts.&lt;br /&gt;
* [[Scheduler Overview (Slurm)]] — how the scheduler allocates what you ask for.&lt;/div&gt;</description>
			<pubDate>Wed, 05 Aug 2026 13:43:29 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:OpenMPI</comments>
		</item>
		<item>
			<title>Software</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Software&amp;diff=3029&amp;oldid=2932</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Software&amp;diff=3029&amp;oldid=2932</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:36, 5 August 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l7&quot;&gt;Line 7:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Installing Personal Software]] — installing into your own space&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Installing Personal Software]] — installing into your own space&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Python]] — Python (modules, Miniforge, virtual environments)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Python]] — Python (modules, Miniforge, virtual environments)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[R]] — R and &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;R &lt;/del&gt;libraries&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[R]] — R&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-lang &lt;/ins&gt;and libraries&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Julia]] — Julia&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Julia]] — Julia&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Apptainer]] — containers&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Apptainer]] — containers&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Licensed Software]] — software that needs a licence&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Licensed Software]] — software that needs a licence&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Wed, 05 Aug 2026 11:36:12 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Software</comments>
		</item>
		<item>
			<title>Workflows</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Workflows&amp;diff=3028&amp;oldid=3026</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Workflows&amp;diff=3028&amp;oldid=3026</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:55, 5 August 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l16&quot;&gt;Line 16:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 16:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Workflows/Embarassinly-Parallel|Embarrassingly Parallel]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Workflows/Embarassinly-Parallel|Embarrassingly Parallel]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Workflows/Multi-threaded|Multi-threaded]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Workflows/Multi-threaded|Multi-threaded]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Multi-Process &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Workflows&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Workflows/&lt;/ins&gt;Multi-Process&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Multi-Process]] &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Hybrid Workflows  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Hybrid Workflows  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* GPU workflows&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* GPU workflows&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Wed, 05 Aug 2026 09:55:42 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Workflows</comments>
		</item>
		<item>
			<title>Workflows/Multi-Process</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Workflows/Multi-Process&amp;diff=3027&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Workflows/Multi-Process&amp;diff=3027&amp;oldid=0</guid>
			<description>&lt;p&gt;Created page with &amp;quot;&lt;a href=&quot;/Workflows/Multi-threaded&quot; title=&quot;Workflows/Multi-threaded&quot;&gt;Multi-threaded&lt;/a&gt; work gave one process many arms, and then ran into a wall: threads share memory, and shared memory stops at the edge of the machine. This page is how a single calculation gets past that wall — not by growing one process, but by running &amp;#039;&amp;#039;&amp;#039;many separate processes&amp;#039;&amp;#039;&amp;#039;, each with its own private memory, that send messages to each other as the calculation proceeds. The standard way to do that is &amp;#039;&amp;#039;&amp;#039;MPI&amp;#039;&amp;#039;&amp;#039;, the Message Passing Inte...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Workflows/Multi-threaded|Multi-threaded]] work gave one process many arms, and then ran into a wall: threads share memory, and shared memory stops at the edge of the machine. This page is how a single calculation gets past that wall — not by growing one process, but by running &amp;#039;&amp;#039;&amp;#039;many separate processes&amp;#039;&amp;#039;&amp;#039;, each with its own private memory, that send messages to each other as the calculation proceeds. The standard way to do that is &amp;#039;&amp;#039;&amp;#039;MPI&amp;#039;&amp;#039;&amp;#039;, the Message Passing Interface, and it is what lets one job span several nodes of the cluster at once.&lt;br /&gt;
&lt;br /&gt;
This is also the first rung where the &amp;#039;&amp;#039;&amp;#039;program&amp;#039;&amp;#039;&amp;#039; has to have been built for it. On the previous two rungs you changed the job script and the software went along with it. Here the parallelism lives inside the source code, and no &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; line can put it there. So the first question is not how to write the script — it is whether what you are running is an MPI program at all.&lt;br /&gt;
&lt;br /&gt;
== When this is you ==&lt;br /&gt;
&lt;br /&gt;
You are looking at a multi-process workflow when the software was written to run as many cooperating copies of itself:&lt;br /&gt;
&lt;br /&gt;
* Its documentation mentions &amp;#039;&amp;#039;&amp;#039;MPI&amp;#039;&amp;#039;&amp;#039;, or tells you to start it with &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mpiexec&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; rather than by name.&lt;br /&gt;
* It talks about &amp;#039;&amp;#039;&amp;#039;ranks&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;processes&amp;#039;&amp;#039;&amp;#039; — and about running across &amp;#039;&amp;#039;&amp;#039;nodes&amp;#039;&amp;#039;&amp;#039; — where a threaded tool would talk about threads.&lt;br /&gt;
* Installing or loading it pulled in an MPI library: a module with &amp;lt;code&amp;gt;OpenMPI&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;impi&amp;lt;/code&amp;gt; in its name, or a toolchain module such as &amp;lt;code&amp;gt;foss&amp;lt;/code&amp;gt; that contains one.&lt;br /&gt;
&lt;br /&gt;
Large simulation codes are the usual inhabitants of this rung — molecular dynamics and computational fluid dynamics especially, with GROMACS and LAMMPS the ones people meet first — along with some assemblers and phylogenetics packages that ship a separate MPI build alongside the ordinary one.&lt;br /&gt;
&lt;br /&gt;
Two tells that you are &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; here. If the program only offers a &amp;lt;code&amp;gt;--threads&amp;lt;/code&amp;gt;-style option, it is [[Workflows/Multi-threaded|multi-threaded]] and one node is its limit; asking Slurm for tasks it does not know about will not change that. And if what you have is many runs rather than one big one, you want [[Workflows/Embarassinly-Parallel|a job array]]. That distinction is worth being blunt about, because &amp;quot;many processes&amp;quot; describes both: an array also runs many processes at once, but its tasks never speak to each other, while MPI ranks speak constantly. If your runs are genuinely independent, take the array — it is simpler, it starts sooner, and it does not require an MPI program.&lt;br /&gt;
&lt;br /&gt;
== What it looks like on Anunna ==&lt;br /&gt;
&lt;br /&gt;
Everything from the [[Workflows/Serial|serial]] job still holds: nothing runs on the login node, work lives under &amp;lt;code&amp;gt;$myScratch&amp;lt;/code&amp;gt; on Lustre rather than in your home directory, and the job is a short script handed to &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt;. What changes is which resource lines you raise, and the line that starts the program.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=my_simulation&lt;br /&gt;
#SBATCH --nodes=2                # two machines ...&lt;br /&gt;
#SBATCH --ntasks-per-node=64     # ... 64 processes on each: 128 ranks in total&lt;br /&gt;
#SBATCH --cpus-per-task=1        # each rank single-threaded&lt;br /&gt;
#SBATCH --mem-per-cpu=2G         # memory PER CORE, not per node -- see below&lt;br /&gt;
#SBATCH --time=01:00:00          # wall-clock limit; the job is killed past this&lt;br /&gt;
#SBATCH --output=%x-%j.out       # stdout + stderr, named by job name and id&lt;br /&gt;
&lt;br /&gt;
cd &amp;quot;$myScratch/my_simulation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
module load 2024 foss/2024a      # GCC + OpenMPI; match how the program was built&lt;br /&gt;
&lt;br /&gt;
mpirun -np ${SLURM_NTASKS} ./my_mpi_program --input data.nc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set against the serial script, the interesting part is which number went up:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;--ntasks&amp;lt;/code&amp;gt; is what grew&amp;#039;&amp;#039;&amp;#039; — expressed here as &amp;lt;code&amp;gt;--nodes&amp;lt;/code&amp;gt; × &amp;lt;code&amp;gt;--ntasks-per-node&amp;lt;/code&amp;gt;, which comes to 128 — while &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;--cpus-per-task&amp;lt;/code&amp;gt; stayed at 1&amp;#039;&amp;#039;&amp;#039;. That is the exact mirror image of the multi-threaded page, which raised &amp;lt;code&amp;gt;--cpus-per-task&amp;lt;/code&amp;gt; and left &amp;lt;code&amp;gt;--ntasks&amp;lt;/code&amp;gt; at 1. Those two lines are the whole difference between the two rungs: one process with many cores, or many processes with one core each.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;--nodes&amp;lt;/code&amp;gt; appears for the first time in this section.&amp;#039;&amp;#039;&amp;#039; It can, because ranks do not share memory and therefore do not have to share a machine. You may also simply write &amp;lt;code&amp;gt;--ntasks=128&amp;lt;/code&amp;gt; and let Slurm place the ranks wherever it likes; spelling out nodes and tasks-per-node instead gives you predictable placement, which makes timings comparable between runs.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;The launch line hands Slurm&amp;#039;s number to the program.&amp;#039;&amp;#039;&amp;#039; Slurm exports the task count as &amp;lt;code&amp;gt;SLURM_NTASKS&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;mpirun -np ${SLURM_NTASKS}&amp;lt;/code&amp;gt; starts exactly that many ranks. This is the same habit as &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; one rung down: never hard-code the number in two places, or the request and the run will eventually disagree.&lt;br /&gt;
&lt;br /&gt;
=== Which MPI module ===&lt;br /&gt;
&lt;br /&gt;
The rule that matters: &amp;#039;&amp;#039;&amp;#039;load the same MPI the program was built against.&amp;#039;&amp;#039;&amp;#039; Mixing them — building with one MPI and running with another — produces errors that look like almost anything except the mismatch causing them.&lt;br /&gt;
&lt;br /&gt;
If the software came from the module system, loading &amp;#039;&amp;#039;&amp;#039;its&amp;#039;&amp;#039;&amp;#039; module is the reliable route, because that pulls in the matching MPI as a dependency and you never choose by hand. If you are running something you built yourself, load the toolchain you built it with — and if you are the one doing the building, that is what the MPI module&amp;#039;s compiler wrappers (&amp;lt;code&amp;gt;mpicc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mpicxx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mpifort&amp;lt;/code&amp;gt;) are for: they call your ordinary compiler with the MPI headers and libraries already in place. The π tutorial&amp;#039;s MPI rung uses:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module purge&lt;br /&gt;
module load 2024 foss/2024a      # GCC 13.3 with OpenMPI 5.0.3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modules on Anunna sit inside year buckets, and a bucket has to be loaded before its contents are visible — so &amp;lt;code&amp;gt;module avail OpenMPI&amp;lt;/code&amp;gt; will show you nothing useful until you have loaded a &amp;lt;code&amp;gt;2024&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;2025&amp;lt;/code&amp;gt; first. Newer MPI versions live in the newer buckets. See [[Environment Modules]] for how the buckets work. Note also that &amp;lt;code&amp;gt;module purge&amp;lt;/code&amp;gt; removes the &amp;lt;code&amp;gt;slurm&amp;lt;/code&amp;gt; module along with everything else; reload it if your script needs Slurm commands after purging.&lt;br /&gt;
&lt;br /&gt;
=== mpirun or srun ===&lt;br /&gt;
&lt;br /&gt;
Both will start an MPI program, and you will meet both in documentation. The material in this section uses &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt; consistently, for a practical reason: it is OpenMPI&amp;#039;s own launcher, so OpenMPI&amp;#039;s placement options behave as its documentation says they do, whereas launching through &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; adds a second layer that can quietly override them. Unless you have a reason to prefer &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt;, use &amp;lt;code&amp;gt;mpirun -np ${SLURM_NTASKS}&amp;lt;/code&amp;gt; and stay with it.&lt;br /&gt;
&lt;br /&gt;
== Memory is counted per rank now ==&lt;br /&gt;
&lt;br /&gt;
On the serial page, &amp;lt;code&amp;gt;--mem=4G&amp;lt;/code&amp;gt; meant four gigabytes for the job&amp;#039;s one process. It does not mean anything like that here, and this is the mistake most likely to kill an otherwise correct MPI job.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--mem&amp;lt;/code&amp;gt; is a request &amp;#039;&amp;#039;&amp;#039;per node&amp;#039;&amp;#039;&amp;#039;, and it is shared out among every rank running on that node. Ask for &amp;lt;code&amp;gt;--mem=1G&amp;lt;/code&amp;gt; and put 128 ranks on the node, and each rank gets roughly eight megabytes — less than an MPI process needs merely to start up, before your data is anywhere in the picture. The job dies of an out-of-memory kill early in the run, and nothing in the error message points back at the flag responsible. This is not a hypothetical: it is precisely what happened while the π tutorial&amp;#039;s MPI rungs were being built, and switching to &amp;lt;code&amp;gt;--mem-per-cpu&amp;lt;/code&amp;gt; was the fix.&lt;br /&gt;
&lt;br /&gt;
So on this rung, think per rank and write &amp;lt;code&amp;gt;--mem-per-cpu&amp;lt;/code&amp;gt;. Multiply in your head to check the total is sane — &amp;lt;code&amp;gt;--mem-per-cpu=2G&amp;lt;/code&amp;gt; with 64 ranks on a node is 128 GB from that node, which is comfortable on Anunna&amp;#039;s larger nodes and impossible on its smaller ones.&lt;br /&gt;
&lt;br /&gt;
== What it buys you ==&lt;br /&gt;
&lt;br /&gt;
The [[Tutorials/Parallelism-Estimating-Pi|π tutorial]] runs the same ten-billion-dart estimate as an MPI program, on one node and across four, alongside the serial baseline:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
variant   nodes cores    wall_s&lt;br /&gt;
serial        1     1    26.008&lt;br /&gt;
mpi           1   128     0.555&lt;br /&gt;
mpi           4    64     1.090&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A hundred and twenty-eight ranks turn 26 seconds into about half a second. The more instructive pair is the second and third rows, which look at first glance like a penalty for leaving the node — until you notice the four-node run used &amp;#039;&amp;#039;&amp;#039;64&amp;#039;&amp;#039;&amp;#039; cores against the single node&amp;#039;s &amp;#039;&amp;#039;&amp;#039;128&amp;#039;&amp;#039;&amp;#039;. Compared like with like, the tutorial&amp;#039;s 64-core runs took about 1.11 s on one node and about 1.09 s spread across four: the same, within noise. For this workload, crossing the network cost nothing measurable.&lt;br /&gt;
&lt;br /&gt;
That result is genuinely good news and should still be read carefully, because this problem barely communicates — the ranks work alone and exchange one number each at the very end. A real simulation exchanges data at every step, and that cost grows as ranks are added, which is why real codes have a scaling sweet spot rather than a straight line and why the only trustworthy answer comes from measuring &amp;#039;&amp;#039;&amp;#039;your&amp;#039;&amp;#039;&amp;#039; program on &amp;#039;&amp;#039;&amp;#039;your&amp;#039;&amp;#039;&amp;#039; data. The tutorial has a wrinkle in the same spirit: its single-rank MPI run takes about 70 seconds where the single-thread OpenMP run takes 26, a property of how that particular program starts up rather than a rule about MPI. Small scale is where MPI&amp;#039;s overheads are most visible and least repaid.&lt;br /&gt;
&lt;br /&gt;
== The honest limitation ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The program must have been written for MPI, and you cannot bolt it on.&amp;#039;&amp;#039;&amp;#039; No &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; line, no module, no wrapper script adds MPI to software that does not already have it. Run a non-MPI program under &amp;lt;code&amp;gt;mpirun -np 128&amp;lt;/code&amp;gt; and you do not get a parallel run; you get 128 identical copies of the same serial calculation, each ignorant of the others, quite possibly writing over each other&amp;#039;s output files. It looks busy and it is worse than useless.&lt;br /&gt;
&lt;br /&gt;
If the documentation never mentions MPI or ranks, that is your answer, and it is a perfectly ordinary one — most software is not MPI software. Go back a rung to [[Workflows/Multi-threaded|multi-threaded]], or sideways to [[Workflows/Embarassinly-Parallel|a job array]] if you have many runs rather than one.&lt;br /&gt;
&lt;br /&gt;
And when you do have an MPI program, more ranks is not automatically faster. Communication is real work, the queue makes you wait longer for 256 cores than for 64, and past some rank count your run stops improving and starts getting worse. Find where that happens on a short test case before committing a long job to it.&lt;br /&gt;
&lt;br /&gt;
If your MPI program can also use threads inside each rank — many of the big codes can — the combination is usually faster than either alone, and it is its own page: [[Workflows/Hybrid|Hybrid Workflows]].&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Workflows/Parallel-Computing|Parallel Computing]] — the overview, and the map to the other workflow types.&lt;br /&gt;
* [[Workflows/Multi-threaded|Multi-Threaded Workflows]] — the previous rung, and the one-node ceiling this page breaks.&lt;br /&gt;
* [[Workflows/Hybrid|Hybrid Workflows]] — MPI between nodes, threads within them.&lt;br /&gt;
* [[Workflows/Embarassinly-Parallel|Embarrassingly Parallel]] — for many independent runs, which need no MPI at all.&lt;br /&gt;
* [[Tutorials/Parallelism-Estimating-Pi|Parallelism: Estimating π]] — its MPI and multi-node rungs are the worked example for this page.&lt;br /&gt;
* [[Environment Modules]] — year buckets, and how to find the MPI you need.&lt;br /&gt;
* [[Compute Hardware Overview]] — how many cores and how much memory a node actually has.&lt;/div&gt;</description>
			<pubDate>Wed, 05 Aug 2026 09:54:26 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Workflows/Multi-Process</comments>
		</item>
		<item>
			<title>Workflows</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Workflows&amp;diff=3026&amp;oldid=3021</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Workflows&amp;diff=3026&amp;oldid=3021</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:29, 5 August 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l14&quot;&gt;Line 14:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 14:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Workflows/Parallel-Computing|Parallel Computing]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Workflows/Parallel-Computing|Parallel Computing]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Workflows/Serial|Serial]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Workflows/Serial|Serial]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Embarrassingly Parallel&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Workflows/Embarassinly-Parallel|&lt;/ins&gt;Embarrassingly Parallel&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Workflows/Multi-threaded|Multi-threaded]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Workflows/Multi-threaded|Multi-threaded]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Multi-Process Workflows&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Multi-Process Workflows&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Wed, 05 Aug 2026 09:29:03 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Workflows</comments>
		</item>
		<item>
			<title>Workflows/Multi-threaded</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Workflows/Multi-threaded&amp;diff=3025&amp;oldid=3020</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Workflows/Multi-threaded&amp;diff=3025&amp;oldid=3020</guid>
			<description>&lt;p&gt;Fix links&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:02, 5 August 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Workflows/Serial&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-Workflows&lt;/del&gt;|Serial]] ran one program on one core. This page takes that same job and lets the program spread its work across &#039;&#039;&#039;many&#039;&#039;&#039; cores on the &#039;&#039;&#039;same&#039;&#039;&#039; machine — still one process, but now with several &#039;&#039;threads&#039;&#039; inside it, all sharing the same memory. It is the gentlest real step up the ladder, because for most tools someone else already did the hard part: the program already knows how to use extra cores. Your job is only to give it some, and to tell it how many.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Workflows/Serial|Serial]] ran one program on one core. This page takes that same job and lets the program spread its work across &#039;&#039;&#039;many&#039;&#039;&#039; cores on the &#039;&#039;&#039;same&#039;&#039;&#039; machine — still one process, but now with several &#039;&#039;threads&#039;&#039; inside it, all sharing the same memory. It is the gentlest real step up the ladder, because for most tools someone else already did the hard part: the program already knows how to use extra cores. Your job is only to give it some, and to tell it how many.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If you have read the serial page you already have the whole script. This one is that script with two lines touched — and seeing exactly which two is the point.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If you have read the serial page you already have the whole script. This one is that script with two lines touched — and seeing exactly which two is the point.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* It runs as a single program — not several cooperating copies, and not across more than one node.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* It runs as a single program — not several cooperating copies, and not across more than one node.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Plenty of everyday tools are built this way: read aligners, &amp;lt;code&amp;gt;samtools&amp;lt;/code&amp;gt;, and many of the numerical libraries underneath R and Python. If a tool has a threads option and you have been leaving it at its default of 1, this page is how you turn it up correctly on Anunna. If the program has no such option, it is [[Workflows/Serial&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-Workflows&lt;/del&gt;|serial]] — more cores will not help it, and you should go back one rung.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Plenty of everyday tools are built this way: read aligners, &amp;lt;code&amp;gt;samtools&amp;lt;/code&amp;gt;, and many of the numerical libraries underneath R and Python. If a tool has a threads option and you have been leaving it at its default of 1, this page is how you turn it up correctly on Anunna. If the program has no such option, it is [[Workflows/Serial|serial]] — more cores will not help it, and you should go back one rung.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== What it looks like on Anunna ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== What it looks like on Anunna ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l84&quot;&gt;Line 84:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 84:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Workflows/Parallel-Computing|Parallel Computing]] — the overview, and the map to the other workflow types.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Workflows/Parallel-Computing|Parallel Computing]] — the overview, and the map to the other workflow types.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Workflows/Serial&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-Workflows&lt;/del&gt;|Serial Workflows]] — the baseline this page starts from.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Workflows/Serial|Serial Workflows]] — the baseline this page starts from.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Workflows/Multi-Process-Workflows|Multi-Process Workflows]] — the next rung, for when one node is not enough.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Workflows/Multi-Process-Workflows|Multi-Process Workflows]] — the next rung, for when one node is not enough.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Tutorials/Parallelism-Estimating-Pi|Parallelism: Estimating π]] — its OpenMP rung is the worked example for this page.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Tutorials/Parallelism-Estimating-Pi|Parallelism: Estimating π]] — its OpenMP rung is the worked example for this page.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Compute Hardware Overview]] — how many cores a single node actually has.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Compute Hardware Overview]] — how many cores a single node actually has.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Wed, 05 Aug 2026 08:02:57 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Workflows/Multi-threaded</comments>
		</item>
		<item>
			<title>Workflows/Embarassinly-Parallel</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Workflows/Embarassinly-Parallel&amp;diff=3024&amp;oldid=3022</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Workflows/Embarassinly-Parallel&amp;diff=3024&amp;oldid=3022</guid>
			<description>&lt;p&gt;Embarassinly Parallel&lt;/p&gt;
&lt;a href=&quot;https://wiki.anunna.wur.nl/index.php?title=Workflows/Embarassinly-Parallel&amp;amp;diff=3024&amp;amp;oldid=3022&quot;&gt;Show changes&lt;/a&gt;</description>
			<pubDate>Wed, 05 Aug 2026 07:59:04 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Workflows/Embarassinly-Parallel</comments>
		</item>
		<item>
			<title>Workflows/Embarassinly-Parallel</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Workflows/Embarassinly-Parallel&amp;diff=3022&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Workflows/Embarassinly-Parallel&amp;diff=3022&amp;oldid=0</guid>
			<description>&lt;p&gt;Created page with &amp;quot;This tutorial is a gentle, hands-on introduction to &amp;#039;&amp;#039;&amp;#039;parallel computing on Anunna&amp;#039;&amp;#039;&amp;#039;. Instead of a heavy scientific code, it uses one friendly problem — estimating the number π by throwing random darts — and runs the &amp;#039;&amp;#039;same&amp;#039;&amp;#039; calculation across every kind of parallelism the cluster offers: a single core, many threads, many processes, multiple nodes, and a GPU. Because the problem stays the same, you can see exactly what each step up the ladder buys you.  You do no...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This tutorial is a gentle, hands-on introduction to &amp;#039;&amp;#039;&amp;#039;parallel computing on Anunna&amp;#039;&amp;#039;&amp;#039;. Instead of a heavy scientific code, it uses one friendly problem — estimating the number π by throwing random darts — and runs the &amp;#039;&amp;#039;same&amp;#039;&amp;#039; calculation across every kind of parallelism the cluster offers: a single core, many threads, many processes, multiple nodes, and a GPU. Because the problem stays the same, you can see exactly what each step up the ladder buys you.&lt;br /&gt;
&lt;br /&gt;
You do not need to write any C code. The whole exercise comes down to filling in &amp;#039;&amp;#039;&amp;#039;two&amp;#039;&amp;#039;&amp;#039; blanks in two job scripts, launching a batch of jobs, and reading three plots.&lt;br /&gt;
&lt;br /&gt;
== What you will learn ==&lt;br /&gt;
&lt;br /&gt;
* How a single program can be run serially, with threads (OpenMP), with processes (MPI), across several nodes, and on a GPU.&lt;br /&gt;
* How Slurm &amp;#039;&amp;#039;allocates&amp;#039;&amp;#039; resources and why your program still has to be &amp;#039;&amp;#039;told&amp;#039;&amp;#039; how many to use.&lt;br /&gt;
* The difference between &amp;#039;&amp;#039;&amp;#039;strong scaling&amp;#039;&amp;#039;&amp;#039; (same work, more workers, less time) and &amp;#039;&amp;#039;&amp;#039;weak scaling&amp;#039;&amp;#039;&amp;#039; (more workers, more work, same time).&lt;br /&gt;
* Why more workers make a calculation &amp;#039;&amp;#039;&amp;#039;faster, not more accurate&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* How to read scaling and speedup plots — and where their limits are.&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
&lt;br /&gt;
You should already be comfortable logging into Anunna and submitting a basic Slurm job. If you are not sure, work through the [[Linux Basic/Linux Self Assessment|Linux Self Assessment]] first.&lt;br /&gt;
&lt;br /&gt;
You also need the &amp;#039;&amp;#039;&amp;#039;course environment loaded&amp;#039;&amp;#039;&amp;#039;, because it sets the &amp;lt;code&amp;gt;$myScratch&amp;lt;/code&amp;gt; variable that the tutorial relies on. If your instructor has not told you otherwise, it is loaded for you when you log in. You can check with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;quot;$myScratch&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If that prints a path under &amp;lt;code&amp;gt;/lustre/scratch/...&amp;lt;/code&amp;gt;, you are ready. If it prints nothing, load the course environment before continuing.&lt;br /&gt;
&lt;br /&gt;
Everything you run lives in two places:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;The shared tutorial&amp;#039;&amp;#039;&amp;#039; at &amp;lt;code&amp;gt;/lustre/shared/hpcCourses/pi-tutorial&amp;lt;/code&amp;gt; — read-only, the same for everyone.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Your personal copy&amp;#039;&amp;#039;&amp;#039; at &amp;lt;code&amp;gt;$myScratch/hpcCourse/pi-tutorial&amp;lt;/code&amp;gt; — created the first time you launch, and where you make your edits.&lt;br /&gt;
&lt;br /&gt;
== The big idea: estimating π with random darts ==&lt;br /&gt;
&lt;br /&gt;
Imagine a square dartboard with a quarter-circle drawn inside it. If you throw darts at random and they land anywhere in the square with equal chance, the fraction that land &amp;#039;&amp;#039;inside&amp;#039;&amp;#039; the quarter-circle is exactly the ratio of the two areas — which works out to π/4. So if you throw &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; darts and &amp;#039;&amp;#039;&amp;#039;H&amp;#039;&amp;#039;&amp;#039; of them land inside:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
π ≈ 4 × H / N&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Throw more darts, and the estimate gets better. This is a &amp;#039;&amp;#039;&amp;#039;Monte Carlo&amp;#039;&amp;#039;&amp;#039; method: a calculation built out of huge numbers of independent random trials. It has one property that makes it perfect for teaching parallelism — every dart is independent, so the work splits cleanly across as many workers as you like, with almost no coordination between them.&lt;br /&gt;
&lt;br /&gt;
The tutorial implements this &amp;#039;&amp;#039;same&amp;#039;&amp;#039; dart-throwing kernel six ways:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Rung !! Program !! What it uses&lt;br /&gt;
|-&lt;br /&gt;
| serial || &amp;lt;code&amp;gt;pi_serial&amp;lt;/code&amp;gt; || one core (the reference)&lt;br /&gt;
|-&lt;br /&gt;
| OpenMP || &amp;lt;code&amp;gt;pi_omp&amp;lt;/code&amp;gt; || many threads on one node&lt;br /&gt;
|-&lt;br /&gt;
| MPI || &amp;lt;code&amp;gt;pi_mpi&amp;lt;/code&amp;gt; || many processes on one node&lt;br /&gt;
|-&lt;br /&gt;
| multi-node || &amp;lt;code&amp;gt;pi_mpi&amp;lt;/code&amp;gt; || processes spread across several nodes (same program)&lt;br /&gt;
|-&lt;br /&gt;
| GPU || &amp;lt;code&amp;gt;pi_gpu&amp;lt;/code&amp;gt; || thousands of device threads on one GPU&lt;br /&gt;
|-&lt;br /&gt;
| hybrid || &amp;lt;code&amp;gt;pi_hybrid&amp;lt;/code&amp;gt; || MPI processes, each running OpenMP threads&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Because the random-number generator is identical everywhere and each worker draws its own independent stream, the &amp;#039;&amp;#039;answer&amp;#039;&amp;#039; for a given number of darts and seed is the same no matter how the work is divided. Only the &amp;#039;&amp;#039;time&amp;#039;&amp;#039; changes. That is the whole point.&lt;br /&gt;
&lt;br /&gt;
== Step 1: Make the tutorial modules available ==&lt;br /&gt;
&lt;br /&gt;
The tutorial ships as a set of environment modules. Point Lmod at them once per session:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module use /lustre/shared/hpcCourses/pi-tutorial/modules&lt;br /&gt;
module avail pi-tutorial&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will see three modules. They are mutually exclusive — loading one unloads the others:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pi-tutorial&amp;lt;/code&amp;gt; — the CPU rungs (serial, OpenMP, MPI, hybrid).&lt;br /&gt;
* &amp;lt;code&amp;gt;pi-tutorial-cuda&amp;lt;/code&amp;gt; — the NVIDIA GPU rung.&lt;br /&gt;
* &amp;lt;code&amp;gt;pi-tutorial-rocm&amp;lt;/code&amp;gt; — the AMD GPU rung.&lt;br /&gt;
&lt;br /&gt;
You do not need to load these by hand for the exercise — each job script loads the right one for you. The &amp;lt;code&amp;gt;module use&amp;lt;/code&amp;gt; line above is enough.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Get your personal copy of the scripts ==&lt;br /&gt;
&lt;br /&gt;
Run the launcher once:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
bash /lustre/shared/hpcCourses/pi-tutorial/exercise/launch.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On this first run it does three things: it copies the job scripts into your personal space at &amp;lt;code&amp;gt;$myScratch/hpcCourse/pi-tutorial/slurm&amp;lt;/code&amp;gt;, clears any old results, and submits the whole batch of jobs. Watch them with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
squeue --me&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Most of the jobs (serial, GPU, multi-node, hybrid) are complete and will run correctly. &amp;#039;&amp;#039;&amp;#039;Two of them — the OpenMP and the MPI jobs — contain a deliberate blank&amp;#039;&amp;#039;&amp;#039; and will not give a useful result yet. Fixing those blanks is your job, and it is the next step.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Fill in the two blanks ==&lt;br /&gt;
&lt;br /&gt;
When you ask Slurm for resources, Slurm sets aside the cores or tasks you requested — but it does not automatically tell your &amp;#039;&amp;#039;program&amp;#039;&amp;#039; about them. You have to pass the number along. Slurm makes that easy by exporting the counts as environment variables. Your task is to connect the two.&lt;br /&gt;
&lt;br /&gt;
Open the OpenMP script in your personal copy (use &amp;lt;code&amp;gt;nano&amp;lt;/code&amp;gt; if you are not comfortable with &amp;lt;code&amp;gt;vi&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nano $myScratch/hpcCourse/pi-tutorial/slurm/run_multithread.slurm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will find this line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=FIXME&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The script asked Slurm for cores with &amp;lt;code&amp;gt;--cpus-per-task&amp;lt;/code&amp;gt;, and Slurm exported that count as &amp;lt;code&amp;gt;SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt;. Tell OpenMP to use exactly that many threads:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the MPI script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nano $myScratch/hpcCourse/pi-tutorial/slurm/run_multiprocess.slurm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here the blank is the number of processes to launch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mpirun -np FIXME pi_mpi --total 1e10 --seed 12345&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This script asked Slurm for tasks with &amp;lt;code&amp;gt;--ntasks&amp;lt;/code&amp;gt;, and Slurm exported that as &amp;lt;code&amp;gt;SLURM_NTASKS&amp;lt;/code&amp;gt;. Launch one process per task:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mpirun -np ${SLURM_NTASKS} pi_mpi --total 1e10 --seed 12345&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is the entire editable surface — two lines. Save both files.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Launch the full sweep ==&lt;br /&gt;
&lt;br /&gt;
Run the launcher again:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
bash /lustre/shared/hpcCourses/pi-tutorial/exercise/launch.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This time it &amp;#039;&amp;#039;&amp;#039;keeps your edited scripts&amp;#039;&amp;#039;&amp;#039; (it never overwrites your copy), clears the old results, and resubmits everything. The launcher sweeps a range of sizes for you automatically — OpenMP from 1 up to 128 threads, MPI from 1 up to 128 processes — plus the GPU, multi-node, and hybrid runs.&lt;br /&gt;
&lt;br /&gt;
Keep an eye on the queue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
squeue --me&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each finished job writes one result line into &amp;lt;code&amp;gt;$myScratch/hpcCourse/pi-tutorial/results&amp;lt;/code&amp;gt;. Wait until the queue is empty before moving on.&lt;br /&gt;
&lt;br /&gt;
== Step 5: Analyze your results ==&lt;br /&gt;
&lt;br /&gt;
The analysis script reads every result file, prints a summary table, and writes three plots. It needs matplotlib, which lives in the SciPy bundle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module load 2024 SciPy-bundle/2024a&lt;br /&gt;
python /lustre/shared/hpcCourses/pi-tutorial/analyze.py $myScratch/hpcCourse/pi-tutorial/results&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When it finishes you will have three PNG files in your results directory:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;walltime_vs_cores.png&amp;lt;/code&amp;gt; — how long each run took, against the number of cores.&lt;br /&gt;
* &amp;lt;code&amp;gt;speedup_vs_cores.png&amp;lt;/code&amp;gt; — how much faster than the serial run, against the ideal straight line.&lt;br /&gt;
* &amp;lt;code&amp;gt;best_per_approach.png&amp;lt;/code&amp;gt; — the single fastest run of each approach, side by side.&lt;br /&gt;
&lt;br /&gt;
Copy them to your laptop (for example with &amp;lt;code&amp;gt;scp&amp;lt;/code&amp;gt;) to view them, or open them through the OnDemand file browser.&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
&lt;br /&gt;
[[File:Pi-tutorial-walltime-vs-cores.png|thumb|right|360px|Wall time falls as cores are added. Note both axes are logarithmic; a straight line here means near-ideal scaling.]]&lt;br /&gt;
[[File:Pi-tutorial-speedup-vs-cores.png|thumb|right|360px|Speedup against the serial baseline. The dashed line is perfect (linear) speedup; real runs sit just below it.]]&lt;br /&gt;
[[File:Pi-tutorial-best-per-approach.png|thumb|right|360px|The fastest run of each approach. The GPU finishes the same 10-billion-dart job in a fraction of the time the CPU rungs need.]]&lt;br /&gt;
&lt;br /&gt;
A correct run produces a table like the one below (trimmed; your exact times will vary by a few percent). Every run threw the same &amp;#039;&amp;#039;&amp;#039;10 billion&amp;#039;&amp;#039;&amp;#039; darts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
variant   nodes cores              device       wall_s            pi   pct_err&lt;br /&gt;
serial        1     1                 cpu       26.008     3.1416052   0.00040&lt;br /&gt;
omp           1     1                 cpu       26.499     3.1416052   0.00040&lt;br /&gt;
omp           1    16                 cpu        1.663     3.1415960   0.00011&lt;br /&gt;
omp           1   128                 cpu        0.235     3.1416075   0.00047&lt;br /&gt;
mpi           1     1                 cpu       69.676     3.1416052   0.00040&lt;br /&gt;
mpi           1   128                 cpu        0.555     3.1416075   0.00047&lt;br /&gt;
mpi           4    64                 cpu        1.090     3.1416039   0.00036&lt;br /&gt;
hybrid        4   128                 cpu        0.217     3.1416075   0.00047&lt;br /&gt;
gpu           1     1  AMD_Instinct_MI210        0.080     3.1415897   0.00009&lt;br /&gt;
gpu           1     1  NVIDIA_A100_80GB_PCIe     0.045     3.1415897   0.00009&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Two things are worth noticing straight away:&lt;br /&gt;
&lt;br /&gt;
* The serial run took about &amp;#039;&amp;#039;&amp;#039;26 seconds&amp;#039;&amp;#039;&amp;#039;; the 128-thread OpenMP run took about &amp;#039;&amp;#039;&amp;#039;0.24 seconds&amp;#039;&amp;#039;&amp;#039;; the A100 GPU finished in about &amp;#039;&amp;#039;&amp;#039;0.045 seconds&amp;#039;&amp;#039;&amp;#039;. The work was identical — only the time changed.&lt;br /&gt;
* Look at the &amp;lt;code&amp;gt;pi&amp;lt;/code&amp;gt; column. For any given total work and seed, the estimate is &amp;#039;&amp;#039;&amp;#039;identical&amp;#039;&amp;#039;&amp;#039; across serial, OpenMP, MPI, multi-node, and hybrid — for example every 128-core CPU run lands on 3.1416075. Splitting the darts across more workers did not change the answer, because each worker draws its own independent random stream. (The GPU differs in the last few digits because it uses far more streams; it still lands well within the expected error.)&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
&lt;br /&gt;
The plots tell a tidy story: add workers, get proportionally faster, almost along the ideal line. That is real — but it is important to understand &amp;#039;&amp;#039;why&amp;#039;&amp;#039; it looks so clean, and where the limits are.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;This problem is unusually friendly.&amp;#039;&amp;#039;&amp;#039; Throwing darts is &amp;quot;embarrassingly parallel&amp;quot;: the workers never need to talk to each other until the very end, when their hit-counts are summed. Most real scientific codes are not like this. A fluid-dynamics solver, a molecular-dynamics simulation, or a genome assembler has data dependencies and communication between workers, and that communication eventually caps how much faster you can go (this ceiling is known as &amp;#039;&amp;#039;&amp;#039;Amdahl&amp;#039;s law&amp;#039;&amp;#039;&amp;#039;). Do not expect your own code to scale as cleanly as π does — this tutorial shows you the &amp;#039;&amp;#039;best&amp;#039;&amp;#039; case, not the typical one.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;More workers buy speed, not accuracy.&amp;#039;&amp;#039;&amp;#039; The error of a Monte Carlo estimate shrinks with the number of darts as roughly 1/√N — so to halve the error you must throw &amp;#039;&amp;#039;&amp;#039;four times&amp;#039;&amp;#039;&amp;#039; as many darts. Adding cores lets you throw a fixed number of darts &amp;#039;&amp;#039;sooner&amp;#039;&amp;#039;, or throw &amp;#039;&amp;#039;more&amp;#039;&amp;#039; darts in the same time, but it never makes a fixed number of darts more accurate. Speed and accuracy are separate knobs.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Compare equal core counts.&amp;#039;&amp;#039;&amp;#039; In the table, the 4-node MPI run (1.09 s) looks &amp;#039;&amp;#039;slower&amp;#039;&amp;#039; than the 1-node MPI run (0.56 s). It is not a penalty for crossing nodes — the 4-node run used &amp;#039;&amp;#039;&amp;#039;64&amp;#039;&amp;#039;&amp;#039; cores while the 1-node run used &amp;#039;&amp;#039;&amp;#039;128&amp;#039;&amp;#039;&amp;#039;. When you compare like with like (64 cores on 1 node ≈ 1.11 s versus 64 cores across 4 nodes ≈ 1.09 s) the times are essentially equal: for this workload the network between nodes is not a bottleneck. Always check the core count before reading a comparison as good or bad news.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The measurements are deliberately rough.&amp;#039;&amp;#039;&amp;#039; Each point is a single run with a single seed, and the fastest runs finish in well under a second — far too short to time precisely on a shared machine. That noise is why a step in the curve can occasionally look &amp;#039;&amp;#039;better&amp;#039;&amp;#039; than perfect (&amp;quot;super-linear&amp;quot;); it is timing jitter, not magic. A proper benchmark repeats each run several times and reports the median. This tutorial trades that rigour for clarity and a short queue.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A real-world wrinkle.&amp;#039;&amp;#039;&amp;#039; You may notice the single-process MPI run (about 70 s) is markedly slower than the single-thread OpenMP run (about 26 s) for the same work — and that gap persists across the sweep. That is a property of how this particular MPI program starts up and is being investigated; it is not a general rule that MPI is slower than OpenMP. It is a good reminder that &amp;#039;&amp;#039;how&amp;#039;&amp;#039; you measure matters as much as &amp;#039;&amp;#039;what&amp;#039;&amp;#039; you measure.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
You ran one calculation on a single core and on hundreds, on CPUs and on GPUs, on one node and across four — and the answer never changed, only the time. That is the core lesson of parallel computing on a cluster: &amp;#039;&amp;#039;&amp;#039;you choose a parallel model to match the structure of your problem&amp;#039;&amp;#039;&amp;#039;, and the reward is speed, not correctness.&lt;br /&gt;
&lt;br /&gt;
A few takeaways to carry forward:&lt;br /&gt;
&lt;br /&gt;
* If your work is made of independent pieces (parameter sweeps, many input files, Monte Carlo trials), it will parallelise well — threads, processes, or a GPU all help.&lt;br /&gt;
* If your work has steps that depend on each other, expect communication to limit your speedup, and measure before assuming more cores will help.&lt;br /&gt;
* More cores make things faster; only more samples (or a better method) make a Monte Carlo result more accurate.&lt;br /&gt;
&lt;br /&gt;
To go further, try editing a script to use &amp;lt;code&amp;gt;--per-worker&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;--total&amp;lt;/code&amp;gt; and watch the difference between weak and strong scaling, or move on to packaging your own software with the [[Tutorials/Apptainer-Introduction|Apptainer tutorials]].&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;myScratch is not set&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; — the course environment is not loaded. Load it and try again.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;A GPU job sits in the queue (pending)&amp;#039;&amp;#039;&amp;#039; — the NVIDIA cards may be busy; the job will start when one frees up. The AMD GPU run uses a reservation and is the reliable one for the course.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;You edited a script badly and want a clean copy&amp;#039;&amp;#039;&amp;#039; — delete your script folder and re-run the launcher to get fresh copies:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm -rf &amp;quot;$myScratch/hpcCourse/pi-tutorial/slurm&amp;quot;&lt;br /&gt;
bash /lustre/shared/hpcCourses/pi-tutorial/exercise/launch.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Linux Basic/Linux Self Assessment|Linux Self Assessment]] — check your command-line readiness.&lt;br /&gt;
* [[Tutorials/Apptainer-Introduction|Apptainer: Introduction]] — packaging software for reproducible runs.&lt;br /&gt;
* [[Tutorials|All tutorials]] · [[Workshops]] · [[Training Materials]]&lt;/div&gt;</description>
			<pubDate>Wed, 05 Aug 2026 07:31:59 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Workflows/Embarassinly-Parallel</comments>
		</item>
		<item>
			<title>Workflows</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Workflows&amp;diff=3021&amp;oldid=3019</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Workflows&amp;diff=3021&amp;oldid=3019</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:18, 28 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l13&quot;&gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Workflows/Parallel-Computing|Parallel Computing]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Workflows/Parallel-Computing|Parallel Computing]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[Workflows/Serial|Serial]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Embarrassingly Parallel&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Embarrassingly Parallel&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Multi-threaded  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Workflows/&lt;/ins&gt;Multi-threaded&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Multi-threaded]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Multi-Process Workflows&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Multi-Process Workflows&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Hybrid Workflows  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Hybrid Workflows  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 28 Jul 2026 19:18:05 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Workflows</comments>
		</item>
		<item>
			<title>Workflows/Multi-threaded</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Workflows/Multi-threaded&amp;diff=3020&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Workflows/Multi-threaded&amp;diff=3020&amp;oldid=0</guid>
			<description>&lt;p&gt;Created page with &amp;quot;&lt;a href=&quot;/index.php?title=Workflows/Serial-Workflows&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Workflows/Serial-Workflows (page does not exist)&quot;&gt;Serial&lt;/a&gt; ran one program on one core. This page takes that same job and lets the program spread its work across &amp;#039;&amp;#039;&amp;#039;many&amp;#039;&amp;#039;&amp;#039; cores on the &amp;#039;&amp;#039;&amp;#039;same&amp;#039;&amp;#039;&amp;#039; machine — still one process, but now with several &amp;#039;&amp;#039;threads&amp;#039;&amp;#039; inside it, all sharing the same memory. It is the gentlest real step up the ladder, because for most tools someone else already did the hard part: the program already knows how to use extra cores. Your job is only to give it some, and...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Workflows/Serial-Workflows|Serial]] ran one program on one core. This page takes that same job and lets the program spread its work across &amp;#039;&amp;#039;&amp;#039;many&amp;#039;&amp;#039;&amp;#039; cores on the &amp;#039;&amp;#039;&amp;#039;same&amp;#039;&amp;#039;&amp;#039; machine — still one process, but now with several &amp;#039;&amp;#039;threads&amp;#039;&amp;#039; inside it, all sharing the same memory. It is the gentlest real step up the ladder, because for most tools someone else already did the hard part: the program already knows how to use extra cores. Your job is only to give it some, and to tell it how many.&lt;br /&gt;
&lt;br /&gt;
If you have read the serial page you already have the whole script. This one is that script with two lines touched — and seeing exactly which two is the point.&lt;br /&gt;
&lt;br /&gt;
== When this is you ==&lt;br /&gt;
&lt;br /&gt;
You are looking at a multi-threaded workflow when the program itself knows how to use more than one core, and says so:&lt;br /&gt;
&lt;br /&gt;
* Its manual offers a flag like &amp;lt;code&amp;gt;--threads 8&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-p 4&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;-@ 16&amp;lt;/code&amp;gt; — some way to hand it a number of cores.&lt;br /&gt;
* Or its documentation mentions &amp;#039;&amp;#039;&amp;#039;OpenMP&amp;#039;&amp;#039;&amp;#039;, and it responds to an &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; setting.&lt;br /&gt;
* It runs as a single program — not several cooperating copies, and not across more than one node.&lt;br /&gt;
&lt;br /&gt;
Plenty of everyday tools are built this way: read aligners, &amp;lt;code&amp;gt;samtools&amp;lt;/code&amp;gt;, and many of the numerical libraries underneath R and Python. If a tool has a threads option and you have been leaving it at its default of 1, this page is how you turn it up correctly on Anunna. If the program has no such option, it is [[Workflows/Serial-Workflows|serial]] — more cores will not help it, and you should go back one rung.&lt;br /&gt;
&lt;br /&gt;
== What it looks like on Anunna ==&lt;br /&gt;
&lt;br /&gt;
Everything from the serial job still holds: you never run the analysis on the login node, your work lives under &amp;lt;code&amp;gt;$myScratch&amp;lt;/code&amp;gt; on Lustre rather than in your home directory, and you describe the job in a script handed to &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt;. Only two lines change.&lt;br /&gt;
&lt;br /&gt;
Start from the serial script, raise the core count, and keep &amp;#039;&amp;#039;&amp;#039;one&amp;#039;&amp;#039;&amp;#039; task:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=my_analysis&lt;br /&gt;
#SBATCH --ntasks=1            # still ONE process ...&lt;br /&gt;
#SBATCH --cpus-per-task=16   # ... but now sixteen cores for it&lt;br /&gt;
#SBATCH --mem=4G             # unchanged: the threads share this memory&lt;br /&gt;
#SBATCH --time=01:00:00      # wall-clock limit; the job is killed past this&lt;br /&gt;
#SBATCH --output=%x-%j.out   # stdout + stderr, named by job name and id&lt;br /&gt;
&lt;br /&gt;
cd &amp;quot;$myScratch/my_analysis&amp;quot;&lt;br /&gt;
&lt;br /&gt;
module load 2024 Python/3.12.3       # replace with your actual module&lt;br /&gt;
&lt;br /&gt;
# Hand the core count Slurm gave you to the program:&lt;br /&gt;
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}&lt;br /&gt;
python myScript.py --input data.csv --output results.csv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Against the serial script the difference is exactly two lines. &amp;lt;code&amp;gt;--cpus-per-task&amp;lt;/code&amp;gt; went from 1 to 16, and one new line was added just before the program runs. Three things did &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; change, and each is deliberate:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;--ntasks&amp;lt;/code&amp;gt; stayed at &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;. This is one process that grows more arms, not many processes — the distinction that separates this page from [[Workflows/Multi-Process-Workflows|Multi-Process]].&lt;br /&gt;
* &amp;lt;code&amp;gt;--mem&amp;lt;/code&amp;gt; stayed the same. The threads all read and write the &amp;#039;&amp;#039;same&amp;#039;&amp;#039; memory, so asking for more cores does not multiply your memory need the way separate processes would.&lt;br /&gt;
* Everything else — the module, the command, the scratch directory — is untouched.&lt;br /&gt;
&lt;br /&gt;
The one new line depends on how your tool takes its core count. An OpenMP program, like the one above, reads the &amp;lt;code&amp;gt;OMP_NUM_THREADS&amp;lt;/code&amp;gt; environment variable. A tool with its own flag takes the same number directly:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
samtools sort --threads ${SLURM_CPUS_PER_TASK} -o sorted.bam input.bam&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Either way the rule is identical: whatever number you put in &amp;lt;code&amp;gt;--cpus-per-task&amp;lt;/code&amp;gt;, feed that same number to the program. Write &amp;lt;code&amp;gt;${SLURM_CPUS_PER_TASK}&amp;lt;/code&amp;gt; rather than hard-coding &amp;lt;code&amp;gt;16&amp;lt;/code&amp;gt; in two places — then changing the request is a one-line edit and the two can never drift apart.&lt;br /&gt;
&lt;br /&gt;
== The line that does the real work ==&lt;br /&gt;
&lt;br /&gt;
It is tempting to read &amp;lt;code&amp;gt;--cpus-per-task=16&amp;lt;/code&amp;gt; as the line that parallelised the job. It is not. That line only &amp;#039;&amp;#039;reserves&amp;#039;&amp;#039; sixteen cores; by itself it does exactly what it did for the serial program — fifteen of them sit idle with your name on them.&lt;br /&gt;
&lt;br /&gt;
The line that actually uses them is the one that passes the count to the program. Slurm sets the cores aside and exports the number as &amp;lt;code&amp;gt;SLURM_CPUS_PER_TASK&amp;lt;/code&amp;gt;, but it never tells your software they exist — you do. This is the single most common mistake on this rung: raise &amp;lt;code&amp;gt;--cpus-per-task&amp;lt;/code&amp;gt;, forget the hand-off line, and you get a serial run that merely wasted fifteen cores and a longer queue wait to boot.&lt;br /&gt;
&lt;br /&gt;
The [[Tutorials/Parallelism-Estimating-Pi|π tutorial]] makes you do this by hand: its OpenMP job ships with &amp;lt;code&amp;gt;OMP_NUM_THREADS=FIXME&amp;lt;/code&amp;gt;, and [[Tutorials/Parallelism-Estimating-Pi#Step 3: Fill in the two blanks|Step 3]] is filling in &amp;lt;code&amp;gt;${SLURM_CPUS_PER_TASK}&amp;lt;/code&amp;gt;. If you want the muscle memory for this page, that is where to get it.&lt;br /&gt;
&lt;br /&gt;
== What it buys you ==&lt;br /&gt;
&lt;br /&gt;
The tutorial runs the same ten-billion-dart π estimate at several thread counts on one node. The shape of the result is the whole lesson:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
variant   cores    wall_s&lt;br /&gt;
serial        1    26.008&lt;br /&gt;
omp           1    26.499&lt;br /&gt;
omp          16     1.663&lt;br /&gt;
omp         128     0.235&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One thread costs the serial time, as it should — same work, one core, plus a hair of overhead. Sixteen cores bring it down roughly sixteenfold; 128 cores by over a hundredfold. For this deliberately friendly problem the threads scale almost perfectly.&lt;br /&gt;
&lt;br /&gt;
Real tools rarely scale this cleanly. Some part of every program refuses to be split, and past a point extra threads stop helping — that is [https://en.wikipedia.org/wiki/Amdahl%27s_law Amdahl&amp;#039;s law], sketched as intuition on the [[Workflows/Parallel-Computing#Why not just ask for a thousand cores|overview]] and shown with the actual curves in the [[Tutorials/Parallelism-Estimating-Pi#Discussion|tutorial&amp;#039;s discussion]]. The practical habit that follows: try a few thread counts on &amp;#039;&amp;#039;your&amp;#039;&amp;#039; data and watch where the speedup flattens, rather than requesting a whole node by reflex.&lt;br /&gt;
&lt;br /&gt;
== The honest limitation ==&lt;br /&gt;
&lt;br /&gt;
Threads share memory, and shared memory means &amp;#039;&amp;#039;&amp;#039;one node&amp;#039;&amp;#039;&amp;#039;. Every thread must reach the same physical RAM, so a multi-threaded job cannot spill onto a second machine — its hard ceiling is the core count of a single node, and not one core beyond. Anunna&amp;#039;s nodes range from tens to hundreds of cores depending on generation (see [[Compute Hardware Overview]]); whichever node you land on, that number is your absolute maximum here.&lt;br /&gt;
&lt;br /&gt;
When a problem needs more than one node&amp;#039;s worth of cores, threads alone cannot take you there. That is the boundary where [[Workflows/Multi-Process-Workflows|multi-process (MPI)]] begins — many processes across many nodes — and where [[Workflows/Hybrid-Workflows|hybrid]] workflows combine the two. Do not reach for them early, though: one node of modern cores is a great deal of compute, and staying on a single node keeps your job script simple and your queue wait short. Climb to the next rung only once you have measured yourself hitting this one&amp;#039;s ceiling.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Workflows/Parallel-Computing|Parallel Computing]] — the overview, and the map to the other workflow types.&lt;br /&gt;
* [[Workflows/Serial-Workflows|Serial Workflows]] — the baseline this page starts from.&lt;br /&gt;
* [[Workflows/Multi-Process-Workflows|Multi-Process Workflows]] — the next rung, for when one node is not enough.&lt;br /&gt;
* [[Tutorials/Parallelism-Estimating-Pi|Parallelism: Estimating π]] — its OpenMP rung is the worked example for this page.&lt;br /&gt;
* [[Compute Hardware Overview]] — how many cores a single node actually has.&lt;/div&gt;</description>
			<pubDate>Tue, 28 Jul 2026 19:15:59 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Workflows/Multi-threaded</comments>
		</item>
		<item>
			<title>Workflows</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Workflows&amp;diff=3019&amp;oldid=3010</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Workflows&amp;diff=3019&amp;oldid=3010</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Parallel Workflows&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:15, 28 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l14&quot;&gt;Line 14:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 14:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Workflows/Parallel-Computing|Parallel Computing]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Workflows/Parallel-Computing|Parallel Computing]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Embarrassingly Parallel&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Embarrassingly Parallel&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Multi-threaded &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Workflows&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Multi-threaded  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Multi-Process Workflows&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Multi-Process Workflows&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Hybrid Workflows  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Hybrid Workflows  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 28 Jul 2026 19:15:12 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Workflows</comments>
		</item>
		<item>
			<title>Storage Requests</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Storage_Requests&amp;diff=3018&amp;oldid=3016</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Storage_Requests&amp;diff=3018&amp;oldid=3016</guid>
			<description>&lt;p&gt;Removed the lustre filesystems from the line about increasing what you need, because quota are only set on your home dir&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:52, 28 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Submit a request through [[How to Get Help]] (the WUR support portal, &amp;#039;&amp;#039;&amp;#039;Anunna (HPC)&amp;#039;&amp;#039;&amp;#039; service). It helps to include:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Submit a request through [[How to Get Help]] (the WUR support portal, &amp;#039;&amp;#039;&amp;#039;Anunna (HPC)&amp;#039;&amp;#039;&amp;#039; service). It helps to include:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;which filesystem &lt;/del&gt;you need &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;more of — &lt;/del&gt;home&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, [[Compute Storage|Lustre]] &lt;/del&gt;(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;backup / nobackup / scratch&lt;/del&gt;)&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, or [[Archival Storage|/archive]];&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;how much space &lt;/ins&gt;you need &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;in your /&lt;/ins&gt;home &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;directory &lt;/ins&gt;(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;normally you get 200GB&lt;/ins&gt;), and for how long;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* how much space you need&lt;/del&gt;, and for how long;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* the group or project it is for.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* the group or project it is for.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 28 Jul 2026 07:52:21 GMT</pubDate>
			<dc:creator>Roest039</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Storage_Requests</comments>
		</item>
		<item>
			<title>Support Ticket System</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Support_Ticket_System&amp;diff=3017&amp;oldid=2879</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Support_Ticket_System&amp;diff=3017&amp;oldid=2879</guid>
			<description>&lt;p&gt;Changed HPC (Anunna) to Anunna (HPC) as it is called on the support page&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 06:54, 28 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l4&quot;&gt;Line 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Go to the [https://support.wur.nl/esc WUR support portal].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Go to the [https://support.wur.nl/esc WUR support portal].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Choose to create a ticket and register it on the &#039;&#039;&#039;HPC &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(Anunna&lt;/del&gt;)&#039;&#039;&#039; service.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Choose to create a ticket and register it on the &#039;&#039;&#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Anunna (&lt;/ins&gt;HPC)&#039;&#039;&#039; service.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Describe your issue — see [[Reporting Incidents]] for what to include.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Describe your issue — see [[Reporting Incidents]] for what to include.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 28 Jul 2026 06:54:22 GMT</pubDate>
			<dc:creator>Roest039</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Support_Ticket_System</comments>
		</item>
		<item>
			<title>Storage Requests</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Storage_Requests&amp;diff=3016&amp;oldid=2903</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Storage_Requests&amp;diff=3016&amp;oldid=2903</guid>
			<description>&lt;p&gt;Changed HPC (Anunna) to Anunna (HPC) as it is called on the support page&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 06:51, 28 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Requesting more storage ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Requesting more storage ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Submit a request through [[How to Get Help]] (the WUR support portal, &#039;&#039;&#039;HPC &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(Anunna&lt;/del&gt;)&#039;&#039;&#039; service). It helps to include:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Submit a request through [[How to Get Help]] (the WUR support portal, &#039;&#039;&#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Anunna (&lt;/ins&gt;HPC)&#039;&#039;&#039; service). It helps to include:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* which filesystem you need more of — home, [[Compute Storage|Lustre]] (backup / nobackup / scratch), or [[Archival Storage|/archive]];&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* which filesystem you need more of — home, [[Compute Storage|Lustre]] (backup / nobackup / scratch), or [[Archival Storage|/archive]];&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 28 Jul 2026 06:51:58 GMT</pubDate>
			<dc:creator>Roest039</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Storage_Requests</comments>
		</item>
		<item>
			<title>How to Get Help</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=How_to_Get_Help&amp;diff=3015&amp;oldid=2878</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=How_to_Get_Help&amp;diff=3015&amp;oldid=2878</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;WUR users: &lt;/span&gt; Changed HPC (Anunna) to Anunna (HPC) as it is called on the support page&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 06:50, 28 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== WUR users ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== WUR users ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Submit a support ticket through the [https://support.wur.nl/esc WUR support portal] and select the &#039;&#039;&#039;HPC &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(Anunna&lt;/del&gt;)&#039;&#039;&#039; service. See [[Support Ticket System]] for details.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Submit a support ticket through the [https://support.wur.nl/esc WUR support portal] and select the &#039;&#039;&#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Anunna (&lt;/ins&gt;HPC)&#039;&#039;&#039; service. See [[Support Ticket System]] for details.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;WUR users can also join the &amp;#039;&amp;#039;&amp;#039;Anunna Users&amp;#039;&amp;#039;&amp;#039; Microsoft Teams team for user-to-user questions and tips — use the join code &amp;lt;code&amp;gt;2xo7wv2&amp;lt;/code&amp;gt; (&amp;quot;Join a team with a code&amp;quot;). This is a peer community rather than an official support channel, so for problems that need the HPC team, still file a ticket.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;WUR users can also join the &amp;#039;&amp;#039;&amp;#039;Anunna Users&amp;#039;&amp;#039;&amp;#039; Microsoft Teams team for user-to-user questions and tips — use the join code &amp;lt;code&amp;gt;2xo7wv2&amp;lt;/code&amp;gt; (&amp;quot;Join a team with a code&amp;quot;). This is a peer community rather than an official support channel, so for problems that need the HPC team, still file a ticket.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 28 Jul 2026 06:50:24 GMT</pubDate>
			<dc:creator>Roest039</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:How_to_Get_Help</comments>
		</item>
		<item>
			<title>Workflows/Serial-Workflows</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Workflows/Serial-Workflows&amp;diff=3014&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Workflows/Serial-Workflows&amp;diff=3014&amp;oldid=0</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Honfi001&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Honfi001 (page does not exist)&quot;&gt;&lt;bdi&gt;Honfi001&lt;/bdi&gt;&lt;/a&gt; moved page &lt;a href=&quot;/index.php?title=Workflows/Serial-Workflows&amp;amp;redirect=no&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Workflows/Serial-Workflows (page does not exist)&quot;&gt;Workflows/Serial-Workflows&lt;/a&gt; to &lt;a href=&quot;/Workflows/Serial&quot; title=&quot;Workflows/Serial&quot;&gt;Workflows/Serial&lt;/a&gt; without leaving a redirect&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Every other page in this section describes a way of splitting work across many cores. This one describes &amp;#039;&amp;#039;not&amp;#039;&amp;#039; doing that — one program, running on a single core, from start to finish. It is the baseline, and, to be honest up front, it is not a parallel workflow at all.&lt;br /&gt;
&lt;br /&gt;
It earns a page anyway, for two reasons. Most software you did not &amp;#039;&amp;#039;specifically&amp;#039;&amp;#039; choose for its parallelism runs this way, so this is where  many jobs on Anunna may actually belong. And every other workflow in this section is best understood as a small change to the serial job script — so it is worth seeing the starting point clearly before you start changing lines in it.&lt;br /&gt;
&lt;br /&gt;
== When this is you ==&lt;br /&gt;
&lt;br /&gt;
You are almost certainly looking at a serial workflow if any of these are true:&lt;br /&gt;
&lt;br /&gt;
* The program&amp;#039;s manual never mentions threads, cores, ranks, MPI, or a GPU.&lt;br /&gt;
* It has no flag like &amp;lt;code&amp;gt;--threads&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-p&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;-n&amp;lt;/code&amp;gt; for handing it more cores.&lt;br /&gt;
* You run it on your laptop today, and it uses one core there too.&lt;br /&gt;
&lt;br /&gt;
That covers a lot of ground: most command-line bioinformatics tools, most R and Python scripts you did not deliberately parallelise, most one-off analyses. If you are not sure, assume serial — it is the safe default, and climbing the ladder later is easy once the baseline works.&lt;br /&gt;
&lt;br /&gt;
== What it looks like on Anunna ==&lt;br /&gt;
&lt;br /&gt;
You never run the analysis directly on the login node — that machine is shared by everyone and is meant for editing, submitting, and light housekeeping only. Instead you describe the job in a short script and hand it to Slurm with &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt;; Slurm finds a compute node and runs it there.&lt;br /&gt;
&lt;br /&gt;
A minimal serial job script looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=my_analysis&lt;br /&gt;
#SBATCH --ntasks=1            # one process&lt;br /&gt;
#SBATCH --cpus-per-task=1     # one core for that process&lt;br /&gt;
#SBATCH --mem=4G              # memory, sized to your data&lt;br /&gt;
#SBATCH --time=01:00:00       # wall-clock limit; the job is killed past this&lt;br /&gt;
#SBATCH --output=%x-%j.out    # stdout + stderr, named by job name and id&lt;br /&gt;
&lt;br /&gt;
cd &amp;quot;$myScratch/my_analysis&amp;quot;&lt;br /&gt;
&lt;br /&gt;
module load 2024 Python/3.12.3     # replace with your actual module&lt;br /&gt;
python myScript.py --input data.csv --output results.csv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save it as &amp;lt;code&amp;gt;run.slurm&amp;lt;/code&amp;gt; and submit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sbatch run.slurm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Two things to notice, because the other pages in this section keep coming back to them:&lt;br /&gt;
&lt;br /&gt;
* Work lives under your lustre directories, e.g. &amp;lt;code&amp;gt;$myScratch&amp;lt;/code&amp;gt;, not in your home directory. Lustre is the fast, roomy filesystem built for job data; home is small and is not meant to handle computations.&lt;br /&gt;
* The two lines that decide how much compute the job gets are &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;--ntasks&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;--cpus-per-task&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;, and here they are both &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;. Every other workflow in this section is essentially this same script with one of those two numbers raised — plus a matching change telling the program to actually use what it was given.&lt;br /&gt;
&lt;br /&gt;
== Why asking for more cores does nothing ==&lt;br /&gt;
&lt;br /&gt;
It is tempting to bump &amp;lt;code&amp;gt;--cpus-per-task&amp;lt;/code&amp;gt; to 8 and hope for an eightfold speedup. For a serial program it buys you nothing.&lt;br /&gt;
&lt;br /&gt;
A serial program is a single stream of instructions with nowhere to put a second core. Slurm will dutifully reserve all eight if you ask, but seven of them sit idle &amp;#039;&amp;#039;&amp;#039;with your name on them&amp;#039;&amp;#039;&amp;#039; for the entire run. You also wait longer in the queue for eight free cores than for one, and if the cluster does fairshare accounting you may be charged for the idle seven regardless. The job does not finish a moment sooner. The only thing that makes a serial program use more than one core is &amp;#039;&amp;#039;&amp;#039;rewriting it&amp;#039;&amp;#039;&amp;#039; to be parallel — which is what the rest of this section is about.&lt;br /&gt;
&lt;br /&gt;
The one resource worth sizing on a serial job is &amp;lt;code&amp;gt;--mem&amp;lt;/code&amp;gt;: give it enough memory for your data, and no more.&lt;br /&gt;
&lt;br /&gt;
== The honest limitation ==&lt;br /&gt;
&lt;br /&gt;
Serial is not a parallel workflow, and no Slurm flag changes that. Its ceiling is one core&amp;#039;s worth of speed, full stop.&lt;br /&gt;
&lt;br /&gt;
That is not a problem until it is — until the run takes four days, or the dataset no longer fits in memory. When you hit that wall, the script above is your launch pad, and the only question is &amp;#039;&amp;#039;which&amp;#039;&amp;#039; line to change:&lt;br /&gt;
&lt;br /&gt;
* Same program, many independent inputs — a parameter sweep, two hundred samples? You want [[Workflows/Embarrassingly-Parallel|Embarrassingly Parallel]]: the job array, and often no change to the program at all.&lt;br /&gt;
* The program itself offers a &amp;lt;code&amp;gt;--threads&amp;lt;/code&amp;gt; option? That is [[Workflows/Multi-Threaded-Workflows|Multi-Threaded]] — raise &amp;lt;code&amp;gt;--cpus-per-task&amp;lt;/code&amp;gt; and point the tool at it.&lt;br /&gt;
* The program is built on MPI? That is [[Workflows/Multi-Process-Workflows|Multi-Process]] — raise &amp;lt;code&amp;gt;--ntasks&amp;lt;/code&amp;gt; and launch with &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you would rather see all of these run side by side on one small problem — with this serial job as the reference everything else is measured against — work through [[Tutorials/Parallelism-Estimating-Pi|Parallelism: Estimating π]]. Its serial rung plays exactly this role, and the [[Tutorials/Parallelism-Estimating-Pi#Discussion|discussion]] shows what climbing the ladder does and does not buy you.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Workflows/Parallel-Computing|Parallel Computing]] — the overview, and the map to the other workflow types.&lt;br /&gt;
* [[Tutorials/Parallelism-Estimating-Pi|Parallelism: Estimating π]] — the same job run serially and every other way.&lt;br /&gt;
* [[Compute Hardware Overview]] — what a single core is actually attached to.&lt;br /&gt;
* [[Workflows|Workflows]] — job submission, debugging, and checkpointing.&lt;/div&gt;</description>
			<pubDate>Mon, 27 Jul 2026 10:36:45 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Workflows/Serial-Workflows</comments>
		</item>
		<item>
			<title>Workflows/Serial-Workflows</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Workflows/Serial-Workflows&amp;diff=3013&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Workflows/Serial-Workflows&amp;diff=3013&amp;oldid=0</guid>
			<description>&lt;p&gt;Created page with &amp;quot;Every other page in this section describes a way of splitting work across many cores. This one describes &amp;#039;&amp;#039;not&amp;#039;&amp;#039; doing that — one program, running on a single core, from start to finish. It is the baseline, and, to be honest up front, it is not a parallel workflow at all.  It earns a page anyway, for two reasons. Most software you did not &amp;#039;&amp;#039;specifically&amp;#039;&amp;#039; choose for its parallelism runs this way, so this is where  many jobs on Anunna may actually belong. And every othe...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Every other page in this section describes a way of splitting work across many cores. This one describes &amp;#039;&amp;#039;not&amp;#039;&amp;#039; doing that — one program, running on a single core, from start to finish. It is the baseline, and, to be honest up front, it is not a parallel workflow at all.&lt;br /&gt;
&lt;br /&gt;
It earns a page anyway, for two reasons. Most software you did not &amp;#039;&amp;#039;specifically&amp;#039;&amp;#039; choose for its parallelism runs this way, so this is where  many jobs on Anunna may actually belong. And every other workflow in this section is best understood as a small change to the serial job script — so it is worth seeing the starting point clearly before you start changing lines in it.&lt;br /&gt;
&lt;br /&gt;
== When this is you ==&lt;br /&gt;
&lt;br /&gt;
You are almost certainly looking at a serial workflow if any of these are true:&lt;br /&gt;
&lt;br /&gt;
* The program&amp;#039;s manual never mentions threads, cores, ranks, MPI, or a GPU.&lt;br /&gt;
* It has no flag like &amp;lt;code&amp;gt;--threads&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-p&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;-n&amp;lt;/code&amp;gt; for handing it more cores.&lt;br /&gt;
* You run it on your laptop today, and it uses one core there too.&lt;br /&gt;
&lt;br /&gt;
That covers a lot of ground: most command-line bioinformatics tools, most R and Python scripts you did not deliberately parallelise, most one-off analyses. If you are not sure, assume serial — it is the safe default, and climbing the ladder later is easy once the baseline works.&lt;br /&gt;
&lt;br /&gt;
== What it looks like on Anunna ==&lt;br /&gt;
&lt;br /&gt;
You never run the analysis directly on the login node — that machine is shared by everyone and is meant for editing, submitting, and light housekeeping only. Instead you describe the job in a short script and hand it to Slurm with &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt;; Slurm finds a compute node and runs it there.&lt;br /&gt;
&lt;br /&gt;
A minimal serial job script looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=my_analysis&lt;br /&gt;
#SBATCH --ntasks=1            # one process&lt;br /&gt;
#SBATCH --cpus-per-task=1     # one core for that process&lt;br /&gt;
#SBATCH --mem=4G              # memory, sized to your data&lt;br /&gt;
#SBATCH --time=01:00:00       # wall-clock limit; the job is killed past this&lt;br /&gt;
#SBATCH --output=%x-%j.out    # stdout + stderr, named by job name and id&lt;br /&gt;
&lt;br /&gt;
cd &amp;quot;$myScratch/my_analysis&amp;quot;&lt;br /&gt;
&lt;br /&gt;
module load 2024 Python/3.12.3     # replace with your actual module&lt;br /&gt;
python myScript.py --input data.csv --output results.csv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save it as &amp;lt;code&amp;gt;run.slurm&amp;lt;/code&amp;gt; and submit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sbatch run.slurm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Two things to notice, because the other pages in this section keep coming back to them:&lt;br /&gt;
&lt;br /&gt;
* Work lives under your lustre directories, e.g. &amp;lt;code&amp;gt;$myScratch&amp;lt;/code&amp;gt;, not in your home directory. Lustre is the fast, roomy filesystem built for job data; home is small and is not meant to handle computations.&lt;br /&gt;
* The two lines that decide how much compute the job gets are &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;--ntasks&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;--cpus-per-task&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;, and here they are both &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;. Every other workflow in this section is essentially this same script with one of those two numbers raised — plus a matching change telling the program to actually use what it was given.&lt;br /&gt;
&lt;br /&gt;
== Why asking for more cores does nothing ==&lt;br /&gt;
&lt;br /&gt;
It is tempting to bump &amp;lt;code&amp;gt;--cpus-per-task&amp;lt;/code&amp;gt; to 8 and hope for an eightfold speedup. For a serial program it buys you nothing.&lt;br /&gt;
&lt;br /&gt;
A serial program is a single stream of instructions with nowhere to put a second core. Slurm will dutifully reserve all eight if you ask, but seven of them sit idle &amp;#039;&amp;#039;&amp;#039;with your name on them&amp;#039;&amp;#039;&amp;#039; for the entire run. You also wait longer in the queue for eight free cores than for one, and if the cluster does fairshare accounting you may be charged for the idle seven regardless. The job does not finish a moment sooner. The only thing that makes a serial program use more than one core is &amp;#039;&amp;#039;&amp;#039;rewriting it&amp;#039;&amp;#039;&amp;#039; to be parallel — which is what the rest of this section is about.&lt;br /&gt;
&lt;br /&gt;
The one resource worth sizing on a serial job is &amp;lt;code&amp;gt;--mem&amp;lt;/code&amp;gt;: give it enough memory for your data, and no more.&lt;br /&gt;
&lt;br /&gt;
== The honest limitation ==&lt;br /&gt;
&lt;br /&gt;
Serial is not a parallel workflow, and no Slurm flag changes that. Its ceiling is one core&amp;#039;s worth of speed, full stop.&lt;br /&gt;
&lt;br /&gt;
That is not a problem until it is — until the run takes four days, or the dataset no longer fits in memory. When you hit that wall, the script above is your launch pad, and the only question is &amp;#039;&amp;#039;which&amp;#039;&amp;#039; line to change:&lt;br /&gt;
&lt;br /&gt;
* Same program, many independent inputs — a parameter sweep, two hundred samples? You want [[Workflows/Embarrassingly-Parallel|Embarrassingly Parallel]]: the job array, and often no change to the program at all.&lt;br /&gt;
* The program itself offers a &amp;lt;code&amp;gt;--threads&amp;lt;/code&amp;gt; option? That is [[Workflows/Multi-Threaded-Workflows|Multi-Threaded]] — raise &amp;lt;code&amp;gt;--cpus-per-task&amp;lt;/code&amp;gt; and point the tool at it.&lt;br /&gt;
* The program is built on MPI? That is [[Workflows/Multi-Process-Workflows|Multi-Process]] — raise &amp;lt;code&amp;gt;--ntasks&amp;lt;/code&amp;gt; and launch with &amp;lt;code&amp;gt;mpirun&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you would rather see all of these run side by side on one small problem — with this serial job as the reference everything else is measured against — work through [[Tutorials/Parallelism-Estimating-Pi|Parallelism: Estimating π]]. Its serial rung plays exactly this role, and the [[Tutorials/Parallelism-Estimating-Pi#Discussion|discussion]] shows what climbing the ladder does and does not buy you.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Workflows/Parallel-Computing|Parallel Computing]] — the overview, and the map to the other workflow types.&lt;br /&gt;
* [[Tutorials/Parallelism-Estimating-Pi|Parallelism: Estimating π]] — the same job run serially and every other way.&lt;br /&gt;
* [[Compute Hardware Overview]] — what a single core is actually attached to.&lt;br /&gt;
* [[Workflows|Workflows]] — job submission, debugging, and checkpointing.&lt;/div&gt;</description>
			<pubDate>Mon, 27 Jul 2026 10:35:46 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Workflows/Serial-Workflows</comments>
		</item>
		<item>
			<title>Workflows/Parallel-Computing</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Workflows/Parallel-Computing&amp;diff=3012&amp;oldid=3009</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Workflows/Parallel-Computing&amp;diff=3012&amp;oldid=3009</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Why not just ask for a thousand cores&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:40, 23 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-multi&quot; lang=&quot;en&quot;&gt;(One intermediate revision by the same user not shown)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l27&quot;&gt;Line 27:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 27:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Because you would not get a thousandfold speedup, and usually not anything close to it.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Because you would not get a thousandfold speedup, and usually not anything close to it.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Every job has parts that cannot be divided: reading the input, setting up, writing the results, and any step that has to wait for the step before it. Adding workers shrinks the part that &#039;&#039;can&#039;&#039; be split and does nothing whatsoever to the part that cannot. Push far enough and the stubborn part is all that is left, and it sets a floor on your wall-clock time no matter how many cores you requested. This is &#039;&#039;&#039;Amdahl&#039;s law&#039;&#039;&#039;, and the practical version of it is: &#039;&#039;&#039;measure before you ask for more&#039;&#039;&#039;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Every job has parts that cannot be divided: reading the input, setting up, writing the results, and any step that has to wait for the step before it. Adding workers shrinks the part that &#039;&#039;can&#039;&#039; be split and does nothing whatsoever to the part that cannot. Push far enough and the stubborn part is all that is left, and it sets a floor on your wall-clock time no matter how many cores you requested. This is &#039;&#039;&#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[https://en.wikipedia.org/wiki/Amdahl%27s_law &lt;/ins&gt;Amdahl&#039;s law&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/ins&gt;&#039;&#039;&#039;, and the practical version of it is: &#039;&#039;&#039;measure before you ask for more&#039;&#039;&#039;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Reality adds two more brakes. Workers that need to talk to each other spend real time doing it, and that cost grows as you add them. And a job asking for 256 cores waits in the queue until 256 are free — a 16-core job that starts &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;whithin &lt;/del&gt;ten minutes often finishes long before the greedy one has even begun.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Reality adds two more brakes. Workers that need to talk to each other spend real time doing it, and that cost grows as you add them. And a job asking for 256 cores waits in the queue until 256 are free — a 16-core job that starts &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;within &lt;/ins&gt;ten minutes often finishes long before the greedy one has even begun.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If you would rather see the ceiling than read about it, the [[Tutorials/Parallelism-Estimating-Pi#Discussion|π tutorial&amp;#039;s discussion]] has the timings and the scaling curves.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If you would rather see the ceiling than read about it, the [[Tutorials/Parallelism-Estimating-Pi#Discussion|π tutorial&amp;#039;s discussion]] has the timings and the scaling curves.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Thu, 23 Jul 2026 15:40:28 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Workflows/Parallel-Computing</comments>
		</item>
		<item>
			<title>Workflows</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Workflows&amp;diff=3010&amp;oldid=3004</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Workflows&amp;diff=3010&amp;oldid=3004</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Parallel Workflows&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:23, 23 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l12&quot;&gt;Line 12:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 12:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Parallel Workflows ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Parallel Workflows ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Parallel Computing&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Workflows/&lt;/ins&gt;Parallel&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-&lt;/ins&gt;Computing&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Parallel Computing]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Embarrassingly Parallel&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Embarrassingly Parallel&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Multi-threaded Workflows&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Multi-threaded Workflows&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Thu, 23 Jul 2026 15:23:31 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Workflows</comments>
		</item>
		<item>
			<title>Workflows/Paralle-Computing</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Workflows/Paralle-Computing&amp;diff=3009&amp;oldid=3006</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Workflows/Paralle-Computing&amp;diff=3009&amp;oldid=3006</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Honfi001&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Honfi001 (page does not exist)&quot;&gt;&lt;bdi&gt;Honfi001&lt;/bdi&gt;&lt;/a&gt; moved page &lt;a href=&quot;/index.php?title=Workflows/Paralle-Computing&amp;amp;redirect=no&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Workflows/Paralle-Computing (page does not exist)&quot;&gt;Workflows/Paralle-Computing&lt;/a&gt; to &lt;a href=&quot;/Workflows/Parallel-Computing&quot; title=&quot;Workflows/Parallel-Computing&quot;&gt;Workflows/Parallel-Computing&lt;/a&gt; without leaving a redirect&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:22, 23 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-multi&quot; lang=&quot;en&quot;&gt;(2 intermediate revisions by the same user not shown)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Your analysis runs. It just runs for too long, or it no longer fits on one machine. &#039;&#039;&#039;Parallel computing&#039;&#039;&#039; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is &lt;/del&gt;the answer to both, and this page is the map: what it actually means on Anunna, and which of the six workflow types below is yours.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Your analysis runs. It just runs for too long, or it no longer fits on one machine. &#039;&#039;&#039;Parallel computing&#039;&#039;&#039; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;may be &lt;/ins&gt;the answer to both, and this page is the map: what it actually means on Anunna, and which of the six workflow types below is yours.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Each section is a short paragraph and a link. Read them, recognise your own problem in one of them, and follow it. If you would rather learn by doing, the [[Tutorials/Parallelism-Estimating-Pi|π estimation tutorial]] walks the same ladder with real code and real timings.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Each section is a short paragraph and a link. Read them, recognise your own problem in one of them, and follow it. If you would rather learn by doing, the [[Tutorials/Parallelism-Estimating-Pi|π estimation tutorial]] walks the same ladder with real code and real timings.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l29&quot;&gt;Line 29:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 29:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Every job has parts that cannot be divided: reading the input, setting up, writing the results, and any step that has to wait for the step before it. Adding workers shrinks the part that &amp;#039;&amp;#039;can&amp;#039;&amp;#039; be split and does nothing whatsoever to the part that cannot. Push far enough and the stubborn part is all that is left, and it sets a floor on your wall-clock time no matter how many cores you requested. This is &amp;#039;&amp;#039;&amp;#039;Amdahl&amp;#039;s law&amp;#039;&amp;#039;&amp;#039;, and the practical version of it is: &amp;#039;&amp;#039;&amp;#039;measure before you ask for more&amp;#039;&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Every job has parts that cannot be divided: reading the input, setting up, writing the results, and any step that has to wait for the step before it. Adding workers shrinks the part that &amp;#039;&amp;#039;can&amp;#039;&amp;#039; be split and does nothing whatsoever to the part that cannot. Push far enough and the stubborn part is all that is left, and it sets a floor on your wall-clock time no matter how many cores you requested. This is &amp;#039;&amp;#039;&amp;#039;Amdahl&amp;#039;s law&amp;#039;&amp;#039;&amp;#039;, and the practical version of it is: &amp;#039;&amp;#039;&amp;#039;measure before you ask for more&amp;#039;&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Reality adds two more brakes. Workers that need to talk to each other spend real time doing it, and that cost grows as you add them. And a job asking for 256 cores waits in the queue until 256 are free — a 16-core job that starts &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;in &lt;/del&gt;ten minutes often finishes long before the greedy one has even begun.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Reality adds two more brakes. Workers that need to talk to each other spend real time doing it, and that cost grows as you add them. And a job asking for 256 cores waits in the queue until 256 are free — a 16-core job that starts &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;whithin &lt;/ins&gt;ten minutes often finishes long before the greedy one has even begun.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If you would rather see the ceiling than read about it, the [[Tutorials/Parallelism-Estimating-Pi#Discussion|π tutorial&amp;#039;s discussion]] has the timings and the scaling curves.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If you would rather see the ceiling than read about it, the [[Tutorials/Parallelism-Estimating-Pi#Discussion|π tutorial&amp;#039;s discussion]] has the timings and the scaling curves.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Thu, 23 Jul 2026 15:22:44 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Workflows/Paralle-Computing</comments>
		</item>
		<item>
			<title>Workflows/Paralle-Computing</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Workflows/Paralle-Computing&amp;diff=3006&amp;oldid=0</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Workflows/Paralle-Computing&amp;diff=3006&amp;oldid=0</guid>
			<description>&lt;p&gt;Created page with &amp;quot;Your analysis runs. It just runs for too long, or it no longer fits on one machine. &amp;#039;&amp;#039;&amp;#039;Parallel computing&amp;#039;&amp;#039;&amp;#039; is the answer to both, and this page is the map: what it actually means on Anunna, and which of the six workflow types below is yours.  Each section is a short paragraph and a link. Read them, recognise your own problem in one of them, and follow it. If you would rather learn by doing, the &lt;a href=&quot;/Tutorials/Parallelism-Estimating-Pi&quot; title=&quot;Tutorials/Parallelism-Estimating-Pi&quot;&gt;π estimation tutorial&lt;/a&gt; walks the sa...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Your analysis runs. It just runs for too long, or it no longer fits on one machine. &amp;#039;&amp;#039;&amp;#039;Parallel computing&amp;#039;&amp;#039;&amp;#039; is the answer to both, and this page is the map: what it actually means on Anunna, and which of the six workflow types below is yours.&lt;br /&gt;
&lt;br /&gt;
Each section is a short paragraph and a link. Read them, recognise your own problem in one of them, and follow it. If you would rather learn by doing, the [[Tutorials/Parallelism-Estimating-Pi|π estimation tutorial]] walks the same ladder with real code and real timings.&lt;br /&gt;
&lt;br /&gt;
== Why bother ==&lt;br /&gt;
&lt;br /&gt;
Nothing glamorous. The reasons are almost always one of these:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;The run takes too long.&amp;#039;&amp;#039;&amp;#039; Four days for one analysis means four days before you find out whether the parameters were right.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;The dataset outgrew the machine.&amp;#039;&amp;#039;&amp;#039; What fitted comfortably on a laptop last year now needs more memory than a laptop has.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;There are simply a lot of runs.&amp;#039;&amp;#039;&amp;#039; Two hundred samples, one pipeline, one after another after another.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;The hardware is sitting idle.&amp;#039;&amp;#039;&amp;#039; Anunna&amp;#039;s compute nodes carry anywhere from tens to hundreds of cores each, depending on which generation you land on (see [[Compute Hardware Overview]]). A serial job uses exactly one of them and leaves the rest with nothing to do.&lt;br /&gt;
&lt;br /&gt;
A cluster does not make your program faster. It lets &amp;#039;&amp;#039;&amp;#039;many pieces of the work happen at once&amp;#039;&amp;#039;&amp;#039; — but only if the work can be divided, and only if your program has been told to divide it. Slurm hands you the cores; it does not teach your software to use them.&lt;br /&gt;
&lt;br /&gt;
== The one idea ==&lt;br /&gt;
&lt;br /&gt;
Underneath all the jargon there are only two ways to divide work:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Split the data.&amp;#039;&amp;#039;&amp;#039; Every worker gets a different slice of the same job — different samples, different rows, different darts.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Split the steps.&amp;#039;&amp;#039;&amp;#039; Every worker takes a different part of the calculation, and they exchange results as they go.&lt;br /&gt;
&lt;br /&gt;
Everything below is a variation on one of those two. What differs is &amp;#039;&amp;#039;who the workers are&amp;#039;&amp;#039; — threads, processes, GPU device threads — and &amp;#039;&amp;#039;how much they have to talk to each other&amp;#039;&amp;#039;. That second part is what separates the easy cases from the hard ones, so it is worth noticing which side of it your problem sits on.&lt;br /&gt;
&lt;br /&gt;
== Why not just ask for a thousand cores ==&lt;br /&gt;
&lt;br /&gt;
Because you would not get a thousandfold speedup, and usually not anything close to it.&lt;br /&gt;
&lt;br /&gt;
Every job has parts that cannot be divided: reading the input, setting up, writing the results, and any step that has to wait for the step before it. Adding workers shrinks the part that &amp;#039;&amp;#039;can&amp;#039;&amp;#039; be split and does nothing whatsoever to the part that cannot. Push far enough and the stubborn part is all that is left, and it sets a floor on your wall-clock time no matter how many cores you requested. This is &amp;#039;&amp;#039;&amp;#039;Amdahl&amp;#039;s law&amp;#039;&amp;#039;&amp;#039;, and the practical version of it is: &amp;#039;&amp;#039;&amp;#039;measure before you ask for more&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Reality adds two more brakes. Workers that need to talk to each other spend real time doing it, and that cost grows as you add them. And a job asking for 256 cores waits in the queue until 256 are free — a 16-core job that starts in ten minutes often finishes long before the greedy one has even begun.&lt;br /&gt;
&lt;br /&gt;
If you would rather see the ceiling than read about it, the [[Tutorials/Parallelism-Estimating-Pi#Discussion|π tutorial&amp;#039;s discussion]] has the timings and the scaling curves.&lt;br /&gt;
&lt;br /&gt;
== Which workflow is yours ==&lt;br /&gt;
&lt;br /&gt;
Six types, roughly in order of how much you have to think about. You should be able to recognise yourself in one of them.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Serial — one process, one core, start to finish.&amp;#039;&amp;#039;&amp;#039; This is the baseline, and it is honestly not a parallel workflow at all. It is here because every other type is best described as a change to it: same job script, one line different. Most software you did not specifically choose for its parallelism is serial, and asking Slurm for more cores will not change that — the extra cores sit idle with your name on them. Start here so the other five have something to differ from. Full page: [[Workflows/Serial-Workflows|Serial Workflows]].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Embarrassingly parallel — the same program, many times, on different inputs.&amp;#039;&amp;#039;&amp;#039; Two hundred samples through one pipeline. A parameter sweep. A hundred simulations that differ only by their random seed. The runs never need to talk to each other, which makes this both the easiest kind of parallelism and by far the most common in biology. Slurm has a purpose-built tool for it, the job array, and it usually needs no change to your program whatsoever. If your problem fits here, you are in luck. Full page: [[Workflows/Embarrassingly-Parallel|Embarrassingly Parallel]].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Multi-threaded — one program, many cores, shared memory.&amp;#039;&amp;#039;&amp;#039; The program stays a single process but splits its work across several threads, all reading and writing the same data in memory. This is what a tool means when its manual offers &amp;lt;code&amp;gt;--threads 16&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-p 8&amp;lt;/code&amp;gt;. It is the gentlest real parallelism to adopt, because someone else already did the hard part. Its hard limit is that every thread must live on the same node: you can grow to that node&amp;#039;s core count and not one core further. Full page: [[Workflows/Multi-Threaded-Workflows|Multi-Threaded Workflows]].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Multi-process — many processes that talk to each other.&amp;#039;&amp;#039;&amp;#039; When one node is not enough, the work is split across separate processes, each with its own private memory, passing data over the network as the calculation proceeds. The standard for this is MPI, and it is what lets a single job span the cluster. The catch is that the program must have been written for MPI from the inside; it is not something you can bolt on from the job script. Full page: [[Workflows/Multi-Process-Workflows|Multi-Process Workflows]].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hybrid — processes between nodes, threads within them.&amp;#039;&amp;#039;&amp;#039; A few MPI processes per node, each one running a handful of threads. This buys the reach of MPI with less of its communication overhead, and it is how most large simulation codes actually run at scale. The price is two tuning knobs that interact, and arithmetic that has to come out right — processes times threads must match what you asked Slurm for. This is the one people most often get subtly wrong. Full page: [[Workflows/Hybrid-Workflows|Hybrid Workflows]].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GPU — hand the heavy arithmetic to an accelerator.&amp;#039;&amp;#039;&amp;#039; A GPU runs thousands of very simple workers at once and is spectacular on the narrow class of problems shaped to suit it. Anunna has both NVIDIA and AMD cards, in separate partitions — see [[Compute Hardware Overview]] for what is actually installed. The limitation here is absolute rather than a matter of degree: the software must already have a GPU version. Most software does not, and no Slurm flag will conjure one. Full page: [[Workflows/GPU-Workflows|GPU Workflows]].&lt;br /&gt;
&lt;br /&gt;
== Where to go next ==&lt;br /&gt;
&lt;br /&gt;
Once you know which type is yours, its page shows what the job script looks like and which modules go with it.&lt;br /&gt;
&lt;br /&gt;
If you would rather see all of them side by side on one problem first, work through [[Tutorials/Parallelism-Estimating-Pi|Parallelism: Estimating π]]. It takes a single calculation — throwing random darts at a dartboard — and runs it serially, with threads, with processes, across several nodes, and on a GPU. The answer never changes. Only the time does, which is exactly the point.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Tutorials/Parallelism-Estimating-Pi|Parallelism: Estimating π]] — the hands-on companion to this page.&lt;br /&gt;
* [[Compute Hardware Overview]] — what the nodes and GPUs actually are.&lt;br /&gt;
* [[Workflows|Workflows]] — job submission, debugging, and checkpointing.&lt;br /&gt;
* [[Linux Basic/Linux Self Assessment|Linux Self Assessment]] — check your command-line readiness first.&lt;/div&gt;</description>
			<pubDate>Thu, 23 Jul 2026 15:18:37 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Workflows/Paralle-Computing</comments>
		</item>
		<item>
			<title>Network &amp; Security</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Network_%26_Security&amp;diff=3005&amp;oldid=2975</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Network_%26_Security&amp;diff=3005&amp;oldid=2975</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:07, 23 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Network ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Network ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Internally inside the cluster, the compute nodes and the[[Filesystems | Lustre filesystem]] are linked by a high-speed, low-latency interconnect, which is what lets the parallel filesystem and multi-node jobs perform well.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Internally inside the cluster, the compute nodes and the[[Filesystems | Lustre filesystem]] are linked by &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;OmniPath, &lt;/ins&gt;a high-speed, low-latency interconnect, which is what lets the parallel filesystem and multi-node jobs perform well.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;From outside, the cluster services are reached through two loadbalancers, which are connected to the internet over 100Gbit links.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;From outside, the cluster services are reached through two loadbalancers, which are connected to the internet over 100Gbit links.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l13&quot;&gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Authentication ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Authentication ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;You log in with your &lt;/del&gt;WUR &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;or outside group &lt;/del&gt;account&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. For stronger protection you can add multi-factor authentication &lt;/del&gt;to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;your SSH access using a hardware security key — see [[Using a hardware key for better security]]. You can also configure key-based login so you are not prompted for a password each time; see [[Ssh without password]]&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Anunna is public facing, servicing organisation withing and outside of the &lt;/ins&gt;WUR &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;but access requires an &lt;/ins&gt;account to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;be activated by the HPC admins&lt;/ins&gt;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If you use the wrong credentials, your access &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;will &lt;/del&gt;be blocked, see [[Unblocking your IP]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Users from the WUR can request an account and  once the account is activated, they can login with the same credentials as their WUR account. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;In a similar fashion, organisations outside of the WUR can request submit account requests to the admins. Once the account is created, the users receive an email with their login details, which they are advised to change when first logging in. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;For stronger protection you can add multi-factor authentication to your SSH access using a hardware security key — see [[Using a hardware key for better security]]. You can also configure key-based login so you are not prompted for a password each time; see [[Ssh without password]].&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If you use the wrong credentials, your access &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;may &lt;/ins&gt;be blocked, see [[Unblocking your IP]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Data security ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Data security ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Thu, 23 Jul 2026 15:07:49 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Network_%26_Security</comments>
		</item>
		<item>
			<title>System Status Page</title>
			<link>https://wiki.anunna.wur.nl/System_Status_Page</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/System_Status_Page</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/User:Prins089&quot; class=&quot;mw-userlink&quot; title=&quot;User:Prins089&quot;&gt;&lt;bdi&gt;Prins089&lt;/bdi&gt;&lt;/a&gt; deleted page &lt;a href=&quot;/index.php?title=System_Status_Page&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;System Status Page (page does not exist)&quot;&gt;System Status Page&lt;/a&gt; The wiki is not meant for status tracking, it&amp;#039;s a knowledge base. We need an actual status page (a pod in kubernetes with rudimentary monitoring), and when we have that, let&amp;#039;s link to it from the wiki. But now we do not have this&lt;/p&gt;
</description>
			<pubDate>Thu, 23 Jul 2026 12:49:43 GMT</pubDate>
			<dc:creator>Prins089</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:System_Status_Page</comments>
		</item>
		<item>
			<title>Workflows</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Workflows&amp;diff=3004&amp;oldid=2996</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Workflows&amp;diff=3004&amp;oldid=2996</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:25, 23 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-multi&quot; lang=&quot;en&quot;&gt;(2 intermediate revisions by the same user not shown)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l12&quot;&gt;Line 12:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 12:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Parallel Workflows ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Parallel Workflows ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Performance Optimization/Multiple CPUs]] — using several cores in one job&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Parallel Computing&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Performance Optimization/Multiple nodes (MPI)]] — scaling across nodes with MPI&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Embarrassingly Parallel&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Performance Optimization/Multiple nodes (arrayjobs)]] — scaling with job arrays&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Multi-threaded Workflows&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Multi-Process Workflows&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Hybrid Workflows &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* GPU workflows&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &amp;lt;s&amp;gt;&lt;/ins&gt;[[Performance Optimization/Multiple CPUs]] — using several cores in one job&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/s&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;s&amp;gt;&lt;/ins&gt;[[Performance Optimization/Multiple nodes (MPI)]] — scaling across nodes with MPI&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/s&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;s&amp;gt;&lt;/ins&gt;[[Performance Optimization/Multiple nodes (arrayjobs)]] — scaling with job arrays&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/s&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Thu, 23 Jul 2026 12:25:11 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Workflows</comments>
		</item>
		<item>
			<title>Conda for teaching</title>
			<link>https://wiki.anunna.wur.nl/Conda_for_teaching</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/Conda_for_teaching</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php?title=User:Honfi001&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;mw-userlink new&quot; title=&quot;User:Honfi001 (page does not exist)&quot;&gt;&lt;bdi&gt;Honfi001&lt;/bdi&gt;&lt;/a&gt; deleted page &lt;a href=&quot;/index.php?title=Conda_for_teaching&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Conda for teaching (page does not exist)&quot;&gt;Conda for teaching&lt;/a&gt; content was: &amp;quot;{{Warning|This page describes the older cluster setup: the &amp;lt;code&amp;gt;/cm/shared/...&amp;lt;/code&amp;gt; paths and the tcl modulefiles below are from the previous (Bright) cluster and do &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; match current Anunna, which uses the Lustre filesystem and EasyBuild buckets. The general approach — a shared conda environment registered as a Jupyter kernel — still applies, but the paths and commands need updating. For the current way to set up course kernels, see &lt;a href=&quot;/Steps_for_courses&quot; title=&quot;Steps for courses&quot;&gt;Steps for courses&lt;/a&gt; and Pyt...&amp;quot;&lt;/p&gt;
</description>
			<pubDate>Thu, 23 Jul 2026 11:48:13 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Conda_for_teaching</comments>
		</item>
		<item>
			<title>Workflow Engines (Snakemake, Nextflow)</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Workflow_Engines_(Snakemake,_Nextflow)&amp;diff=3001&amp;oldid=2986</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Workflow_Engines_(Snakemake,_Nextflow)&amp;diff=3001&amp;oldid=2986</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Pitfalls&lt;/span&gt;&lt;/p&gt;
&lt;a href=&quot;https://wiki.anunna.wur.nl/index.php?title=Workflow_Engines_(Snakemake,_Nextflow)&amp;amp;diff=3001&amp;amp;oldid=2986&quot;&gt;Show changes&lt;/a&gt;</description>
			<pubDate>Wed, 22 Jul 2026 18:55:35 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Workflow_Engines_(Snakemake,_Nextflow)</comments>
		</item>
		<item>
			<title>Workflows</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Workflows&amp;diff=2996&amp;oldid=2912</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Workflows&amp;diff=2996&amp;oldid=2912</guid>
			<description>&lt;p&gt;Replace performance optimizations with Parallel Workflows&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:15, 21 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l10&quot;&gt;Line 10:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 10:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Scheduled tasks (cron)]] — running recurring tasks with scrontab&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Scheduled tasks (cron)]] — running recurring tasks with scrontab&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Performance optimization &lt;/del&gt;===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Parallel Workflows &lt;/ins&gt;===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Performance Optimization/Multiple CPUs]] — using several cores in one job&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Performance Optimization/Multiple CPUs]] — using several cores in one job&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Performance Optimization/Multiple nodes (MPI)]] — scaling across nodes with MPI&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Performance Optimization/Multiple nodes (MPI)]] — scaling across nodes with MPI&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Performance Optimization/Multiple nodes (arrayjobs)]] — scaling with job arrays&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Performance Optimization/Multiple nodes (arrayjobs)]] — scaling with job arrays&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 21 Jul 2026 14:15:49 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Workflows</comments>
		</item>
		<item>
			<title>Reporting Usage</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Reporting_Usage&amp;diff=2995&amp;oldid=2979</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Reporting_Usage&amp;diff=2995&amp;oldid=2979</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:30, 21 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Estimating your costs ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Estimating your costs ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &amp;lt;code&amp;gt;get_my_bill&amp;lt;/code&amp;gt; script estimates &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;your personal &lt;/del&gt;costs over a period. Load the &amp;lt;code&amp;gt;anunna&amp;lt;/code&amp;gt; module and run it:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &amp;lt;code&amp;gt;get_my_bill&amp;lt;/code&amp;gt; script &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;shows your Slurm jobs and &lt;/ins&gt;estimates &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;their compute &lt;/ins&gt;costs over a period. Load the &amp;lt;code&amp;gt;anunna&amp;lt;/code&amp;gt; module and run it:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l10&quot;&gt;Line 10:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 10:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;By default it &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;reports &lt;/del&gt;your &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cost for &lt;/del&gt;the current month &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;so far&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;broken down by account (project) &lt;/del&gt;and &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;by storage tier&lt;/del&gt;. The &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;figures &lt;/del&gt;are &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;advisory&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;By default&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;it &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;shows jobs for &lt;/ins&gt;your &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;user account from the first day of &lt;/ins&gt;the current month &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;through the current time. Each row includes the job start time, job ID and name, state, allocated CPUs, GPUs and memory, elapsed seconds&lt;/ins&gt;, and &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;estimated cost&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A total is shown at the bottom.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;estimate is based on the resources allocated to each job and its elapsed wall time. It is indicative rather than a final bill; the monthly usage reports &lt;/ins&gt;are &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;leading&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Useful options:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Useful options:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;g&lt;/del&gt;&amp;lt;/code&amp;gt; — &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;show results for your entire group&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;s YYYY-MM-DD&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;--start YYYY-MM-DD&lt;/ins&gt;&amp;lt;/code&amp;gt; — &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;start the report on this date. The default is the first day of the current month&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;d compute&lt;/del&gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;d disk&lt;/del&gt;&amp;lt;/code&amp;gt; — &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;extra detail &lt;/del&gt;on &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;compute &lt;/del&gt;or &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;disk &lt;/del&gt;usage.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;e YYYY-MM-DD&lt;/ins&gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-end YYYY-MM-DD&lt;/ins&gt;&amp;lt;/code&amp;gt; — &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;end the report &lt;/ins&gt;on &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;this date, inclusive. The default is the current time.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;t YYYY&lt;/del&gt;-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;MM&lt;/del&gt;&amp;lt;/code&amp;gt; — &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;results &lt;/del&gt;for a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;specific month.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &amp;lt;code&amp;gt;-u USER&amp;lt;/code&amp;gt; &lt;/ins&gt;or &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;--user USER&amp;lt;/code&amp;gt; — report &lt;/ins&gt;usage &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;for another Slurm user&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;g&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;--group&amp;lt;/code&amp;gt; — report all jobs charged to the selected user&#039;s default Slurm account. Group output includes a &amp;lt;code&amp;gt;User&amp;lt;/code&amp;gt; column.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &amp;lt;code&amp;gt;-h&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-&lt;/ins&gt;-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;help&lt;/ins&gt;&amp;lt;/code&amp;gt; — &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;show all available options.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Long options that take a value can use either a space or an equals sign, &lt;/ins&gt;for &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;example &amp;lt;code&amp;gt;--start 2026-01-01&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--start=2026-01-01&amp;lt;/code&amp;gt; are equivalent.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Examples:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;syntaxhighlight lang=&quot;bash&quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# Your jobs from &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;given date through now&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;get_my_bill --start 2026-01-01&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# Your jobs in an inclusive date range&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;get_my_bill -s 2026-01-01 -e 2026-01-31&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# All jobs charged to your group&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;get_my_bill --group&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Cost alerts ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Cost alerts ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 21 Jul 2026 12:30:48 GMT</pubDate>
			<dc:creator>Prins089</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Reporting_Usage</comments>
		</item>
		<item>
			<title>Batch Jobs</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Batch_Jobs&amp;diff=2994&amp;oldid=2743</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Batch_Jobs&amp;diff=2994&amp;oldid=2743</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Loading modules&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:10, 21 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-multi&quot; lang=&quot;en&quot;&gt;(One intermediate revision by the same user not shown)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l22&quot;&gt;Line 22:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 22:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;module &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;avail &lt;/del&gt;Python&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;module &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;spider &lt;/ins&gt;Python&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Note that the case of the module matters. This command will give you a list of all Python modules available in the cluster. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Pick one and load it from the appropriate year bucket — see [[Modules]] for the bucket-and-version convention.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Pick one and load it from the appropriate year bucket — see [[Modules]] for the bucket-and-version convention.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l33&quot;&gt;Line 33:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 35:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/bin/bash&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/bin/bash&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#SBATCH --comment=&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;773320000&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#SBATCH --comment=&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;01189998819991197253&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#SBATCH --time=1200&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#SBATCH --time=1200&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#SBATCH --mem=2048&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#SBATCH --mem=2048&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l173&quot;&gt;Line 173:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 175:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#SBATCH --comment=&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;773320000&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#SBATCH --comment=&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;01189998819991197253&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 21 Jul 2026 12:10:36 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Batch_Jobs</comments>
		</item>
		<item>
			<title>Performance Optimization/Multiple nodes (MPI)</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Performance_Optimization/Multiple_nodes_(MPI)&amp;diff=2992&amp;oldid=2859</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Performance_Optimization/Multiple_nodes_(MPI)&amp;diff=2992&amp;oldid=2859</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Running an MPI program&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:34, 21 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l7&quot;&gt;Line 7:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;module purge&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;module purge&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;module load &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2024&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;module load &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2025&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;module load &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gcc openmpi&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gcc slurm&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;module load &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;OpenMPI&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;5.0.7&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l53&quot;&gt;Line 53:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 53:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;module purge&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;module purge&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;module load &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2024&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;module load &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2025&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;module load &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gcc openmpi&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gcc slurm&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;module load &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;OpenMPI&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;5.0.7&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;srun ./hello_mpi&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;srun ./hello_mpi&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 21 Jul 2026 11:34:14 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Performance_Optimization/Multiple_nodes_(MPI)</comments>
		</item>
		<item>
			<title>Compute Hardware Overview</title>
			<link>https://wiki.anunna.wur.nl/index.php?title=Compute_Hardware_Overview&amp;diff=2991&amp;oldid=2990</link>
			<guid isPermaLink="false">https://wiki.anunna.wur.nl/index.php?title=Compute_Hardware_Overview&amp;diff=2991&amp;oldid=2990</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:40, 21 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l88&quot;&gt;Line 88:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 88:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!GPU Maker&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!GPU Maker&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!GPU Type&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!GPU Type&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Number of &lt;/del&gt;GPUs&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!GPUs &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;per Node&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!VRAM (GB)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!VRAM (GB)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!VRAM Type&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!VRAM Type&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 21 Jul 2026 07:40:33 GMT</pubDate>
			<dc:creator>Honfi001</dc:creator>
			<comments>https://wiki.anunna.wur.nl/Talk:Compute_Hardware_Overview</comments>
		</item>
</channel></rss>