<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated on Sat, 26 May 2012 04:04:33 -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-composer-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-composer-kb/type/tips-and-techniques/</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>Getting Started with Intel® Cilk™ Plus Array Notations</title>
      <description><![CDATA[ <strong><span >Introduction<br /><br /></span></strong>Array Notations is an Intel-specific language extension that is a part of <a href="http://software.intel.com/en-us/articles/intel-cilk-plus/">Intel® Cilk<sup>TM</sup> Plus</a> feature supported by the Intel® C++ Compiler that provides ways to express data parallel operation on ordinary declared C/C++ arrays.  By using array notations, you can improve the performance of your application through <a href="http://software.intel.com/en-us/articles/a-guide-to-auto-vectorization-with-intel-c-compilers/?wapkw=%28vectorization+with+intel+compilers%29">Vectorization</a>.  Vectorization is the key to improving your applications' performance through taking advantage of the processor's capability to operate on multiple array (or vector) elements at a time.  The Intel® Compilers provide unique capabilities to enable vectorization. The programmer may be able to help the compiler to vectorize more loops through a simple programming style and by the use of compiler features designed to assist vectorization.  This article discusses how to use the Array Notations feature from the Intel® Cilk<sup>TM</sup> Plus, to help the compiler to vectorize C/C++ code and improve performance.<br /><br /><a href="http://software.intel.com/file/42927">Click here to continue reading the article.</a> ]]></description>
      <link>http://software.intel.com/en-us/articles/getting-started-with-intel-cilk-plus-array-notations/</link>
      <pubDate>Sun, 25 Mar 2012 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/getting-started-with-intel-cilk-plus-array-notations/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/getting-started-with-intel-cilk-plus-array-notations/</guid>
      <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® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>Getting Started with Intel® Cilk™ Plus SIMD Vectorization and Elemental Functions</title>
      <description><![CDATA[ <strong><span >Introduction<br /></span></strong><br />SIMD Vectorization and Elemental Functions are a part of <a href="http://software.intel.com/en-us/articles/intel-cilk-plus/">Intel® Cilk<sup>TM</sup> Plus</a> feature supported by the Intel® C++ Compiler that provide ways to vectorize loops and user defined functions.  <a href="http://software.intel.com/en-us/articles/a-guide-to-auto-vectorization-with-intel-c-compilers/?wapkw=%28vectorization+with+intel+compilers%29">Vectorization </a>is the key to improving your applications' performance through taking advantage of the processor's Single Instruction Multiple Data (SIMD) capability to operate on multiple array (or vector) elements at a time.  The Intel® Compilers provide unique capabilities to enable vectorization. The programmer may be able to help the compiler to vectorize more loops through a simple programming style and by the use of compiler features designed to assist vectorization.  This article discusses how to use the vector elemental functions, and the SIMD directive (#pragma simd) from the Intel® Cilk<sup>TM</sup> Plus, to help the compiler to vectorize C/C++ code and improve performance.<br /><br /><a href="http://software.intel.com/file/42996">Click here to continue reading the article.</a><br /><br />Additional information about what sort of loops may be vectorized using the SIMD pragma/directive is available <a href="http://software.intel.com/en-us/articles/requirements-for-vectorizing-loops-with-pragma-simd/">here</a>. ]]></description>
      <link>http://software.intel.com/en-us/articles/getting-started-with-intel-cilk-plus-simd-vectorization-and-elemental-functions/</link>
      <pubDate>Tue, 20 Mar 2012 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/getting-started-with-intel-cilk-plus-simd-vectorization-and-elemental-functions/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/getting-started-with-intel-cilk-plus-simd-vectorization-and-elemental-functions/</guid>
      <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® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>Build the Visual C++ 2010 project with &amp;#34;msbuild&amp;#34; and Intel C++ compiler from command line</title>
      <description><![CDATA[ The Intel(R) C++ Composer XE for Windows 12.0 and the Intel(R) Parallel Composer 2011 support "msbuild" for Visual C++ 2010* projects. <br /><br />The usage and arguments of "msbuild" can be found at Microsoft* website - <a href="http://msdn.microsoft.com/en-us/library/ms164311.aspx">http://msdn.microsoft.com/en-us/library/ms164311.aspx</a>. Do an online search with "MSBuild Command Line" in case the page moved. <br /><br />Examples to use "msbuild" to build the Visual C++ 2010 project with Intel C++ compiler 12.x: <br /><ol>
<li>Rebuild the <strong>active</strong> solution configuration for platform toolset=“Intel C++ Compiler XE 12.0”</li>
<blockquote>
<p>&gt;&gt; msbuild.exe hello_vs10.sln /t:Rebuild /p:PlatformToolset="Intel C++ Compiler XE 12.0"</p>
</blockquote>
<p><br />The list of the supported platform toolsets can be found under <code>"[program files]\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\PlatformToolsets"</code> directory. Each directory name coincides with the appropriate toolset.</p>
<li>Rebuild the "<strong>x64|release</strong>" configuration for platform toolset=“Intel C++ Compiler XE 12.0”</li>
<blockquote>
<p>&gt;&gt; msbuild.exe hello_vs10.sln /t:Rebuild /p:Configuration=Release;Platform=x64 /p:PlatformToolset="Intel C++ Compiler XE 12.0"</p>
</blockquote>
<p> </p>
</ol>
<p>Refer to <a href="http://software.intel.com/en-us/articles/intel-c-compiler-for-windows-support-for-batch-build/">this article</a> for using "devenv" to build Visual C++ 2005* or 2008* projects with Intel C++ compilers.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/build-the-visual-c-2010-project-with-msbuild-and-intel-c-compiler-from-command-line/</link>
      <pubDate>Tue, 01 Nov 2011 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/build-the-visual-c-2010-project-with-msbuild-and-intel-c-compiler-from-command-line/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/build-the-visual-c-2010-project-with-msbuild-and-intel-c-compiler-from-command-line/</guid>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>Different behavior of Intel C Compiler on Linux/Windows</title>
      <description><![CDATA[ The following sample C code compiles fine with Intel(R) C Compiler on Linux but reports error when compiled with Intel C Compiler on Windows:<br /><br />
<pre name="code" class="cpp">int main() {

  int i;
  i = 1;
  printf("Here we go\n");
  int j;
  j = i;

}
</pre>
<br /><br />
<p><strong>&gt;icl -c t.c<br /></strong>Intel(R) C++ Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 12.1.0.233 Build 20110811<br />Copyright (C) 1985-2011 Intel Corporation.  All rights reserved.</p>
<p>t.c<br />t.c(6): error: declaration may not appear after executable statement in block<br />    int j;<br />    ^</p>
<p>compilation aborted for t.c (code 2)</p>
<p>To be able to declare variables after executable statements rather than having to declare all of them up front you will need to compile per C99 specification using the compiler option /Qstd=c99 as shown below:</p>
<p><strong>&gt;icl -c t.c -Qstd=c99<br /></strong>Intel(R) C++ Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 12.1.0.233 Build 20110811<br />Copyright (C) 1985-2011 Intel Corporation.  All rights reserved.</p>
<p>t.c<br />&gt;</p>
<p> </p> ]]></description>
      <link>http://software.intel.com/en-us/articles/different-behavior-of-intel-c-compiler-on-linuxwindows/</link>
      <pubDate>Wed, 07 Sep 2011 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/different-behavior-of-intel-c-compiler-on-linuxwindows/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/different-behavior-of-intel-c-compiler-on-linuxwindows/</guid>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>No &amp;#34;Intel(R) C++ Project&amp;#34; entry in VS2008 IDE</title>
      <description><![CDATA[ I have installed Visual Studio 2008 and Intel(R) Parallel Studio XE.  How come I see "Intel(R) Visual Fortran project" in the "New Project" list but no "Intel(R) C++ Project" option?<br /><br />There is no "Intel(R) C++ Project" entry in the VS2008 IDE.  The way it works is that the user creates a Microsoft* C++ project (e.g. Win32 Console Application, Win32 project, etc.), and then uses the Intel Compiler integration plug-in in Visual Studio to build that project with the Intel C++ compiler.  Here's how it works:<br /><br />1. Create a C++ project using Visual Studio or load an existing VC++ project<br /><br />2. Right click the Solution name in Visual Studio Solution Explorer, or right click on single project or a select number of projects in the solution (e.g. CTRL-Click projects of interest and then right click)<br /><br />3. Click "Intel C++ Composer XE 2011" and then click  "Use Intel(R) C++"<br /><br />After the above step if you do a "Build" or "Rebuild" the selected projects will be built using the Intel C++ Compiler.<br /><br /><br /> ]]></description>
      <link>http://software.intel.com/en-us/articles/no-intelr-c-project-entry-in-vs2008-ide/</link>
      <pubDate>Wed, 07 Sep 2011 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/no-intelr-c-project-entry-in-vs2008-ide/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/no-intelr-c-project-entry-in-vs2008-ide/</guid>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>error MSB8008: Specified platform toolset (Intel Parallel Composer 2011) is not installed or invalid</title>
      <description><![CDATA[ If the Platform toolset property in Visual Studio is not set correctly such that it does not match the current Intel C++ Compiler version installed in the Visual Studio IDE, an attempt to compile a file or build a project will the Intel(R) C++ Compiler will result in an error similar to the one below:<br /><br /><b>C:\Program Files  (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(511,5):  error MSB8008: Specified platform toolset (Intel Parallel Composer 2011) is not  installed or invalid. Please make sure that a supported PlatformToolset value is  selected.</b><br /><br />The above error could occur if you try to rebuild a project whose Platform Toolset property is currently set to <b>"Intel(R) Parallel Composer 2011"</b> on a system with a different version of Parallel Composer such as <b>"Intel(R) Parallel Composer XE 2011"</b>.  To resolve the error, you will need to manually set the Platform Toolset property of all projects to the Intel compiler version installed in the Visual Studio IDE under <b>"Tools\Options\Intel C++\Compilers"</b> .<br /><br /> ]]></description>
      <link>http://software.intel.com/en-us/articles/error-msb8008-specified-platform-toolset-intel-parallel-composer-2011-is-not-installed-or-invalid/</link>
      <pubDate>Mon, 08 Aug 2011 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/error-msb8008-specified-platform-toolset-intel-parallel-composer-2011-is-not-installed-or-invalid/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/error-msb8008-specified-platform-toolset-intel-parallel-composer-2011-is-not-installed-or-invalid/</guid>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>The &amp;#34;ConfigurationGeneral&amp;#34; rule is missing the &amp;#34;PlatformToolset&amp;#34; property</title>
      <description><![CDATA[ You get the following message if you try to build a Makefile project type with Intel C++ Compiler in the Visual Studio 2010* IDE:<br /><br />Microsoft Visual Studio<br />---------------------------<br />The "ConfigurationGeneral" rule is missing the "PlatformToolset" property.<br />---------------------------<br />OK   <br />---------------------------<br /><br /><br />The reason is that the Intel(R) C++ Compiler plug-in for Visual Studio does not support Makefile project types.  The Intel compiler only supports C++ project types. Makefile projects are tied to custom build rules which setup build rules and options, and the LIB, BIN, INCLUDE directories for the compiler they use.  To build a Makefile project with the Intel compiler you will need to have similar build rules that set up the build environment for the Intel C++ Compiler. ]]></description>
      <link>http://software.intel.com/en-us/articles/the-configurationgeneral-rule-is-missing-the-platformtoolset-property/</link>
      <pubDate>Mon, 08 Aug 2011 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/the-configurationgeneral-rule-is-missing-the-platformtoolset-property/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/the-configurationgeneral-rule-is-missing-the-platformtoolset-property/</guid>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>Intel(R) C++ Compiler Compatibility with Microsoft* Visual Studio Express*</title>
      <description><![CDATA[ <p>The Microsoft* Visual Studio Express Edition* does not provide the necessary interface for the Intel(R) C++ Compiler plug-in for Visual Studio IDE.  To install and use the Intel C++ Compiler in Visual Studio IDE you will need Visual Studio Standard Edition* or higher.  When using the Intel C++ Compiler with Visual Studio Exrpess you can only compile and build applications from an Intel Compiler command prompt.  <br /><br />There are no constraints in using the Intel(R) libraries such as Intel(R) IPP or TBB with Visual Studio Express. You can download stand-alone versions of the above libraries, add the library "include" and "library" directories  in the IDE and compile using the Visual Studio Express Compiler.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/using-intelr-c-compiler-with-microsoft-visual-studio-express/</link>
      <pubDate>Thu, 16 Jun 2011 21:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/using-intelr-c-compiler-with-microsoft-visual-studio-express/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/using-intelr-c-compiler-with-microsoft-visual-studio-express/</guid>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>Performance Tools for Software Developers - Auto parallelization and  /Qpar-threshold</title>
      <description><![CDATA[ <!--CTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dt-->
<table cellpadding="0" cellspacing="15" border="0">
<tbody>
<tr>
<td class="bodycopy">
<p>The auto-parallelization feature of the Intel C++ Compiler automatically translates serial portions of the input program into semantically equivalent multithreaded code. Automatic parallelization determines the loops that are good work sharing candidates, performs the dataflow analysis to verify correct parallel execution, and partitions the data for threaded code generation as is needed in programming with OpenMP directives. The OpenMP and Auto-parallelization applications provide the performance gains from shared memory on multiprocessor systems, IA-32 and  Intel 64.</p>
<p>The following table lists the options that enable Auto-parallelization:</p>
<blockquote><b>/Qparallel:</b><br />Enables the auto-parallelizer to generate multithreaded code for loops that can be safely executed in parallel. <br /><br /><b>/Qpar-threshold:n</b><br />This option sets a threshold for the auto-parallelization of loops based on the probability of profitable execution of the loop in parallel. To use this option, you must also specify -parallel (Linux and Mac OS X) or /Qparallel (Windows). The default is /Qpar-threshold:100.</blockquote>
<p>This option is useful for loops whose computation work volume cannot be determined at compile-time. The threshold is usually relevant when the loop trip count is unknown at compile-time.</p>
<p>The compiler applies a heuristic that tries to balance the overhead of creating multiple threads versus the amount of work available to be shared amongst the threads.</p>
<p>The n is an integer whose value is the threshold for the auto-parallelization of loops. Possible values are 0 through 100. If <i>n</i> is 0, loops get auto-parallelized always, regardless of computation work volume. If <i>n</i> is 100, loops get auto-parallelized when performance gains are predicted based on the compiler analysis data. Loops get auto-parallelized only if profitable parallel execution is almost certain. The intermediate 1 to 99 values represent the percentage probability for profitable speed-up. For example, <i>n</i>=50 directs the compiler to parallelize only if there is a 50% probability of the code speeding up if executed in parallel.</p>
<p>Also, to be "100%" sure that a loop will benefit from parallelization, the compiler needs to know the iteration count at compile time. For a "99%" or lower threshold, knowing the iteration count at compile time is not a requirement.</p>
<p>This leads to a big difference in the number of loops parallelized at 99% compared to 100%. For many apps, 99% is a better setting, but for some apps with a lot of short loops, 99% will slow them down.</p>
<p>The following example, int_sin.c, does not auto parallelize when we use /Qpar-threshold:100 using command line below :</p>
<blockquote>C: &gt;icl -c /Qparallel /Qpar-report3 /Qpar-threshold:100 int_sin.c
<p>If we use /Qpar-threshold:99 then it is parallelized.</p>
<p><b>Example:</b></p>
<p class="whs23" ><b ></b></p>
<p class="MsoNormal" ><span >// int_sin.c</span></p>
<p class="MsoNormal" ><span >// Intel C++ compiler sample program</span></p>
<p class="MsoNormal" > </p>
<p class="MsoNormal" ><span >#include</span><span ><span >&lt;stdio.h&gt;</span></span></p>
<p class="MsoNormal" ><span >#include</span><span ><span >&lt;stdlib.h&gt;</span></span></p>
<p class="MsoNormal" ><span >#include</span><span ><span >&lt;time.h&gt;</span></span></p>
<p class="MsoNormal" ><span >#include</span><span ><span >&lt;mathimf.h&gt;</span></span></p>
<p class="MsoNormal" > </p>
<p class="MsoNormal" ><span >// Function to be integrated</span></p>
<p class="MsoNormal" ><span >// Define and prototype it here</span></p>
<p class="MsoNormal" ><span >// | sin(x) |</span></p>
<p class="MsoNormal" ><span >#define </span><span >INTEG_FUNC(x) fabs(sin(x))</span></p>
<p class="MsoNormal" > </p>
<p class="MsoNormal" ><span >// Prototype timing function</span></p>
<p class="MsoNormal" ><span >double </span><span >dclock( <span >void</span>);</span></p>
<p class="MsoNormal" > </p>
<p class="MsoNormal" ><span >int </span><span >main( <span >void</span>)</span></p>
<p class="MsoNormal" ><span >{</span></p>
<p class="MsoNormal" ><span ><span >// Loop counters and number of interior points</span></span></p>
<p class="MsoNormal" ><span ><span >unsigned </span><span >int</span> i, j, N;</span></p>
<p class="MsoNormal" ><span ><span >// Stepsize, independent variable x, and accumulated sum</span></span></p>
<p class="MsoNormal" ><span ><span >double</span> step, x_i, sum;</span></p>
<p class="MsoNormal" ><span ><span >// Timing variables for evaluation </span></span></p>
<p class="MsoNormal" ><span ><span >double</span> start, finish, duration, clock_t;</span></p>
<p class="MsoNormal" ><span ><span >// Start integral from</span></span></p>
<p class="MsoNormal" ><span ><span >double</span> interval_begin = 0.0;</span></p>
<p class="MsoNormal" ><span ><span >// Complete integral at</span></span></p>
<p class="MsoNormal" ><span ><span >double</span> interval_end = 2.0 * 3.141592653589793238;</span></p>
<p class="MsoNormal" > </p>
<p class="MsoNormal" ><span ><span >// Start timing for the entire application</span></span></p>
<p class="MsoNormal" ><span >start = clock();</span></p>
<p class="MsoNormal" > </p>
<p class="MsoNormal" ><span >printf( <span >" "</span>);</span></p>
<p class="MsoNormal" ><span >printf( <span >" Number of | Computed Integral | "</span>);</span></p>
<p class="MsoNormal" ><span >printf( <span >" Interior Points | | "</span>);</span></p>
<p class="MsoNormal" ><span ><span >for</span> (j=2;j&lt;10;j++)</span></p>
<p class="MsoNormal" ><span >{</span></p>
<p class="MsoNormal" ><span >printf( <span >"------------------------------------- "</span>);</span></p>
<p class="MsoNormal" > </p>
<p class="MsoNormal" ><span ><span >// Compute the number of (internal rectangles + 1)</span></span></p>
<p class="MsoNormal" ><span >N = 1 &lt;&lt; j;</span></p>
<p class="MsoNormal" > </p>
<p class="MsoNormal" ><span ><span >// Compute stepsize for N-1 internal rectangles</span></span></p>
<p class="MsoNormal" ><span >step = (interval_end - interval_begin) / N;</span></p>
<p class="MsoNormal" > </p>
<p class="MsoNormal" ><span ><span >// Approx. 1/2 area in first rectangle: f(x0) * [step/2]</span></span></p>
<p class="MsoNormal" ><span >sum = INTEG_FUNC(interval_begin) * step / 2.0;</span></p>
<p class="MsoNormal" > </p>
<p class="MsoNormal" ><span ><span >// Apply midpoint rule:</span></span></p>
<p class="MsoNormal" ><span ><span >// Given length = f(x), compute the area of the</span></span></p>
<p class="MsoNormal" ><span ><span >// rectangle of width step</span></span></p>
<p class="MsoNormal" ><span ><span >// Sum areas of internal rectangle: f(xi + step) * step</span></span></p>
<p class="MsoNormal" > </p>
<p class="MsoNormal" ><span ><span >for</span> (i=1;i&lt;N;i++)</span></p>
<span >{</span>
<p class="MsoNormal" ><span >x_i = i * step;</span></p>
<p class="MsoNormal" ><span >sum += INTEG_FUNC(x_i) * step;</span></p>
<p class="MsoNormal" ><span >}</span></p>
<p class="MsoNormal" > </p>
<p class="MsoNormal" ><span ><span >// Approx. 1/2 area in last rectangle: f(xN) * [step/2]</span></span></p>
<p class="MsoNormal" ><span >sum += INTEG_FUNC(interval_end) * step / 2.0;</span></p>
<p class="MsoNormal" > </p>
<p class="MsoNormal" ><span lang="IT" >printf( <span >" %10d | %14e | "</span>, N, sum);</span></p>
<p class="MsoNormal" ><span >}</span></p>
<p class="MsoNormal" ><span >finish = clock();</span></p>
<p class="MsoNormal" ><span >duration = (finish - start);</span></p>
<p class="MsoNormal" ><span >printf( <span >" "</span>);</span></p>
<p class="MsoNormal" ><span >printf( <span >" Application Clocks = %10e "</span>, duration);</span></p>
<p class="MsoNormal" ><span >printf( <span >" "</span>);</span></p>
<p class="MsoNormal" ><span ><span >}</span></span></p>
</blockquote>
</td>
</tr>
</tbody>
</table>
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr>
<td><img height="5" width="388" src="http://software.intel.com/file/6324" /></td>
</tr>
<tr>
<td height="10"></td>
</tr>
</tbody>
</table> ]]></description>
      <link>http://software.intel.com/en-us/articles/performance-tools-for-software-developers-auto-parallelization-and-qpar-threshold/</link>
      <pubDate>Sun, 23 Jan 2011 10:30:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/performance-tools-for-software-developers-auto-parallelization-and-qpar-threshold/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/performance-tools-for-software-developers-auto-parallelization-and-qpar-threshold/</guid>
      <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® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>How to find active speech level (audio level) using Intel® IPP function?</title>
      <description><![CDATA[ <p>Using the following piece of code, one can find audio level.</p>
<pre name="code" class="cpp">{
      Ipp32f tmpMinS,tmpMaxS;

      Ipp32f m_PeakAmpdB;

       ippsMinMax_32f(fileData, sizeSamples, &amp;tmpMinS, &amp;tmpMaxS);

      Ipp32f maxAbsSample = IPP_MAX(fabs(tmpMinS),fabs(tmpMaxS));

      if(maxAbsSample &gt; 0) {

            m_PeakAmpdB = 20.f * log10(maxAbsSample / 32768.f);

      } else {

      m_PeakAmpdB = -91.f;

      }

}

</pre>
<p><br />In this code, Amp(dB) = 20 lg(S/N), where S- random signal, N - noise. If S=1 then Amp(dB) = 20 lg(1/N) = -91 – this is silence.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/how-to-find-active-speech-level-audio-level-using-intel-ipp-function/</link>
      <pubDate>Sun, 23 Jan 2011 10:30:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/how-to-find-active-speech-level-audio-level-using-intel-ipp-function/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/how-to-find-active-speech-level-audio-level-using-intel-ipp-function/</guid>
      <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® Software Development Tool Suites for Intel® Atom™ Processor Knowledge Base</category>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
  </channel></rss>
