<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated on Sat, 26 May 2012 03:52:30 -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-amplifier-kb/type/tips-and-techniques/feed/" rel="self" type="application/rss+xml" />
    <title>Intel Software Network articles Feed</title>
    <link>http://software.intel.com/en-us/articles/intel-parallel-amplifier-kb/type/tips-and-techniques/</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>Recognize User Synchronization Objects in Intel® Parallel Amplifier</title>
      <description><![CDATA[ <p>Many developers wrote their own primitives in their code, but Intel® Parallel Amplifier (<strong>Locks and Waits</strong>) recognizes Windows* defined synchronization objects only, like as event, mutex, semaphore and critical section, etc.</p>
<p>Intel® Parallel Amplifier provides libittnotify.dll/libittnotify.h which can notify User Synchronization Objects to Intel® Parallel Amplifier at runtime.</p>
<p>Here is a test case: the function is used by many threads, and each thread computes value in local variable "<strong>lpot</strong>" in loop, and accumulates local value into global variable "<strong>pot</strong>"</p>
<p>1)  for( i=start; i&lt;end; i++ ) {</p>
<p>      for( j=0; j&lt;i-1; j++ ) {</p>
<p>        distx = pow( (r[0][j] - r[0][i]), 2 );</p>
<p>        disty = pow( (r[1][j] - r[1][i]), 2 );</p>
<p>        distz = pow( (r[2][j] - r[2][i]), 2 );</p>
<p>        dist = sqrt( distx + disty + distz );     </p>
<p>       <strong>lpot += 1.0 / dist;</strong></p>
<p>      }</p>
<p>   }</p>
<p> </p>
<p>   EnterCriticalSection(&amp;cs);</p>
<p>      <strong>pot += lpot;</strong></p>
<p>   LeaveCriticalSection(&amp;cs);</p>
<p> </p>
<p>In this implementation, time comsumption of sys-obj "<strong>CRITICAL_SECTION cs;</strong>" will be analyzed in the result of Intel® Parallel Amplifer</p>
<p><br />2) for( i=start; i&lt;end; i++ ) {</p>
<p>      for( j=0; j&lt;i-1; j++ ) {</p>
<p>        distx = pow( (r[0][j] - r[0][i]), 2 );</p>
<p>        disty = pow( (r[1][j] - r[1][i]), 2 );</p>
<p>        distz = pow( (r[2][j] - r[2][i]), 2 );</p>
<p>        dist = sqrt( distx + disty + distz );     </p>
<p>        lpot += 1.0 / dist;</p>
<p>      }</p>
<p>   }</p>
<p> </p>
<p>  while (!spin) {</p>
<p>          spin = 1;</p>
<p>          pot += lpot;</p>
<p>   }</p>
<p>   spin = 0;</p>
<p> </p>
<p>In this implementation, time consumption of user's "spin" will <strong>NOT</strong> be analyzed</p>
<p> </p>
<p>3)  for( i=start; i&lt;end; i++ ) {</p>
<p>      for( j=0; j&lt;i-1; j++ ) {</p>
<p>        distx = pow( (r[0][j] - r[0][i]), 2 );</p>
<p>        disty = pow( (r[1][j] - r[1][i]), 2 );</p>
<p>        distz = pow( (r[2][j] - r[2][i]), 2 );</p>
<p>        dist = sqrt( distx + disty + distz );     </p>
<p>        lpot += 1.0 / dist;</p>
<p>      }</p>
<p>   }</p>
<p>  </p>
<p>   <strong>sync_prepare(&amp;spin);</strong></p>
<p>   while (!spin) {</p>
<p>          spin = 1;</p>
<p>         <strong> sync_acquired(&amp;spin);</strong></p>
<p>          pot += lpot;</p>
<p>   }</p>
<p>   <strong>sync_releasing (&amp;spin);</strong></p>
<p>   spin = 0;</p>
<p> </p>
<p>In this implementation, time consumption of user's "spin" will be analyzed</p>
<p> </p>
<p>Note that the user can get libittnotify's APIs as below</p>
<p> </p>
<p>#include &lt;ittnotify.h&gt;</p>
<p>......</p>
<p>typedef void (*itt_notify_sync_prepare)(void *);</p>
<p>typedef void (*itt_notify_sync_acquired)(void *);</p>
<p>typedef void (*itt_notify_releasing)(void *);</p>
<p> </p>
<p>HMODULE hMod;</p>
<p>itt_notify_sync_prepare sync_prepare;</p>
<p>itt_notify_sync_acquired sync_acquired;</p>
<p>itt_notify_releasing sync_releasing;</p>
<p>......</p>
<p>  hMod = LoadLibrary("libittnotify.dll");</p>
<p>      </p>
<p>   sync_prepare = (itt_notify_sync_prepare) GetProcAddress(hMod, "__itt_notify_sync_prepare");</p>
<p>   sync_acquired = (itt_notify_sync_acquired) GetProcAddress(hMod, "__itt_notify_sync_acquired");</p>
<p>   sync_releasing = (itt_notify_releasing) GetProcAddress(hMod, "__itt_notify_sync_releasing");</p>
<p> </p>
<p><br />Finally the user can get Intel® Parallel Amplifier (Locks and Waits) Result -<br /><br /><img src="http://software.intel.com/file/21815" alt="ittnotify.bmp" title="ittnotify.bmp" /></p> ]]></description>
      <link>http://software.intel.com/en-us/articles/recognize-user-synchronization-objects-in-intel-parallel-amplifier/</link>
      <pubDate>Mon, 30 Jan 2012 09:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/recognize-user-synchronization-objects-in-intel-parallel-amplifier/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/recognize-user-synchronization-objects-in-intel-parallel-amplifier/</guid>
      <category>Intel® Parallel Amplifier Knowledge Base</category>
    </item>
    <item>
      <title>Cannot use user-defined hotspots in command line?</title>
      <description><![CDATA[ <p>Some VTune<sup>(TM)</sup> Amplifier XE 2011 users prefer to collect performance data using command line interface. The VTune Amplifier XE 2011 provides command line interface to support users to collect performance data using command line interface but just for predefined analysis types. However, with the release of the VTune™ Amplifier XE 2011 Update 3, you can now collect hardware-based sampling data by configuring specific events via the command-line interface such as:</p>
<p> </p>
<p>Case 1)      Hardware PMU event-based sampling analysis (User-defined)</p>
<p>Case 2)      User-mode sampling and tracing analysis (User-defined)</p>
<p> </p>
<p>For case 1), please refer to "<a href="http://software.intel.com/en-us/articles/event-configuration-from-the-command-line/">Event Configuration from the Command Line</a>" article to know How-to do this analysis. The article documents information about configuring those events.</p>
<p> </p>
<p>For case 2), (User-mode sampling and tracing analysis)  - when the user runs user-mode sampling and tracing analysis in command line and requests to change sample interval from 10s (default value) to 20s, with "-collect-with runss", the user <strong>should</strong> specify collectSamplesMode explicitly (with either "stack" or "nostack"). Here is an example:</p>
<pre name="code" class="shell"><br />$ amplxe-cl -collect-with runss -knob interval=20<strong> </strong>--knob collectSamplesMode=stack -- ./primes.icc <br />Determining primes from 1 - 100000 <br />Found 9592 primes <br />Using result path `/home/peter/problem_report/r012runss' Executing actions 75 % <br />Generating a report <br />Summary ------- <br />Elapsed Time: 0.992 CPU Time: 2.290 Executing actions 100 % done <br />$ amplxe-cl -report hotspots -group-by function <br />Using result path `/home/peter/problem_report/r012runss' Executing actions 75 % <br />Generating a report <br />Function Module CPU Time <br />---------- ---------- -------- <br />findPrimes primes.icc 2.290 Executing actions 100 % done </pre>
<p> <br />If collectSamplesMode is not specified explicitly (with either "stack" or "nostack"), users may see the error message below. The root-cause is - with "-collect-with runss", the user should specify collectSamplesMode explicitly (with "stack" or "nostack").</p>
<pre name="code" class="shell">$ amplxe-cl -collect-with runss-knob interval=20 -- ./primes.icc 
Determining primes from 1 - 100000 
Found 9592 primes 
Using result path `/home/peter/problem_report/r011runss' Executing actions 75 % 
Generating a report 
Summary ------- 
Elapsed Time: 0.978 Executing actions 100 % done 
$ amplxe-cl -report hotspots -group-by function 
Using result path `/home/peter/problem_report/r011runss' Executing actions 75 % 
Generating a report Result directory does not contain CPU samples. 
Executing actions 100 % done Error: Error 0x40000024 (Reporter error)</pre> ]]></description>
      <link>http://software.intel.com/en-us/articles/cannot-use-user-defined-hotspots-in-command-line/</link>
      <pubDate>Mon, 31 Oct 2011 08:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/cannot-use-user-defined-hotspots-in-command-line/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/cannot-use-user-defined-hotspots-in-command-line/</guid>
      <category>Intel® Parallel Amplifier Knowledge Base</category>
    </item>
    <item>
      <title>Mismatched Call Stacks between Bottom-up tree and Call Stack pane</title>
      <description><![CDATA[ <div id="art_pre_template">
<p>When a user adopts stack-sampling collector analysis such as Hotspots, Concurrency or Locks Waits, Call Stack info will be displayed in Bottom-up report. (OS timer only)</p>
<p>Call Stack tree lists all call sequences (stacks) which called hot functions. Call Stacks from different threads are aggregated together for view type "Function - Call Stack", or Call Stacks can be displayed respectively for different thread for view type "Thread - Function - Call Stack".</p>
<p>Here is the Hotspot result after running a single thread application. Hot function foo_data_collected() has only one Stack wmain() in Bottom-up tree, but Call Stack pane indicates there are two Stacks.</p>
<p><br /><img height="274" width="673" src="http://software.intel.com/file/30425" alt="callstack1.bmp" title="callstack1.bmp" /><br /><br />First stack is wmain() from "test_itt_api.cpp:32", let's see what second stack is?</p>
<p><br /><img height="266" width="673" src="http://software.intel.com/file/30426" alt="callstack2.bmp" title="callstack2.bmp" /><br /><br />Second stack is wmain() from "test_itt_api.cpp:24". That means wmain() calls hot function foo_data_collected() from different source lines in same function. The bottom-up tree shown in the Bottom-up pane aggregates these stacks in one line. But the Call Stack pane shows each as a separate stack</p>
</div> ]]></description>
      <link>http://software.intel.com/en-us/articles/mismatched-call-stacks-between-bottom-up-tree-and-call-stack-pane/</link>
      <pubDate>Thu, 16 Sep 2010 05:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/mismatched-call-stacks-between-bottom-up-tree-and-call-stack-pane/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/mismatched-call-stacks-between-bottom-up-tree-and-call-stack-pane/</guid>
      <category>Intel® Parallel Amplifier Knowledge Base</category>
      <category>Intel® VTune™ Amplifier XE Knowledge Base</category>
    </item>
    <item>
      <title>How to change the Parallel Studio version integrated into Visual Studio</title>
      <description><![CDATA[ <div id="art_pre_template">
<p><b>Problem : </b><br />Only one version of Intel® Parallel Studio can be integrated with any one version of Microsoft Visual Studio* at a time. Therefore, if you have Intel Parallel Studio installed on your system and then install a different version along side of it, the newly installed version will be integrated into Visual Studio in place of the previously installed version - this means you will see the newly installed Parallel Studio toolbars, menu items, etc. </p>
<p>You can control which version of Intel Parallel Studio you use with a particular Visual Studio by performing the steps outlined below.<br /><br /><b>Environment: </b><br />Windows systems with Microsoft Visual Studio 2005, 2008, and/or 2010 installed along with multiple versions of Intel Parallel Studio.<br /><br /><b>Root Cause: </b><br />Limit of one Parallel Studio integrated with a version of Visual Studio.<br /><br /><b>Resolution: </b><br />You will need to change the version of Parallel Studio that is integrated with a particular version of Visual Studio.  This will need to be done for each component of the Parallel Studio that you have installed. </p>
<ol type="1">
<li>Begin by removing the integration from the version that is currently integrated. </li>
</ol>
<p>For  <i>Intel Parallel Amplifier</i> or <i>Intel Parallel Inspector</i>, start by opening the Command Prompt window for the version of Parallel Studio you wish to disable. For example:</p>
<table cellpadding="0" cellspacing="0" border="1">
<tbody>
<tr>
<td width="498" valign="top">
<p>To open an Intel Parallel Studio 2011 command prompt in the Visual Studio 2005 mode:</p>
<p><b>Start &gt; All Programs &gt; Intel Parallel Studio 2011 &gt; Command Prompt &gt; IA 32 Visual Studio 2005 mode</b>. </p>
<p>To open an Intel Parallel Studio command prompt in the Visual Studio 2008 mode:  </p>
<p><b>Start &gt; All Programs &gt; Intel Parallel Studio &gt; Command Prompt &gt; IA 32 Visual Studio 2008 mode</b>. </p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<p>Now invoke the appropriate script to disable the integration:</p>
<table width="559" cellpadding="0" cellspacing="0" border="1">
<tbody>
<tr>
<td width="114" valign="top">
<p><b>Tool</b></p>
</td>
<td width="148" valign="top">
<p align="center"><b>Visual Studio 2005</b></p>
</td>
<td width="148" valign="top">
<p align="center"><b>Visual Studio 2008</b></p>
</td>
<td width="148" valign="top">
<p align="center"><b>Visual Studio 2010</b></p>
</td>
</tr>
<tr>
<td width="114" valign="top">
<p>Intel Parallel Amplifier</p>
</td>
<td width="148" valign="top">
<p>ampl-vsreg disable vs2005</p>
</td>
<td width="148" valign="top">
<p>ampl-vsreg disable vs2008</p>
</td>
<td width="148" valign="top">
<p>ampl-vsreg disable vs2010</p>
</td>
</tr>
<tr>
<td width="114" valign="top">
<p>Intel Parallel Amplifier 2011</p>
</td>
<td width="148" valign="top">
<p>ampl-vsreg --disable 2005</p>
</td>
<td width="148" valign="top">
<p>ampl-vsreg --disable 2008</p>
</td>
<td width="148" valign="top">
<p>ampl-vsreg --disable 2010</p>
</td>
</tr>
<tr>
<td width="114" valign="top">
<p>Intel Parallel Inspector</p>
</td>
<td width="148" valign="top">
<p>insp-vsreg disable vs2005</p>
</td>
<td width="148" valign="top">
<p>insp-vsreg disable vs2008</p>
</td>
<td width="148" valign="top">
<p>insp-vsreg disable vs2010</p>
</td>
</tr>
<tr>
<td width="114" valign="top">
<p>Intel Parallel Inspector 2011</p>
</td>
<td width="148" valign="top">
<p>insp-vsreg --disable 2005</p>
</td>
<td width="148" valign="top">
<p>insp-vsreg --disable 2008</p>
</td>
<td width="148" valign="top">
<p>insp-vsreg --disable 2010</p>
</td>
</tr>
</tbody>
</table>
<p><br /><br />For <i>Intel Parallel Composer</i> use the<b> </b><b>Control Panel &gt; Add/Remove Programs</b> for the version you want to disable:</p>
<p><br />Select <b>Modify</b> and disable the following options:</p>
<p>○ Integrated Documentation<br />○ Intel Parallel Debugger Extension<br />○ Integration(s) in Microsoft Visual Studio</p>
<p>            Select <b>Next &gt; Modify<br /></b><b><br /><br /></b></p>
<ol start="2" type="1">
<li>Enable the Visual Studio integration.   </li>
</ol>
<p>For  <i>Intel Parallel Amplifier</i> or <i>Intel Parallel Inspector</i>, start by opening the Command Prompt window for the version of Parallel Studio you wish to enable, then invoke the appropriate script to enable the integration:</p>
<p> </p>
<table width="565" cellpadding="0" cellspacing="0" border="1">
<tbody>
<tr>
<td width="138" valign="top">
<p><b>Tool</b></p>
</td>
<td width="130" valign="top">
<p align="center"><b>Visual Studio 2005</b></p>
</td>
<td width="148" valign="top">
<p align="center"><b>Visual Studio 2008</b></p>
</td>
<td width="148" valign="top">
<p align="center"><b>Visual Studio 2010</b></p>
</td>
</tr>
<tr>
<td width="138" valign="top">
<p>Intel Parallel Amplifier</p>
</td>
<td width="130" valign="top">
<p>ampl-vsreg integrate vs2005</p>
</td>
<td width="148" valign="top">
<p>ampl-vsreg integrate vs2008</p>
</td>
<td width="148" valign="top">
<p>ampl-vsreg integrate vs2010</p>
</td>
</tr>
<tr>
<td width="138" valign="top">
<p>Intel Parallel Amplifier 2011</p>
</td>
<td width="130" valign="top">
<p>ampl-vsreg --integrate 2005</p>
</td>
<td width="148" valign="top">
<p>ampl-vsreg --integrate 2008</p>
</td>
<td width="148" valign="top">
<p>ampl-vsreg --integrate 2010</p>
</td>
</tr>
<tr>
<td width="138" valign="top">
<p>Intel Parallel Inspector</p>
</td>
<td width="130" valign="top">
<p>insp-vsreg integrate vs2005</p>
</td>
<td width="148" valign="top">
<p>insp-vsreg integrate vs2008</p>
</td>
<td width="148" valign="top">
<p>insp-vsreg integrate vs2010</p>
</td>
</tr>
<tr>
<td width="138" valign="top">
<p>Intel Parallel Inspector 2011</p>
</td>
<td width="130" valign="top">
<p>insp-vsreg --integrate 2005</p>
</td>
<td width="148" valign="top">
<p>insp-vsreg --integrate 2008</p>
</td>
<td width="148" valign="top">
<p>insp-vsreg --integrate 2010</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<p><br />For <i>Intel Parallel Composer</i> use the <b>Control Panel &gt; Add/Remove Programs</b> entry for the version you want to enable:</p>
<p><br />Select <b>Modify</b> and enable the following options:</p>
<p>○ Integrated Documentation<br />○ Intel Parallel Debugger Extension<br />○ Integration(s) in Microsoft Visual Studio</p>
Select the Visual Studio versions you would like to enable integration with.<br />Select <b>Next &gt; Modify</b></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/how-to-change-the-parallel-studio-version-integrated-into-visual-studio/</link>
      <pubDate>Thu, 02 Sep 2010 19:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/how-to-change-the-parallel-studio-version-integrated-into-visual-studio/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/how-to-change-the-parallel-studio-version-integrated-into-visual-studio/</guid>
      <category>Intel® Parallel Composer</category>
      <category>Intel® Parallel Amplifier</category>
      <category>Intel® Parallel Inspector</category>
      <category>Intel® Software Development Products Home</category>
      <category>Intel® Parallel Studio Home</category>
      <category>Intel® Parallel Advisor</category>
      <category>Intel® Parallel Amplifier Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
      <category>Intel® Parallel Inspector Knowledge Base</category>
      <category>Intel® Software Development Products Registration Center Knowledge Base</category>
      <category>Intel® Parallel Advisor Knowledge Base</category>
    </item>
    <item>
      <title>Getting the product running with my new license</title>
      <description><![CDATA[ <p class="sectionHeading"><span class="sectionHeading">Please make sure to </span><a href="http://software.intel.com/en-us/articles/register-products-serial-number/">Register your Serial N</a>umber ; After registration, you will receive an email with a copy of your .lic license file attached.</p>
<p><br />The next steps are different based on your license type.</p>
<p><b class="sectionHeading">If you have a single user license, follow the simple steps below.  <br /></b><br />Save the license file sent to you by email to:</p>
<p>          • On Windows*: &lt;installation drive&gt;\Program Files\Common Files\Intel\Licenses<br />          • On Linux*: /opt/intel/licenses<br />          • On MAC OS* X: /Users/Shared/Library/Application Support/Intel/Licenses<br /><strong>            Note:</strong> if the INTEL_LICENSE_FILE environment variable is defined, copy the file to the directory specified by the environment variable, instead.<br /><br /><br /><strong>If you have a counted (floating) license, you must do following to install and configure your License Host Server system and your client systems:<br /><br /></strong>- Set up the license host server system<br />- Read the Intel License Manager for FLEXlm* User's Guide <br />- Download the correct Intel FLEXlm server for license host server system<br />- Install the FLEXlm server: after installation, the license server should start running automatically<br />- To manually start or stop the FLEXlm license server, please refer to the FLEXlm user's guide <br /><br /><strong>References and useful articles:</strong> <a href="http://software.intel.com/en-us/articles/licensing-faq/">http://software.intel.com/en-us/articles/licensing-faq/</a></p> ]]></description>
      <link>http://software.intel.com/en-us/articles/getting-the-product-running-with-my-new-license/</link>
      <pubDate>Sun, 20 Jun 2010 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/getting-the-product-running-with-my-new-license/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/getting-the-product-running-with-my-new-license/</guid>
      <category>ISN General</category>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® C++ Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® License Manager for FLEXlm* Knowledge Base</category>
      <category>Intel® Parallel Amplifier Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
      <category>Intel® Parallel Inspector Knowledge Base</category>
      <category>Intel® Software Development Products Registration Center Knowledge Base</category>
    </item>
    <item>
      <title>Evaluation Guide Portal  from Intel</title>
      <description><![CDATA[ <link href="http://software.intel.com/sites/products/evaluation-guides/2011/css/main2.css" type="text/css" rel="stylesheet" />
<!-- JAVASCRIPT -->



<div id="mainContainer">
<div id="navigation">
<ul>
<!-- INTEL SOFTWARE DEVELOPMENT PRODUCTS NAV --><!-- 						Uses background images that switch on hover.  They can be found in   2011/img/content/.  The images are specified in the CSS, starting at '#mainContainer #navigation ul li.intel' 					-->
<li class="intel"><a href="http://software.intel.com/en-us/intel-sdp-home/">Intel Software Development Products</a></li>
<li class="home"><a href="http://software.intel.com/en-us/intel-sdp-home/">Home</a></li>
<li class="products"><a href="http://software.intel.com/en-us/articles/intel-sdp-products/">Products</a></li>
<li class="news"><a href="http://software.intel.com/en-us/articles/intel-sdp-news/">News &amp; Events</a></li>
<li class="resources"><a href="http://software.intel.com/en-us/articles/intel-sdp-resources/">Resources</a></li>
<li class="support"><a href="http://software.intel.com/en-us/articles/intel-software-developer-support/">Support</a></li>
<li class="store"><a href="http://software.intel.comttp://software.intel.com/en-us/articles/buy-or-renew/">Store</a></li>
</ul>
</div>
<table cellspacing="0">
<tbody>
<tr>
<td>
<div id="mainHeader"><!-- MAIN HEADER --><!-- Background image is specified in CSS at '#mainContainer #mainHeader h1' 							-->
<h1>Intel® Software Development Products: Quick Evaluation Guides for Serial and Parallel Apps</h1>
</div>
</td>
</tr>
</tbody>
</table>
<div id="mainContent"><!-- FEATURE AREA (white background) -->
<div id="feature"><!-- COLUMN 1 - styles are specified in css starting at '#mainContainer #mainContent #feature #col1' -->
<div id="col1"><!-- HEADER -->
<h2>Boost performance and reliability today with Intel<sup >®</sup> all-in-one tool suites</h2>
<p>Intel<sup >®</sup> Parallel Studio and Intel<sup >®</sup> Parallel Studio XE deliver the compilers, libraries, and error-checking and profiling tools to create reliable, high-performance applications.</p>
<p>Intel Parallel Studio XE helps high-performance C/C++ and Fortran developers boost performance, code reliably, and scale forward. Intel Parallel Studio enables Microsoft Visual Studio* C/C++ developers to exploit multicore.</p>
<!-- ITALICIZED INSTRUCTIONS -->
<p id="instructions">Download the step-by-step guides and see how quickly you can improve your code by addressing a range of issues including memory leaks, performance bottlenecks, parallelism, and more.  Note that each guide requires the free 30-day trial of the software.</p>
</div>
<!-- COLUMN 2 - uses background image; styles are specified in css starting at '#mainContainer #mainContent #feature #col2' -->
<div id="col2"><a href="https://registrationcenter.intel.com/RegCenter/EvalForm.aspx?ProductID=1498">Intel® Parallel Studio: Download a free 30-day trial &gt;</a></div>
<!-- COLUMN 3 - uses background image; styles are specified in css starting at '#mainContainer #mainContent #feature #col3' -->
<div id="col3"><a href="http://software.intel.com/en-us/articles/intel-software-evaluation-center/">Intel® Parallel Studio XE: Download a free 30-day trial &gt;</a></div>
<br clear="all" /></div>
<!-- DOWNLOADS AREA (grey outline) -->
<div id="downloadsContainer"><!-- DOWNLOAD 1 -->
<div class="download alt">
<div class="col1">
<h3>Boost Performance</h3>
<p>In many cases, recompiling just one file can give you a major performance boost.</p>
</div>
<div class="col2"><span class="getGuide">Get the guide now </span>
<div class="link">
<div class="pdfIcon"><a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/intelparallelstudio-evaluationguide-boost-performance.pdf"><img src="http://software.intel.com/sites/products/evaluation-guides/2011/img/content/pdf_icon.png" /></a></div>
<a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/intelparallelstudio-evaluationguide-boost-performance.pdf">For Intel®<br />Parallel Studio &gt;</a></div>
</div>
<div class="col3">
<div class="link">
<div class="pdfIcon"><a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/studioxe-evalguide-boost-performance.pdf"><img src="http://software.intel.com/sites/products/evaluation-guides/2011/img/content/pdf_icon.png" /></a></div>
<a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/studioxe-evalguide-boost-performance.pdf">For Intel®<br />Parallel Studio XE &gt;</a></div>
</div>
</div>
<!-- DOWNLOAD 2 -->
<div class="download">
<div class="col1">
<h3>Add Parallelism</h3>
<p>Easily apply a <i>parallel_for</i> to a <i>conforming for</i> loop for a significant performance increase—even without further tuning.</p>
</div>
<div class="col2"><span class="getGuide">Get the guide now </span>
<div class="link">
<div class="pdfIcon"><a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/intelparallelstudio-evaluationguide-add-parallelsim.pdf"><img src="http://software.intel.com/sites/products/evaluation-guides/2011/img/content/pdf_icon.png" /></a></div>
<a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/intelparallelstudio-evaluationguide-add-parallelsim.pdf">For Intel®<br />Parallel Studio &gt;</a></div>
</div>
<div class="col3">
<div class="link">
<div class="pdfIcon"><a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/studioxe-evalguide-add-parallelism.pdf"><img src="http://software.intel.com/sites/products/evaluation-guides/2011/img/content/pdf_icon.png" /></a></div>
<a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/studioxe-evalguide-add-parallelism.pdf">For Intel®<br />Parallel Studio XE &gt;</a></div>
</div>
</div>
<!-- DOWNLOAD 3 -->
<div class="download alt">
<div class="col1">
<h3>Eliminate Memory Errors</h3>
<p>Find memory leaks and threading errors before they happen at any point in your development cycle.</p>
</div>
<div class="col2"><span class="getGuide">Get the guide now </span>
<div class="link">
<div class="pdfIcon"><a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/intelparallelstudio-evaluationguide-memory-errors.pdf"><img src="http://software.intel.com/sites/products/evaluation-guides/2011/img/content/pdf_icon.png" /></a></div>
<a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/intelparallelstudio-evaluationguide-memory-errors.pdf">For Intel®<br />Parallel Studio &gt;</a></div>
</div>
<div class="col3">
<div class="link">
<div class="pdfIcon"><a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/studioxe-evalguide-remove-memory-errors.pdf"><img src="http://software.intel.com/sites/products/evaluation-guides/2011/img/content/pdf_icon.png" /></a></div>
<a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/studioxe-evalguide-remove-memory-errors.pdf">For Intel®<br />Parallel Studio XE &gt;</a></div>
</div>
</div>
<!-- DOWNLOAD 4 -->
<div class="download">
<div class="col1">
<h3>Eliminate Threading Errors</h3>
<p>Find threading errors like data races and deadlocks which can cause crashes and application hangs.</p>
</div>
<div class="col2"></div>
<div class="col3">
<div class="link">
<div class="pdfIcon"><a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/studioxe-evalguide-remove-memory-errors.pdf"><img src="http://software.intel.com/sites/products/evaluation-guides/2011/img/content/pdf_icon.png" /></a></div>
<a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/studioxe-evalguide-remove-threading-errors.pdf">For Intel®<br />Parallel Studio XE &gt;</a></div>
</div>
</div>
<!-- DOWNLOAD 5 -->
<div class="download alt">
<div class="col1">
<h3>Resolve Resource Leaks</h3>
<p>Identify, analyze, and resolve resource errors in serial or parallel programs.</p>
</div>
<div class="col2"><span class="getGuide">Get the guide now </span>
<div class="link">
<div class="pdfIcon"><a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/intelparallelstudio-evaluationguide-resolve-resource-leaks.pdf"><img src="http://software.intel.com/sites/products/evaluation-guides/2011/img/content/pdf_icon.png" /></a></div>
<a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/intelparallelstudio-evaluationguide-resolve-resource-leaks.pdf">For Intel®<br />Parallel Studio &gt;</a></div>
</div>
<div class="col3">
<div class="link">
<div class="pdfIcon"><a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/studioxe-evalguide-resolve-resource-leaks.pdf"><img src="http://software.intel.com/sites/products/evaluation-guides/2011/img/content/pdf_icon.png" /></a></div>
<a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/studioxe-evalguide-resolve-resource-leaks.pdf">For Intel®<br />Parallel Studio XE &gt;</a></div>
</div>
</div>
<!-- DOWNLOAD 6 -->
<div class="download">
<div class="col1">
<h3>Improve C++ Code Quality <br />with Static Security Analysis (SSA)</h3>
<p>Identify errors and security weaknesses through deep analysis of C++ source code.</p>
</div>
<div class="col2"></div>
<!--  							If this block contains a 'getGuide' element, add the class 'hasGetGuide' 						  -->
<div class="col3 hasGetGuide"><span class="getGuide">Get the guide now </span>
<div class="link">
<div class="pdfIcon"><a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/studioxe-evalguide-SSA-with_C++_020812.pdf"><img src="http://software.intel.com/sites/products/evaluation-guides/2011/img/content/pdf_icon.png" /></a></div>
<a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/studioxe-evalguide-SSA-with_C++_020812.pdf">For Intel®<br />Parallel Studio XE &gt;</a></div>
</div>
</div>
<!-- DOWNLOAD 7 -->
<div class="download alt">
<div class="col1">
<h3>Improve Fortran Code Quality <br />with Static Security Analysis (SSA)</h3>
<p>Identify errors and security weaknesses through deep analysis of Fortran source code.</p>
</div>
<div class="col2"></div>
<div class="col3"><span class="getGuide">Get the guide now </span>
<div class="link">
<div class="pdfIcon"><a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/studioxe-evalguide-SSA-with_Fortran_020812.pdf"><img src="http://software.intel.com/sites/products/evaluation-guides/2011/img/content/pdf_icon.png" /></a></div>
<a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/studioxe-evalguide-SSA-with_Fortran_020812.pdf">For Intel®<br />Parallel Studio XE&gt;</a></div>
</div>
</div>
<!-- DOWNLOAD 8 -->
<div class="download">
<div class="col1">
<h3>Intel<sup >®</sup> Cilk™ Plus</h3>
<p>Intel Cilk Plus adds simple language extensions to express data and task parallelism to the C and C++ language implemented by the Intel<sup >®</sup> C++ Compiler, creating a simple path to parallelism.</p>
</div>
<div class="col2"><span class="getGuide">Get the guide now </span>
<div class="link">
<div class="pdfIcon"><a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/intelparallelstudio-evaluationguide-cilk-plus.pdf"><img src="http://software.intel.com/sites/products/evaluation-guides/2011/img/content/pdf_icon.png" /></a></div>
<a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/intelparallelstudio-evaluationguide-cilk-plus.pdf">For Intel®<br />Parallel Studio &gt;</a></div>
</div>
</div>
<!-- DOWNLOAD 9 -->
<div class="download alt">
<div class="col1">
<h3>Model Parallelism</h3>
<p>Model the parallelization of your serial application using Intel<sup >®</sup> Parallel Advisor.</p>
</div>
<div class="col2"><span class="getGuide">Get the guide now </span>
<div class="link">
<div class="pdfIcon"><a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/intelparallelstudio-evaluationguide-model-parallelism.pdf"><img src="http://software.intel.com/sites/products/evaluation-guides/2011/img/content/pdf_icon.png" /></a></div>
<a target="blank" href="http://software.intel.com/sites/products/evaluation-guides/docs/intelparallelstudio-evaluationguide-model-parallelism.pdf">For Intel®<br />Parallel Studio &gt;</a></div>
</div>
</div>
</div>
</div>
</div> ]]></description>
      <link>http://software.intel.com/en-us/articles/evaluation-guides/</link>
      <pubDate>Sun, 09 May 2010 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/evaluation-guides/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/evaluation-guides/</guid>
      <category>Software Products General</category>
      <category>ISN General</category>
      <category>Intel® Parallel Amplifier Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
      <category>Intel® Parallel Inspector Knowledge Base</category>
    </item>
    <item>
      <title>Hotspot-Recompile - Quickly Improve Application Performance</title>
      <description><![CDATA[ <br />
<div id="art_pre_template">This is the sample code described in the video:  <a href="http://software.intel.com/en-us/videos/hotspot-recompile-pisample/.  It is a is">http://software.intel.com/en-us/videos/hotspot-recompile-pisample/.  It </a>simply computes the value of pi over several million iterations.  It is intended to show how to quickly use Intel(r) Parallel Amplifier to find the hotspot file, the file in which the biggest performance bottleneck function(s) is found.  Then, it shows how to configure the Microsoft Visual Studio project to only recompile that one file with Intel(r) Parallel Composer to optimize it.  Doing so results in about an 80% performance boost, without having to rebuild the whole application. <br /><br />By installing or copying all or any part of the software components in this page, you agree to the terms of the <a href="http://software.intel.com/en-us/articles/intel-sample-source-code-license-agreement/">Intel Sample Source Code License Agreement.</a></div>
<br />
<table cellpadding="5" cellspacing="0" rules="none" border="1">
<tbody>
<tr>
<th align="left" valign="middle" >Optimization Notice</th>
</tr>
<tr bgcolor="#ccecff">
<td>
<p>Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.</p>
<p align="right">Notice revision #20110804</p>
</td>
</tr>
</tbody>
</table> ]]></description>
      <link>http://software.intel.com/en-us/articles/hotspot-recompile-application-performance/</link>
      <pubDate>Wed, 14 Apr 2010 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/hotspot-recompile-application-performance/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/hotspot-recompile-application-performance/</guid>
      <category>ISN General</category>
      <category>Intel® Parallel Amplifier Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>Tip: Watch out! Use of some versions of STL streams may result in slowdown of your just parallelized application.</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><strong>Problem : </strong>Use of STL streams in your parallelized code seems to cause your application to run 2x to 5x slower when compared to the original serial version. <br /><br /><br /><strong>Environment : </strong>This isssue is likely to be specific to streams implementation in certain versions of Microsoft Visual Studio (Ex: Microsoft Visual Studio 2005).<br /><br /><br /><strong>Root Cause : </strong>Streams implementation with this issue use an expensive form of synchronization (Critical Section) which causes high contention and effectively slowsdown the parallel version of your application.<br /><br /><br /><strong>Resolution : </strong>Use versions of Streams implementation with a fix for this issue - when they become available. As of Oct 05 2009, there are no known versions with the fix. <br /><br /><strong>Additional Resources: <br /></strong> Can STL Streams Run Concurrently: <a target="_blank" href="http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/b049dbda-c115-410b-b5d8-513f727baf4d" title="Can STL Streams Run Concurrently">http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/b049dbda-c115-410b-b5d8-513f727baf4d<br /><br /></a> </div> ]]></description>
      <link>http://software.intel.com/en-us/articles/parallel-amplifier-tip-use-of-stl-streams-may-effectively-serializes-your-application/</link>
      <pubDate>Mon, 05 Oct 2009 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/parallel-amplifier-tip-use-of-stl-streams-may-effectively-serializes-your-application/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/parallel-amplifier-tip-use-of-stl-streams-may-effectively-serializes-your-application/</guid>
      <category>Parallel Programming</category>
      <category>Intel® Parallel Amplifier</category>
      <category>Intel® Parallel Amplifier Knowledge Base</category>
    </item>
    <item>
      <title>Use command line in Intel(R) Parallel Amplifier</title>
      <description><![CDATA[ <p>The Intel® Parallel Studio software contains Intel® Parallel Amplifier. This tool runs as an add-in to Microsoft* Visual Studio*.  However, sometimes we need to automate our measurement work (e.g., via a script), and not run the IDE to avoid (reduce) impact on the system.</p>
<p>Intel® Parallel Amplifier Update 1 has realized this feature.</p>
<p> </p>
<p>After installing the product, open a Command Prompt window and run the following command:</p>
<p><code>&gt; C:\Program Files\Intel\Parallel Studio\<b>Amplifier\</b><b>ampl-vars.bat</b></code></p>
<p>Now, the environment for command line has been configured and you can use the <b>ampl-cl </b>command<b>.<br /></b></p>
<p> </p>
<p>You can run <code>ampl-cl -help</code> to get familiar with the syntax of command.</p>
<p><b>Usage:</b></p>
<p>ampl-cl &lt;-action-option [-modifier-option] [[--] target [target options]]</p>
<p> </p>
<p>Action-option contains：collect, collect-list, report, report-list, finalize, help, version</p>
<p> </p>
<p>Modifier-option contains： cumulative-threshold-percent, resume-after, result-dir, search-dir, start-pause, user-data-dir, verbose</p>
<p> </p>
<p><b>Examples</b>:</p>
<ul>
<li>List all data collectors<br /><code>&gt; ampl-cl -collect-list</code></li>
<li>run target application, collect hot functions, save results in default sub-directory<br /><code>&gt; ampl-cl -collect hotspots matrix.exe</code></li>
<li>run target application, collect hot functions, save result in specified sub-directory<br /><code>&gt; ampl-cl -collect concurrency -result-dir r009cc matrix.exe</code></li>
<li>run target application, delay 3000 million seconds (e.g., 3 sec) to collect times for all locks and waits, save results in default sub-directory<br /><code>&gt; ampl-cl -collect lockswaits -start-paused -resume-after=3000 matrix.exe</code></li>
<li>List all report types<br /><code>&gt; ampl-cl -report-list</code></li>
<li>Report a result for recent running<br /><code>&gt; ampl-cl -report perf</code></li>
<li>Report a result based on data  from specified sub-directory, use comma as a delimiter<br /><code>&gt; ampl-cl -report perf-detail -csv-delimiter="," -result-dir r012hs</code></li>
<li>Report enumerates modules that consumes 80% of total CPU time<br /><code>&gt; ampl-cl -report perf -result-dir r012cc -cumulative-threshold-percent=80</code></li>
<li>Compare results for two sessions<br /><code>&gt; ampl-cl -report summary -result-dir r012cc -result-dir r009cc</code></li>
</ul> ]]></description>
      <link>http://software.intel.com/en-us/articles/use-command-line-in-intelr-paralle-amplifier/</link>
      <pubDate>Mon, 14 Sep 2009 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/use-command-line-in-intelr-paralle-amplifier/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/use-command-line-in-intelr-paralle-amplifier/</guid>
      <category>Intel® Parallel Amplifier Knowledge Base</category>
    </item>
    <item>
      <title>Call stack is not full, contains [Unknown] functions or seems incorrect</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><b>Problem : </b><br />
<p><br />Intel® Parallel Amplifier provides a call stack for functions in the results view. For some applications these call stacks might appear incomplete or seem incorrect according to known application work flow, even with .pdb files for the project binaries. Additionally, there could be '[Unknown]' identifiers within the function call chain displayed in the stack view. Generally, the problem appears when there is difficulty defining the call path to the user code because of system functions on top of the stack.</p>
<p> </p>
<p>See the illustrative Hotspot results of analysis the multithreaded test case below. Here are several run-time functions (called in ntdll.dll) on the top of the list. It is not clear from the Call Stack View or Top-Down Tree to which user functions those calls are descending though the stack. Additionally, there are ‘Unknown’ identifiers which refer to function and module names.</p>
<p> </p>
<br /><img title="ss1.JPG" alt="ss1.JPG" src="http://software.intel.com/file/22442" /><br /><br /><img title="ss2.JPG" alt="ss2.JPG" src="http://software.intel.com/file/22443" /><br /><br />
<p> </p>
<p>Let’s study the source code of the analyzed application. The ExtendBuffer function is extending a buffer chain by allocating some memory for a new node in the linked list of buffers. ExtendBuffer is supposed to take most of the program execution time as it's being called in the loop within many threads and there are no other functions that do enough calculations to consume noticeable CPU time.</p>
<p> </p>
<pre name="code" class="cpp:nocontrols:nogutter">#define THREAD_NUM 16

struct chain
{
	size_t size;
	char* buf;
	chain* p_c;
};

chain* ExtendBuffer(chain* p, size_t n)
{
	chain* p_new = new chain;
	p_new-&gt;p_c = 0;
	p_new-&gt;size = n;
	p_new-&gt;buf	= new char[n];
	p-&gt;p_c = p_new;
	return p_new;
}
DWORD WINAPI TestFunc(LPVOID param)
{
	chain* p = new chain;
	for (int i=0;i&lt;10000;i++)
		p = ExtendBuffer(p, 4);
	return 0;
}
void main()
{
	DWORD idThread[THREAD_NUM];
	HANDLE hThread[THREAD_NUM];
	for(int i=0;i&lt;THREAD_NUM;i++)
		hThread[i]=CreateThread(NULL,0,TestFunc,0,0,&amp;idThread[i]);
	WaitForMultipleObjects(THREAD_NUM,hThread,TRUE,INFINITE);
}
</pre>
<p> </p>
<p>Getting back to the Hotspot results there is no ExtendBuffer function in the list. If searching for the known user functions (e.g. ExtendBuffer or TestFunc), they might be found under '[Unknown frame(s)]' function identifier in the stack and the attributed CPU time is not that high as expected, which is confusing.</p>
<p> </p>
<b><br />Root Cause : </b><br /><br />Such a problem with an incomplete call stack is caused by the absence of debug info in the system modules, like ntdll.dll. Many samples are taken from the kernel module, but the data collector was not able to unwind the stack properly due to stack frame info absence.<br /><br /><b><br /><br />Resolution : </b><br /><br />
<p>Specify paths to the Microsoft* symbol server in the Microsoft Visual Studio*, for example, http://msdl.microsoft.com/download/symbols, in Tools &gt; Options &gt; Debugging &gt;  Symbols page.</p>
<img title="ss3.JPG" alt="ss3.JPG" src="http://software.intel.com/file/22444" /><br /><br />
<p>For more information regarding the Microsoft Symbol Server, please see <a href="http://www.microsoft.com/whdc/devtools/debugging/debugstart.mspx" linkindex="6">http://www.microsoft.com/whdc/devtools/debugging/debugstart.mspx</a></p>
<p>Intel® Parallel Amplifier will use the symbol files cached in the C:\websymbols directory, as it is set in the example, and provide a more complete call stack:<br /><br /><img title="ss4.JPG" alt="ss4.JPG" src="http://software.intel.com/file/22445" /><br /><br /><img title="ss5.JPG" alt="ss5.JPG" src="http://software.intel.com/file/22446" /><br /><br />Now the source lines are resolved properly and with a double click onto the hotspot function a user will be navigated to the right source code:<br /><br /><img title="ss6.JPG" alt="ss6.JPG" src="http://software.intel.com/file/22447" /></p>
</div> ]]></description>
      <link>http://software.intel.com/en-us/articles/call-stack-is-not-full/</link>
      <pubDate>Fri, 11 Sep 2009 13:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/call-stack-is-not-full/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/call-stack-is-not-full/</guid>
      <category>Tools</category>
      <category>Intel® Parallel Amplifier</category>
      <category>Intel® Parallel Amplifier Knowledge Base</category>
    </item>
  </channel></rss>
