<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Question about performance in Analyzers</title>
    <link>https://community.intel.com/t5/Analyzers/Question-about-performance/m-p/943314#M7692</link>
    <description>&lt;DIV class="gmail_default" style="color: rgb(34, 34, 34); line-height: normal; font-family: verdana, sans-serif;"&gt;I'm writing to see if someone could help me understand an issue in our solver that recently came up while using Vtune Amplifier. I'll try and describe this here:&lt;/DIV&gt;

&lt;DIV class="gmail_default" style="color: rgb(34, 34, 34); line-height: normal; font-family: verdana, sans-serif;"&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV class="gmail_default" style="color: rgb(34, 34, 34); font-family: arial, sans-serif; line-height: normal;"&gt;
	&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;Using vtune amplifier we see that the time spent in a function "mucal" goes up as number of threads increase. On&lt;/FONT&gt;&lt;SPAN style="font-family: verdana, sans-serif;"&gt;&amp;nbsp;8 threads, mucal is at the top of the list.&lt;/SPAN&gt;&lt;/DIV&gt;

	&lt;DIV class="gmail_default"&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;mucal is a function that calculates viscosity. This is called &lt;/FONT&gt;&lt;SPAN style="font-family: verdana, sans-serif;"&gt;in the following manner.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;

&lt;DIV class="gmail_default" style="color: rgb(34, 34, 34); line-height: normal; font-family: verdana, sans-serif;"&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV class="gmail_default" style="color: rgb(34, 34, 34); font-family: arial, sans-serif; line-height: normal;"&gt;
	&lt;DIV class="gmail_default"&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;BLOCKQUOTE&gt;
		&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;do ijk=1,iend&lt;/FONT&gt;&lt;/DIV&gt;

		&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;&amp;nbsp; mu(ijk)=mucal(ijk,iopt)&lt;/FONT&gt;&lt;/DIV&gt;

		&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;end do&lt;/FONT&gt;&lt;/DIV&gt;
	&lt;/BLOCKQUOTE&gt;

	&lt;DIV class="gmail_default"&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV class="gmail_default"&gt;
		&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;CFD mesh First cell index: 1&lt;/FONT&gt;&lt;/DIV&gt;

		&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;CFD mesh Last cell index: &amp;nbsp;iend&lt;/FONT&gt;&lt;/DIV&gt;

		&lt;DIV class="gmail_default"&gt;&amp;nbsp;&lt;/DIV&gt;

		&lt;DIV class="gmail_default"&gt;
			&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;OpenMP threads split ijk index.&amp;nbsp;&lt;/FONT&gt;&lt;/DIV&gt;

			&lt;DIV class="gmail_default"&gt;&amp;nbsp;&lt;/DIV&gt;

			&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;Inside mucal function we use 2 modules and include 6 common blocks.&amp;nbsp;&lt;/FONT&gt;&lt;/DIV&gt;

			&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;Modules have arrays of size (1:iend). These are mostly 1D arrays that store velocity, pressure etc. Common blocks has mostly scalar variables but a lot of them.&lt;/FONT&gt;&lt;/DIV&gt;

			&lt;DIV class="gmail_default"&gt;&amp;nbsp;&lt;/DIV&gt;

			&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;To fix this, we tried the following:&lt;/FONT&gt;&lt;/DIV&gt;

			&lt;DIV class="gmail_default"&gt;&amp;nbsp;&lt;/DIV&gt;

			&lt;UL&gt;
				&lt;LI class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;Instead of using array modules inside mucal, pass that ijk value to mucal function (eg. mu(ijk)=mucal(ijk,iopt,u(ijk)). This did not help.&lt;/FONT&gt;&lt;/LI&gt;
				&lt;LI class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;&lt;FONT face="verdana, sans-serif"&gt;Instead of including common blocks, again pass those variables to mucal function. This also did not help&lt;/FONT&gt;&lt;/FONT&gt;&lt;/LI&gt;
				&lt;LI class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;&lt;FONT face="verdana, sans-serif"&gt;&lt;FONT face="verdana, sans-serif"&gt;Calculate and store mucal(ijk) in a separate new array and then re-use that array, thereby reducing number of calls to the function&amp;nbsp;&lt;/FONT&gt;&lt;SPAN style="font-family: verdana, sans-serif; font-size: 1em;"&gt;mucal. This helped and for 8 threads mucal was no longer at the top of the list.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/LI&gt;
			&lt;/UL&gt;

			&lt;DIV class="gmail_default"&gt;&amp;nbsp;&lt;/DIV&gt;

			&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;My question is why does time spent in mucal increase with number of threads? Is it a combination of using common blocks and modules or something else? What's the best approach to prevent issues like this?&lt;/FONT&gt;&lt;/DIV&gt;

			&lt;DIV class="gmail_default"&gt;&amp;nbsp;&lt;/DIV&gt;

			&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;Thanks!&lt;/FONT&gt;&lt;/DIV&gt;
		&lt;/DIV&gt;
	&lt;/DIV&gt;
&lt;/DIV&gt;</description>
    <pubDate>Tue, 11 Mar 2014 15:37:40 GMT</pubDate>
    <dc:creator>AGG1</dc:creator>
    <dc:date>2014-03-11T15:37:40Z</dc:date>
    <item>
      <title>Question about performance</title>
      <link>https://community.intel.com/t5/Analyzers/Question-about-performance/m-p/943314#M7692</link>
      <description>&lt;DIV class="gmail_default" style="color: rgb(34, 34, 34); line-height: normal; font-family: verdana, sans-serif;"&gt;I'm writing to see if someone could help me understand an issue in our solver that recently came up while using Vtune Amplifier. I'll try and describe this here:&lt;/DIV&gt;

&lt;DIV class="gmail_default" style="color: rgb(34, 34, 34); line-height: normal; font-family: verdana, sans-serif;"&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV class="gmail_default" style="color: rgb(34, 34, 34); font-family: arial, sans-serif; line-height: normal;"&gt;
	&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;Using vtune amplifier we see that the time spent in a function "mucal" goes up as number of threads increase. On&lt;/FONT&gt;&lt;SPAN style="font-family: verdana, sans-serif;"&gt;&amp;nbsp;8 threads, mucal is at the top of the list.&lt;/SPAN&gt;&lt;/DIV&gt;

	&lt;DIV class="gmail_default"&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;mucal is a function that calculates viscosity. This is called &lt;/FONT&gt;&lt;SPAN style="font-family: verdana, sans-serif;"&gt;in the following manner.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;

&lt;DIV class="gmail_default" style="color: rgb(34, 34, 34); line-height: normal; font-family: verdana, sans-serif;"&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV class="gmail_default" style="color: rgb(34, 34, 34); font-family: arial, sans-serif; line-height: normal;"&gt;
	&lt;DIV class="gmail_default"&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;BLOCKQUOTE&gt;
		&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;do ijk=1,iend&lt;/FONT&gt;&lt;/DIV&gt;

		&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;&amp;nbsp; mu(ijk)=mucal(ijk,iopt)&lt;/FONT&gt;&lt;/DIV&gt;

		&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;end do&lt;/FONT&gt;&lt;/DIV&gt;
	&lt;/BLOCKQUOTE&gt;

	&lt;DIV class="gmail_default"&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV class="gmail_default"&gt;
		&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;CFD mesh First cell index: 1&lt;/FONT&gt;&lt;/DIV&gt;

		&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;CFD mesh Last cell index: &amp;nbsp;iend&lt;/FONT&gt;&lt;/DIV&gt;

		&lt;DIV class="gmail_default"&gt;&amp;nbsp;&lt;/DIV&gt;

		&lt;DIV class="gmail_default"&gt;
			&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;OpenMP threads split ijk index.&amp;nbsp;&lt;/FONT&gt;&lt;/DIV&gt;

			&lt;DIV class="gmail_default"&gt;&amp;nbsp;&lt;/DIV&gt;

			&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;Inside mucal function we use 2 modules and include 6 common blocks.&amp;nbsp;&lt;/FONT&gt;&lt;/DIV&gt;

			&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;Modules have arrays of size (1:iend). These are mostly 1D arrays that store velocity, pressure etc. Common blocks has mostly scalar variables but a lot of them.&lt;/FONT&gt;&lt;/DIV&gt;

			&lt;DIV class="gmail_default"&gt;&amp;nbsp;&lt;/DIV&gt;

			&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;To fix this, we tried the following:&lt;/FONT&gt;&lt;/DIV&gt;

			&lt;DIV class="gmail_default"&gt;&amp;nbsp;&lt;/DIV&gt;

			&lt;UL&gt;
				&lt;LI class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;Instead of using array modules inside mucal, pass that ijk value to mucal function (eg. mu(ijk)=mucal(ijk,iopt,u(ijk)). This did not help.&lt;/FONT&gt;&lt;/LI&gt;
				&lt;LI class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;&lt;FONT face="verdana, sans-serif"&gt;Instead of including common blocks, again pass those variables to mucal function. This also did not help&lt;/FONT&gt;&lt;/FONT&gt;&lt;/LI&gt;
				&lt;LI class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;&lt;FONT face="verdana, sans-serif"&gt;&lt;FONT face="verdana, sans-serif"&gt;Calculate and store mucal(ijk) in a separate new array and then re-use that array, thereby reducing number of calls to the function&amp;nbsp;&lt;/FONT&gt;&lt;SPAN style="font-family: verdana, sans-serif; font-size: 1em;"&gt;mucal. This helped and for 8 threads mucal was no longer at the top of the list.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/LI&gt;
			&lt;/UL&gt;

			&lt;DIV class="gmail_default"&gt;&amp;nbsp;&lt;/DIV&gt;

			&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;My question is why does time spent in mucal increase with number of threads? Is it a combination of using common blocks and modules or something else? What's the best approach to prevent issues like this?&lt;/FONT&gt;&lt;/DIV&gt;

			&lt;DIV class="gmail_default"&gt;&amp;nbsp;&lt;/DIV&gt;

			&lt;DIV class="gmail_default"&gt;&lt;FONT face="verdana, sans-serif"&gt;Thanks!&lt;/FONT&gt;&lt;/DIV&gt;
		&lt;/DIV&gt;
	&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Tue, 11 Mar 2014 15:37:40 GMT</pubDate>
      <guid>https://community.intel.com/t5/Analyzers/Question-about-performance/m-p/943314#M7692</guid>
      <dc:creator>AGG1</dc:creator>
      <dc:date>2014-03-11T15:37:40Z</dc:date>
    </item>
  </channel>
</rss>

