<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated on Sat, 26 May 2012 03:44:45 -0700 -->
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <atom:link href="http://software.intel.com/en-us/articles/intel-parallel-advisor-kb/type/landing-links/feed" rel="self" type="application/rss+xml" />
    <title>Intel Software Network articles Feed</title>
    <link>http://software.intel.com/en-us/articles/intel-parallel-advisor-kb/type/landing-links/feed</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>How to Implement Task Parallelism with Advisor</title>
      <description><![CDATA[ There are many different ways to add parallelism to an application. One of the most popular techniques is to parallelize the iterations of a loop, which is sometimes referred to as Data Parallelism. This method is thoroughly covered in the Advisor documentation, but it is not the only type of parallelism that can be added with the help of Advisor. Task Parallelism, sometimes referred to as function parallelism, in which multiple tasks/functions run in parallel can also be modeled by Advisor. Figure 1 shows a code snippet representing some basic statistical analysis:<br /><br /><img src="http://software.intel.com/file/30775" alt="code1.bmp" title="code1.bmp" /><br /><strong>Figure 1<br /><br /></strong>This code is used to determine a running average and a running standard deviation on an array of values. Figure 2 shows the Survey Report created by Advisor.<br /><br /><img src="http://software.intel.com/file/30776" alt="SurveyReport2.bmp" title="SurveyReport2.bmp" /><br /><br /><strong>Figure 2<br /><br /></strong>This report shows that the majority of the time is being spent in two loops, one in the runningStdDev function and the other in the runningAvg function. If the source code was available for these functions, these loops would be good targets for Advisor annotations. However, it could be the case that these functions are in library code for which the source is not available. In this case, Advisor annotations can be used to model running both of these functions in parallel. Figure 3 shows how this would be done.<br /><br /><img src="http://software.intel.com/file/30777" alt="code2.bmp" title="code2.bmp" /><br /><br /><strong>Figure 3<br /><br /></strong>The suitability analysis of this parallel experiment is shown in Figure 4. <br /><br /><img height="519" width="977" src="http://software.intel.com/file/30779" alt="Suitability%20Report" title="Suitability.bmp" /><br /><br /><strong>Figure 4<br /><br /></strong>Figure 4 shows that there is substantial speedup available from running these two functions in parallel. It also shows that the speedup does not scale beyond two cores. This is understandable because there are only two tasks that will be executing at the same time.<br /><br />While task parallelism may not be the most scalable form of parallelism, it can still add substantial performance improvements and may be available when data parallelism is not. Advisor annotations can be used to model task parallelism in an application in addition to data parallelism. The next step is to model Correctness with Advisor to make sure that no conflicts will arise from running both of these functions in parallel.<br /> ]]></description>
      <link>http://software.intel.com/en-us/articles/how-to-implement-task-parallelism-with-advisor/</link>
      <pubDate>Fri, 24 Sep 2010 19:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/how-to-implement-task-parallelism-with-advisor/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/how-to-implement-task-parallelism-with-advisor/</guid>
      <category>ISN General</category>
      <category>Intel® Parallel Advisor</category>
      <category>Intel® Parallel Advisor Knowledge Base</category>
    </item>
    <item>
      <title>The Difference Between Advisor Survey and Amplifier Hotspots</title>
      <description><![CDATA[ Intel(R) Parallel Advisor 2011 (Advisor) and Intel(R) Parallel Amplifier 2011 (Amplifier) both provide tools to determine where time is spent in a running application. This is referred to as Survey in Advisor and Hotspots in Amplifier. The following list details similarities and differences between the two tools:<br /><br />1. Both tools use the same low-overhead statistical sampling technology<br />2. Advisor Survey shows time spent in loops in addition to total time while Amplifier Hotspots does not<br />3. Advisor only provides a top-down call tree to help identify sites for parallelism, whereas Amplifier provides a top-down and bottom-up tree to help tune hot paths as well as individual functions <br />4. Advisor Survey is integrated into the Advisor Workflow<br /><br />If you plan on using Advisor to help parallelize your existing application, it is recommended that you use Advisor Survey as the first step. <br /><br /> ]]></description>
      <link>http://software.intel.com/en-us/articles/the-difference-between-advisor-survey-and-amplifier-hotspots/</link>
      <pubDate>Sun, 12 Sep 2010 19:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/the-difference-between-advisor-survey-and-amplifier-hotspots/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/the-difference-between-advisor-survey-and-amplifier-hotspots/</guid>
      <category>Parallel Programming</category>
      <category>Intel® Parallel Advisor</category>
      <category>Intel® Parallel Advisor Knowledge Base</category>
    </item>
    <item>
      <title>How to Use the Summary in Intel Parallel Advisor 2011 to Make Informed Decisions</title>
      <description><![CDATA[ In order to efficiently add parallelism to existing code, it is important to gather the best possible data about the application and use it to manage expectations and developer workloads intelligently.  The Summary Report in Intel(r) Parallel Advisor 2011 (Advisor) provides this information in an easy-to-read format.<br /><br />After profiling code with the Advisor's Survey tool, Figure 1 shows the breakdown of time spent in functions and loops in the application.<br /><br /><img src="http://software.intel.com/file/29840" alt="Survey Report" width="576" height="188" /><br /><b>Figure 1</b><br /><br />There are two loops in two different functions that are consuming most of the run time, chainedSeed() and orderedSeed().  Figure 2 shows the code for these functions. <br /><br /><img src="http://software.intel.com/file/29841" alt="Function Source" width="337" height="271" /><br /><b>Figure 2</b><br /><br />Both functions are populating an array in a for loop whose iterations may be parallelizable. Figure 3 shows the functions after adding Advisor Annotations.<br /><br /><img src="http://software.intel.com/file/29842" alt="Annotated Code" width="384" height="414" /><br /><b>Figure 3<br /></b>After Advisor Suitability and Correctness modeling tools have been run on the annotated code, the Summary Report (Figure 4) combines the information from both tools, to help users make informed decisions about how to proceed with parallelizing their code.<br /><br /><img src="http://software.intel.com/file/29843" alt="Summary Report" width="726" height="224" /><br /><b>Figure 4</b><br /><br />Figure 4 shows that both sites have the possibility of near-linear speedup on two cores (Maximum Self Gain = 1.99x).  It also shows that the ChainedSeedSite has a correctness issue, while the OrderedSeedSite is free of correctness issues. The suitability and correctness data summarized here aid the decision making process when considering how to move forward with adding parallelism.  Parallelizing both sites would improve speedup similarly. However, it may be less trouble to parallelize the OrderedSeedSite because there are no glaring correctness issues to fix.  Having this program-wide performance and correctness information and using it properly, can greatly reduce wasted time and effort to parallelize code that is very difficult or almost impossible to thread.<br /><br />1. By installing or copying all or any part of the software components in this site, you agree to the terms of the Intel Sample Source Code License Agreement.<br />2. By accessing and using the Intel Corporation Web Sites and Materials, you acknowledge and agree to abide by the following Terms of Use.<br /> ]]></description>
      <link>http://software.intel.com/en-us/articles/how-to-use-the-summary-in-intel-parallel-advisor-2011-to-make-informed-decisions/</link>
      <pubDate>Mon, 30 Aug 2010 21:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/how-to-use-the-summary-in-intel-parallel-advisor-2011-to-make-informed-decisions/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/how-to-use-the-summary-in-intel-parallel-advisor-2011-to-make-informed-decisions/</guid>
      <category>Parallel Programming</category>
      <category>Intel® Parallel Advisor</category>
      <category>Intel® Parallel Advisor Knowledge Base</category>
    </item>
    <item>
      <title>How to Find Promising Sites for Parallelism Using Intel® Parallel Advisor 2011</title>
      <description><![CDATA[ <p>Intel® Parallel Advisor 2011 (Advisor) along with the other Intel® Parallel Studio 2011 tools lay out a multi-step process to aid developers in transitioning their serial code to efficient and correct parallel code. This article will focus on the first step of the process: How to determine where to add parallelism in an application.<br /><br />Advisor provides an easy to use GUI interface as a plug-in to Microsoft® Visual Studio. The first step in using Advisor is to run the Survey tool, which will help determine where most of the time in the application is being spent. These “Hotspots” are good starting points when deciding where to add parallelism in an application. Figure 1 shows a screenshot of some profile data generated by Advisor on a K-Nearest Neighbors application.<br /><br /><img height="393" width="606" src="http://software.intel.com/file/29781" alt="Survey Report" /><br /><br /><b>Figure 1</b><br /><br />Figure 1 shows that the majority of the program (59.3%) is spent in a function called std::::vector() and 20.9% in a loop in the method called KNN::distance. Navigating to the vector function reveals that it is part of the Standard Template Library (STL). The best return on investment will most likely be to focus on the KNN::distance method as opposed to the STL. With one mouse click, Advisor will automatically navigate to the source code (definition) of this method. Figure 2 shows the breakdown of time spent in KNN::distance.<br /><br /><img height="278" width="825" src="http://software.intel.com/file/29782" alt="Distance Function" /><br /><b>Figure 2</b><br /><br />Looking at this method, it can be seen that a single call should not take very long. It only calculates the distance between two points and it spends quite a bit of time returning the value in addition to the calculation.<br /><br />If this was all the information that Advisor presented, it may be difficult to continue parallelizing because the bulk of the work doesn’t appear to be very conducive to parallelism. However, the Survey Report provides much more detailed information.<br /><br /><img height="386" width="600" src="http://software.intel.com/file/29783" alt="Selected Loop" /><br /><b>Figure 3<br /></b><br />Figure 3 revels that the KNN::predict method is making calls to distance and the Survey Report also shows that these calls are made in the body of a loop (see the highlighted "loop" line).<br /><br />This loop identifies another possible site for parallelism that still focuses on the Hotspots of the code. This site appears to be a loop with independent iterations (the execution of one iteration isn’t dependent on a previous iteration), which is a prime candidate for parallelization.<br /><br />The way Advisor encourages the use of profile information can be very useful in uncovering the not-so-obvious locations where introducing parallelism may greatly improve performance. The Survey Report can present call path information that may reveal better locations to introduce parallelism while still focusing on the Hotspots. The timing breakdowns also reveal interesting characteristics about applications that may not be obvious, such as the heavy overhead of vector operations.<br /><br />After locating ideal sites for parallelism, the next steps in the Advisor Workflow are to insert Advisor Annotations to gather Suitability and Correctness data about the proposed parallelism to determine the easiest and most efficient way to parallelize an application.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/how-to-find-promising-sites-for-parallelism-using-intel-parallel-advisor-2011/</link>
      <pubDate>Sun, 29 Aug 2010 19:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/how-to-find-promising-sites-for-parallelism-using-intel-parallel-advisor-2011/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/how-to-find-promising-sites-for-parallelism-using-intel-parallel-advisor-2011/</guid>
      <category>Parallel Programming</category>
      <category>Intel® Parallel Advisor</category>
      <category>Intel® Parallel Advisor Knowledge Base</category>
    </item>
  </channel></rss>
