<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://hpc-wiki.info/hpc/index.php?action=history&amp;feed=atom&amp;title=BadDataPlacement</id>
	<title>BadDataPlacement - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://hpc-wiki.info/hpc/index.php?action=history&amp;feed=atom&amp;title=BadDataPlacement"/>
	<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=BadDataPlacement&amp;action=history"/>
	<updated>2026-05-26T11:17:38Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.9</generator>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=BadDataPlacement&amp;diff=2084&amp;oldid=prev</id>
		<title>Daniel-schurhoff-de23@rwth-aachen.de at 14:15, 3 September 2019</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=BadDataPlacement&amp;diff=2084&amp;oldid=prev"/>
		<updated>2019-09-03T14:15:46Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&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, 3 September 2019&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 colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&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;[[Category:Performance Pattern]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: 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;== Description ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: 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;== Description ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: 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 pattern &amp;quot;Bad data placement&amp;quot; describes the performance limitation caused by data residing in remote locations with higher access times. At node level, the common problem arises by initializing the data using the wrong processing units (first touch memory allocation policy places the data next to the issuing processing unit) which might not be the processing unit actually working with the data. When data is located on a different compute node in cluster systems, the data needs to be transferred through the network every time to reach the compute node that requires the data for progress.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: 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 pattern &amp;quot;Bad data placement&amp;quot; describes the performance limitation caused by data residing in remote locations with higher access times. At node level, the common problem arises by initializing the data using the wrong processing units (first touch memory allocation policy places the data next to the issuing processing unit) which might not be the processing unit actually working with the data. When data is located on a different compute node in cluster systems, the data needs to be transferred through the network every time to reach the compute node that requires the data for progress.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key hpc_wiki:diff::1.12:old-1477:rev-2084 --&gt;
&lt;/table&gt;</summary>
		<author><name>Daniel-schurhoff-de23@rwth-aachen.de</name></author>
	</entry>
	<entry>
		<id>https://hpc-wiki.info/hpc/index.php?title=BadDataPlacement&amp;diff=1477&amp;oldid=prev</id>
		<title>Thomas-gruber-5537@uni-erlangen.de: Created page with &quot;== Description == The pattern &quot;Bad data placement&quot; describes the performance limitation caused by data residing in remote locations with higher access times. At node level, th...&quot;</title>
		<link rel="alternate" type="text/html" href="https://hpc-wiki.info/hpc/index.php?title=BadDataPlacement&amp;diff=1477&amp;oldid=prev"/>
		<updated>2019-03-06T11:51:00Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== Description == The pattern &amp;quot;Bad data placement&amp;quot; describes the performance limitation caused by data residing in remote locations with higher access times. At node level, th...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Description ==&lt;br /&gt;
The pattern &amp;quot;Bad data placement&amp;quot; describes the performance limitation caused by data residing in remote locations with higher access times. At node level, the common problem arises by initializing the data using the wrong processing units (first touch memory allocation policy places the data next to the issuing processing unit) which might not be the processing unit actually working with the data. When data is located on a different compute node in cluster systems, the data needs to be transferred through the network every time to reach the compute node that requires the data for progress.&lt;br /&gt;
&lt;br /&gt;
== Symptoms ==&lt;br /&gt;
At system level:&lt;br /&gt;
* bad or no scaling across NUMA domains&lt;br /&gt;
At cluster level:&lt;br /&gt;
* Additional communication to request remote data&lt;br /&gt;
&lt;br /&gt;
== Detection ==&lt;br /&gt;
At system level use a hardware-counter tool like:&lt;br /&gt;
* LIKWID with performance groups MEM and NUMA&lt;br /&gt;
* Same information can be provided by perf or PAPI&lt;br /&gt;
At cluster level:&lt;br /&gt;
* Use a communication profiler like Vampir, TAU or HPCToolkit &lt;br /&gt;
&lt;br /&gt;
== Possible optimizations and/or fixes ==&lt;br /&gt;
* Reorganize data layout and allocation schemes&lt;br /&gt;
* On node level, try interleaved memory policy (&amp;lt;code&amp;gt;numactl -i &amp;lt;domains&amp;gt; &amp;lt;application&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
* On cluster level, try to distribute data early to reduce access times and balance remote access times against recalculation on the local node&lt;/div&gt;</summary>
		<author><name>Thomas-gruber-5537@uni-erlangen.de</name></author>
	</entry>
</feed>