<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated on Wed, 25 Nov 2009 17:41:22 -0800 -->
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <atom:link href="http://software.intel.com/en-us/articles/intel-ipp-kb/type/performance-and-optimization/feed/" rel="self" type="application/rss+xml" />
    <title>Intel Software Network articles feed</title>
    <link>http://software.intel.com/en-us/articles/intel-ipp-kb/performance-and-optimization/</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>Limiting the Number of Cores of Execution on a Windows System</title>
      <description><![CDATA[ <p><b class="sectionHeading">How to Limit the Number of Cores of Execution on a Windows Multicore System<br /></b></p>
<p><br /><span class="sectionBody"><em>If you have a Windows test machine with a large number of CPU cores that you wish to use for testing performance and compatibility with a lesser number of CPU cores you may be able to use that one machine to test several multicore scenarios. For example, an 8-core machine can be configured to restrict Windows from using all 8-cores, forcing it to use, for example, only 4, 2, or even one core in the machine. This technique can be used to more evenly compare system performance by varying the number of cores on the machine and to verify proper operation or scalability of your software for a variety of multicore configurations.<br /></em></span><b><br /><span class="sectionBody">Note:</span></b><span class="sectionBody"> You will have to modify your BOOT.INI file or Boot Configuration Data (BCD on Windows Vista) to setup a machine for this purpose.<br /><br />To restrict the number of CPU cores Windows will use on a multicore machine follow these instructions:<br /><br /><strong>1.)</strong> Determine how many logical CPUs are in your system. Do this by opening the following registry key:<br /><br />HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor<br /><br />There will be one subkey for each logical CPU. The precise number of logical CPUs depends on the number of cores in your processor(s) and whether or not those cores are using Hyper-Threading technology. For example, a four-core machine with Hyper-Threading technology can appear to have eight logical CPUs (two threads per core * four cores = eight logical CPUs or threads).<br /><br /><strong>2.)</strong> <strong>On a Windows XP system</strong>, edit the BOOT.INI file located in the root directory of your boot drive (usually C:).<br /><br />Find the line in the <b>[Operating Systems]</b> section that boots the Windows system you are using (on systems with multiple Windows boot partitions you must take care to identify the correct line). This line usually looks something like the following: <br /><br />multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP" /fastdetect<br /><br /><strong>3.)</strong> Add one (or more) lines with the /NUMPROC parameter to create a second boot option that limits Windows to the desired number of logical cores.<br /><br />For example assuming an eight logical CPU system (eight possible execution threads), you might want to add the following boot scenarios (new text is marked in <b>bold</b>): <br /><br />multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP" /fastdetect<br />multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP, <b>1 core</b>" /fastdetect </span><span class="sectionBody"><b>/NUMPROC=1<br /></b>multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP<b>, 2 cores</b>" /fastdetect <b>/NUMPROC=2</b><br />multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP<b>, 4 cores</b>" /fastdetect <b>/NUMPROC=4</b><br />multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP<b>, 6 cores</b>" /fastdetect <b>/NUMPROC=6</b><br /><br />This configuration would allow you, at boot time, to choose to boot Windows in 1-threads, 2-threads, 4-threads, 6-threads and "all-threads" modes. Your Windows configuration is identical other than the number of execution threads available.<br /></span><b><br /><span class="sectionBody">Note:</span></b><span class="sectionBody"> you should modify each description so you can easily identify the specific boot options at boot time.<br /><br />For full details of all of the BOOT.INI options see the SysInternals website (now part of Microsoft) at:<br /></span><a target="_blank" href="http://www.microsoft.com/technet/sysinternals/information/bootini.mspx" class="sectionBody">http://www.microsoft.com/technet/sysinternals/information/bootini.mspx</a><br /><br /><span class="sectionBody"><strong>To configure your Windows Vista system </strong>to include a second boot option you will need a BCD editor. For example, you can use VistaBootPRO (</span><a target="_blank" href="http://www.pro-networks.org/" class="sectionBody">www.pro-networks.org</a><span class="sectionBody">) to create and name additional boot entries in your Vista BCD and then use the Microsoft msconfig tool to configure each of your boot options. <br /><br />-- Configure the number of threads with msconfig.<br />-- Use VistaBootPRO to create and name those boot options.<br /><br />Using msconfig seems to work better than VistaBootPRO to configure boot options. VistaBootPRO is easier to use to create additional BCD boot entries.<br /></span></p> ]]></description>
      <link>http://software.intel.com/en-us/articles/limiting-the-number-of-cores-of-execution-on-a-windows-system</link>
      <pubDate>Fri, 07 Aug 2009 11:21:23 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/limiting-the-number-of-cores-of-execution-on-a-windows-system#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/limiting-the-number-of-cores-of-execution-on-a-windows-system</guid>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
    </item>
    <item>
      <title>Setting H.264 encoding parameters in Intel IPP media processing samples</title>
      <description><![CDATA[ <br /><br />Intel® IPP media processing samples provide both encoding parameter files and H264EncoderParams class to allow users to set encoding parameters for H.264 encoders. <br /><br />UMC::H264EncoderParams class has method "ReadParamFile". Using this function, users can read H.264 the parameters from configuration text file. Please check \audio-video-codecs\codec\h264_enc\readme.htm to understand each field of H.263 parameter files. <br /><br />Users can also change UMC::H264EncoderParams class to change H.264 encoding parameters. To learn UMC::H264EncoderParams class members, please check UMC manual document (\audio-video-codecs\doc\umc-manual.pdf), Chapter 4, "Derived Classes", "UMC::H264VideoEncoder" part. <br /><br />Depending on the video content, some encoding parameters(e.g number of B frames, num_ref_frames, subblock split, Cabac setting) will impact the performance and quality on targeted bit rate. Users need to balance between speed and video quality according to their application requirement. <br /><br />The following are two example configuration files. One is target for encoding performance, and the other is for video qualities.<br /> ]]></description>
      <link>http://software.intel.com/en-us/articles/setting-h264-encoding-parameters-in-intel-ipp-media-processing-samples</link>
      <pubDate>Thu, 09 Jul 2009 20:13:29 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/setting-h264-encoding-parameters-in-intel-ipp-media-processing-samples#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/setting-h264-encoding-parameters-in-intel-ipp-media-processing-samples</guid>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
    </item>
    <item>
      <title>Excerpts from Intel IPP 2nd Edition Book on Threading Support</title>
      <description><![CDATA[ <p>With more Multi-core , many-core based systems available on the market, there are more interest to understand how Intel IPP covers threading support.  Mainly we cover threading support in 2 levels: one is inside of Intel IPP API primitives, some of Intel IPP are internally threaded, (check this KB for more details), another one is in high leve via Intel IPP Samples, a lot of application implementations in Intel IPP Sample offering also adopt OpenMP or Native threading mechanism to maximize performance for image coding, video coding and more on Intel Multi-core and many-core based systems. You can find more details when evaluating <a target="_blank" href="http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-samples-license-agreement/">Intel IPP Samples.</a><br /><br />In addtion to that, the Intel IPP 2nd Edition book also explains a variety of threading support in different usage models, Download 4 excerpts from this edition where explains how to use threading in Graphics, Image processing, Image coding and video coding. <br /><br />Please also visit <a target="_blank" href="http://www.intel.com/intelpress/sum_ipp2.htm">Intel Press </a>for more info on Intel IPP book.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/excerpts-from-intel-ipp-book-on-threading-support</link>
      <pubDate>Mon, 22 Jun 2009 23:19:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/excerpts-from-intel-ipp-book-on-threading-support#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/excerpts-from-intel-ipp-book-on-threading-support</guid>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>Intel® Core™ i7 processor Support</title>
      <description><![CDATA[ <p><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: SimSun; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">The Intel IPP v6.0 and later version supports the latest Intel® Core™ i7 processor (codenamed "Nehalem"). There are several Intel IPP string processing functions like <em style="mso-bidi-font-style: normal;">ippsFind*Any()</em> functions and tranformation functions that are specially optimized for Intel Core i7 processors for additional performance benefits .<span style="mso-spacerun: yes;">  </span>All Intel IPP functions will continue to use “<strong style="mso-bidi-font-weight: normal;">p8</strong>” optimized libraries for IA-32 and “<strong style="mso-bidi-font-weight: normal;">y8</strong>” optimized libraries for Intel® 64 when you target Intel Core i7 processors. The “<strong style="mso-bidi-font-weight: normal;">p8</strong>” and “<strong style="mso-bidi-font-weight: normal;">y8</strong>” optimized libraries in Intel IPP are generally optimized for Intel® Streaming SIMD Extensions 4 (Intel® SSE4).<br /><br />For all complete Intel IPP supported cpu identifiers, please refer <a href="http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-understanding-cpu-optimized-code-used-in-intel-ipp"><span style="color: #ff79c2;">this article</span></a> or check “<em style="mso-bidi-font-style: normal;">Getting_Started.htm</em>” or “<em style="mso-bidi-font-style: normal;">userguide_*.pdf</em>” from IPP \doc directory.<br /></span><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: SimSun; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><br />To find out more Intel IPP APIs performance results on Intel Core i7 processor, you can run Intel IPP Performance Test tool on this target system. The tool is available under IPP directory \tools\perfsys.<br />Please check "<em>readme.htm"</em> in this folder and also <a href="http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-using-the-performance-tool">an article </a>at Intel IPP Knowledge Base for more information.<br /><br />A lot of Intel IPP samples like Audio/Video sample, new Unified Image codec (UIC) sample aslo provide performance results for decoding/encoding as part of output data.  Please check <a href="http://www.intel.com/software/products/ipp">Intel IPP Web site</a> and click Sample link to download.</span></p> ]]></description>
      <link>http://software.intel.com/en-us/articles/new-nehalem-support</link>
      <pubDate>Sun, 14 Jun 2009 22:36:17 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/new-nehalem-support#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/new-nehalem-support</guid>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>Using the performance tool to measure Intel IPP Function performance</title>
      <description><![CDATA[ <!--CTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dt-->
<table border="0" cellspacing="15" cellpadding="0">
<tbody>
<tr>
<td class="bodycopy">
<p><strong>Overview</strong><br />The Intel IPP Performance Tests are a set of command line programs used for estimating the performance of each function in the API. Each function group (or domain) has its own program for collecting performance data that allows you to test just one function, a subset of functions or all functions within the domain.</p>
<p>The <strong>perfsys</strong> tool is installed as part of the Intel IPP package and is located in the <strong>tools/perfsys</strong> directory. Reference performance data is installed to directory <strong>tools/perfsys/data</strong>. The tests are valid only for the system processor on which they are invoked.</p>
<p><strong>Instructions</strong><br />For detailed instructions, descriptions of units of measurements and example output, please refer to the white paper, <a href="http://www.intel.com/cd/ids/developer/asmo-na/eng/192313.htm">Measure Intel IPP Function Performance</a>. Also refer to the <strong>tools/perfsys/readme.htm</strong> file for directions on how to use the tool.</p>
<p><strong>Examples <br /></strong>Use the <strong>-h</strong> parameter to list the options for running the performance tests, type <strong>ps_ipps -h </strong>at the command prompt.</p>
<p>To run performance tests with default parameters for all signal processing functions, type <strong>ps_ipps</strong> at the command prompt and press <strong>Enter</strong> in response to all additional prompts.<br /><br />Or run  "<strong>ps_ipps.exe -B -v</strong>" in command line to generate an ps_ipps.csv file to include all benchmarks for funcitons in ippSP (signal processiing domain).<br /><br />option B is to run batch mode<br />option v is to write performance result table to an .csv file format</p>
<p>To run a performance test for a particular function (e.g. ippsFIRLMS_32f) instead of all signal processing functions, enter the following command:</p>
<blockquote><strong>ps_ipps -f FIRLMS_32f -V firlms.csv</strong></blockquote>
<p>The output data will be stored in a file named <strong>firlms.csv</strong>. <br /><br /><strong>Output Data</strong><br />The <strong>.csv</strong> data file contains columns with headings such as <strong>nLps</strong>, <strong>Clocks</strong>, <strong>per</strong>, and <strong>pxch</strong>. The column with the heading <strong>nLps</strong> contains the number of measured repetitions in the loop. The column with <strong>Clocks</strong> is associated with the column <strong>per</strong> or <strong>pxch</strong>, which means clocks per element ( <strong>cpe</strong>) or per pixel per channel ( <strong>pxch</strong>) respectively. <br /><br /><strong>References</strong><br />The Intel IPP package also provides test output data in directory <strong>tools/perfsys/data</strong> for your reference. Please refer to the <strong>readme.htm</strong> file for more details on this tool.</p>
</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><img src="http://software.intel.com/file/6324" alt="" width="388" height="5" /></td>
</tr>
<tr>
<td height="10"> </td>
</tr>
</tbody>
</table> ]]></description>
      <link>http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-using-the-performance-tool</link>
      <pubDate>Thu, 04 Jun 2009 08:48:28 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-using-the-performance-tool#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-using-the-performance-tool</guid>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
    </item>
    <item>
      <title>Threading of ippmInvert_ma_64f</title>
      <description><![CDATA[ <br />The Intel® IPP Matrix Inversion function ippmInvert_ma_64f does not use multi-threading unless 2*count*widthHeight &gt; 2500.<br /><br />Please refer the ippmman.pdf for more details about this function and it's parameters.  ippman.pdf can be found in IPP online manuals located at <a href="http://www3.intel.com/cd/software/products/asmo-na/eng/346532.htm">http://www3.intel.com/cd/software/products/asmo-na/eng/346532.htm</a> <br /><br />The condition is platform dependent and was chosen as a result of performance analyses and for amount of data less than criterion you’ll see slowdown because of threading overhead. <br /><br />This particular function is threaded only in V8 and U8 IPP libraries.  <br /><br />Please refer our KB article from the below link to understand CPU optimized codes used in Intel IPP.<br /><br /><a href="http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-understanding-cpu-optimized-code-used-in-intel-ipp/">Understanding CPU optimized code used in Intel® IPP<br /><br /></a><br /><strong>Please note:</strong> All of threaded IPPM function are threaded only in some condition and only in V8 and U8 IPP libraries. <br /> ]]></description>
      <link>http://software.intel.com/en-us/articles/threading-of-ippminvert_ma_64f</link>
      <pubDate>Fri, 27 Feb 2009 01:17:52 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/threading-of-ippminvert_ma_64f#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/threading-of-ippminvert_ma_64f</guid>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
    </item>
    <item>
      <title>Measure Intel® IPP Function Performance</title>
      <description><![CDATA[ <div class="sectionHeading">Introduction</div>
<p><strong>By Ying Song, Intel Corporation</strong><br /><br />The Intel® Integrated Performance Primitives (Intel® IPP) is a cross-architecture software library that provides a broad range of library functions for video codecs (for example, H.264 and MPEG-4), audio, image coding (for example, JPEG, JPEG2000), image processing, signal processing, data compression, speech compression (for example, G.729, G.723, GSM AMR), cryptography, and computer vision, as well as math support routines for such processing capabilities. Intel IPP is optimized for the wide range of Intel microprocessors, including:</p>
<ul>
<li>Intel® Pentium® 4 Processor </li>
<li>Intel® Pentium® 4 Processor with Hyper Threading Technology </li>
<li>Intel® Pentium® M Processor component of Intel® Centrino® Mobile Technology </li>
<li>Intel® Xeon® Processor </li>
<li>Intel® Xeon® Processor with Intel® Extended Memory 64 Technology (Intel® EM64T)</li>
<li>Intel® Core<span style="font-size: x-small;">™ <span style="font-size: xx-small;">Quad and Intel® Core<span style="font-size: x-small;">™ <span style="font-size: xx-small;">2 Duo Microarchitectures</span></span></span></span></li>
<li><span style="font-size: xx-small;">Intel® Core<span style="font-size: x-small;">™ <span style="font-size: xx-small;">i7 processor </span></span></span></li>
<li>Intel® Atom<span style="font-size: x-small;">™</span> Processor </li>
<li>Intel® Itanium® Processor</li>
</ul>
<p><br />One of key advantages within Intel IPP is performance. This paper introduces a powerful performance test tool packaged inside the Intel IPP library and demonstrates how you can use this tool to test the performance of each Intel IPP function on various Intel® Pentium,  and Itanium processor systems.</p>
<!--page break-->
<hr />
<div class="sectionHeading">What is the Intel IPP Performance Test Tool?</div>
<p>The Intel IPP Performance Test Tool for both Windows* and Linux* based on Intel Pentium Processors and Itanium Processors is a timing system specially designed for accomplishing Intel IPP functions performance tests on the same hardware platforms as the related Intel IPP libraries. It contains command line programs for testing the performance of each IPP function in various ways. <br /><br />You can control the course of tests and generate the results in the desirable format by using command line options. The results are saved in the .csv file for further processing with Microsoft Excel*. The course of timing is displayed on the console and can be saved in a .txt file. You can create a list of functions to be tested and set required parameters with which the function should be called during the performance test. The list of functions to be tested and their parameters can either be defined in the .ini file, or entered directly from the console.<br /><br />Additionally, this performance test tool provides all performance test data in .csv format. It contains data covering all domains and cpu types support on Intel IPP. For more information, read the reference data located in the subdirectory <strong>\tools\perfsys\data</strong>.</p>
<!--page break-->
<hr />
<div class="sectionHeading">Where to Find the Performance Test Tool?</div>
<p>Once you install the Intel IPP package, you can locate the performance test *.exe files in the <strong>\tools\perfsys </strong>directory.<br /><br />The following table explains the corresponding .exe file that can be used for each Intel IPP domain. For example, the .exe file name containing “64” is targeted to Intel Itanium Processors and the .exe files name containing “em64t” is targeted to Intel Xeon Processor with Intel® 64, and so on.</p>
<p>
<table style="width: 230pt; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="307">
<colgroup span="1"><col style="width: 128pt; mso-width-source: userset; mso-width-alt: 6253;" span="1" width="171"></col><col style="width: 102pt; mso-width-source: userset; mso-width-alt: 4973;" span="1" width="136"></col></colgroup>
<tbody>
<tr style="height: 15pt;" height="20">
<td class="xl64" style="width: 128pt; height: 15pt; background-color: #bfbfbf; border: black 0.5pt solid;" width="171" height="20"><strong><span style="font-size: xx-small;">Executable Names</span></strong></td>
<td class="xl65" style="border-right: black 0.5pt solid; border-top: black 0.5pt solid; border-left: black; width: 102pt; border-bottom: black 0.5pt solid; background-color: #bfbfbf;" width="136"><span style="font-size: x-small;"><span style="font-size: xx-small;"> <span class="font5"><strong>Domains</strong></span></span></span></td>
</tr>
<tr style="height: 15pt;" height="20">
<td class="xl63" style="border-right: black 0.5pt solid; border-top: black; border-left: black 0.5pt solid; width: 128pt; border-bottom: black 0.5pt solid; height: 15pt; background-color: transparent;" width="171" height="20"><span style="font-size: xx-small;"> ps_ippac(64/em64t).exe</span></td>
<td class="xl66" style="border-right: black 0.5pt solid; border-top: black; border-left: black; width: 102pt; border-bottom: black 0.5pt solid; background-color: transparent;" width="136"><span style="font-size: xx-small;"> Audio Coding</span></td>
</tr>
<tr style="height: 15pt;" height="20">
<td class="xl63" style="border-right: black 0.5pt solid; border-top: black; border-left: black 0.5pt solid; width: 128pt; border-bottom: black 0.5pt solid; height: 15pt; background-color: transparent;" width="171" height="20"><span style="font-size: xx-small;"> ps_ippi(64/em64t).exe</span></td>
<td class="xl66" style="border-right: black 0.5pt solid; border-top: black; border-left: black; width: 102pt; border-bottom: black 0.5pt solid; background-color: transparent;" width="136"><span style="font-size: xx-small;"> Image Processing</span></td>
</tr>
<tr style="height: 15pt;" height="20">
<td class="xl63" style="border-right: black 0.5pt solid; border-top: black; border-left: black 0.5pt solid; width: 128pt; border-bottom: black 0.5pt solid; height: 15pt; background-color: transparent;" width="171" height="20"><span style="font-size: xx-small;"> ps_ipps(64/em64t).exe</span></td>
<td class="xl66" style="border-right: black 0.5pt solid; border-top: black; border-left: black; width: 102pt; border-bottom: black 0.5pt solid; background-color: transparent;" width="136"><span style="font-size: xx-small;"> Signal Processing</span></td>
</tr>
<tr style="height: 15pt;" height="20">
<td class="xl63" style="border-right: black 0.5pt solid; border-top: black; border-left: black 0.5pt solid; width: 128pt; border-bottom: black 0.5pt solid; height: 15pt; background-color: transparent;" width="171" height="20"><span style="font-size: xx-small;"> ps_ippvc(64/em64t).exe</span></td>
<td class="xl66" style="border-right: black 0.5pt solid; border-top: black; border-left: black; width: 102pt; border-bottom: black 0.5pt solid; background-color: transparent;" width="136"><span style="font-size: xx-small;"> Video Coding</span></td>
</tr>
<tr style="height: 15pt;" height="20">
<td class="xl63" style="border-right: black 0.5pt solid; border-top: black; border-left: black 0.5pt solid; width: 128pt; border-bottom: black 0.5pt solid; height: 15pt; background-color: transparent;" width="171" height="20"><span style="font-size: xx-small;"> ps_ippdc(64/em64t).exe</span></td>
<td class="xl66" style="border-right: black 0.5pt solid; border-top: black; border-left: black; width: 102pt; border-bottom: black 0.5pt solid; background-color: transparent;" width="136"><span style="font-size: x-small;"><span style="font-size: xx-small;"><span style="mso-spacerun: yes;"> </span>Data Compression</span></span></td>
</tr>
<tr style="height: 15pt;" height="20">
<td class="xl63" style="border-right: black 0.5pt solid; border-top: black; border-left: black 0.5pt solid; width: 128pt; border-bottom: black 0.5pt solid; height: 15pt; background-color: transparent;" width="171" height="20"><span style="font-size: xx-small;"> ps_ippch(64/em64t).exe</span></td>
<td class="xl66" style="border-right: black 0.5pt solid; border-top: black; border-left: black; width: 102pt; border-bottom: black 0.5pt solid; background-color: transparent;" width="136"><span style="font-size: xx-small;"> Strings</span></td>
</tr>
<tr style="height: 15pt;" height="20">
<td class="xl63" style="border-right: black 0.5pt solid; border-top: black; border-left: black 0.5pt solid; width: 128pt; border-bottom: black 0.5pt solid; height: 15pt; background-color: transparent;" width="171" height="20"><span style="font-size: xx-small;"> ps_ippcp(64/em64t).exe</span></td>
<td class="xl66" style="border-right: black 0.5pt solid; border-top: black; border-left: black; width: 102pt; border-bottom: black 0.5pt solid; background-color: transparent;" width="136"><span style="font-size: xx-small;"> Cryptography</span></td>
</tr>
<tr style="height: 15pt;" height="20">
<td class="xl63" style="border-right: black 0.5pt solid; border-top: black; border-left: black 0.5pt solid; width: 128pt; border-bottom: black 0.5pt solid; height: 15pt; background-color: transparent;" width="171" height="20"><span style="font-size: xx-small;"> ps_ippcv(64/em64t).exe</span></td>
<td class="xl66" style="border-right: black 0.5pt solid; border-top: black; border-left: black; width: 102pt; border-bottom: black 0.5pt solid; background-color: transparent;" width="136"><span style="font-size: xx-small;"> Computer Vision</span></td>
</tr>
<tr style="height: 15pt;" height="20">
<td class="xl63" style="border-right: black 0.5pt solid; border-top: black; border-left: black 0.5pt solid; width: 128pt; border-bottom: black 0.5pt solid; height: 15pt; background-color: transparent;" width="171" height="20"><span style="font-size: xx-small;"> ps_ippj(64/em64t).exe</span></td>
<td class="xl66" style="border-right: black 0.5pt solid; border-top: black; border-left: black; width: 102pt; border-bottom: black 0.5pt solid; background-color: transparent;" width="136"><span style="font-size: xx-small;"> JPEG</span></td>
</tr>
<tr style="height: 15pt;" height="20">
<td class="xl63" style="border-right: black 0.5pt solid; border-top: black; border-left: black 0.5pt solid; width: 128pt; border-bottom: black 0.5pt solid; height: 15pt; background-color: transparent;" width="171" height="20"><span style="font-size: xx-small;"> ps_ippvm(64/em64t).exe</span></td>
<td class="xl66" style="border-right: black 0.5pt solid; border-top: black; border-left: black; width: 102pt; border-bottom: black 0.5pt solid; background-color: transparent;" width="136"><span style="font-size: xx-small;"> Vector Math</span></td>
</tr>
<tr style="height: 15pt;" height="20">
<td class="xl63" style="border-right: black 0.5pt solid; border-top: black; border-left: black 0.5pt solid; width: 128pt; border-bottom: black 0.5pt solid; height: 15pt; background-color: transparent;" width="171" height="20"><span style="font-size: xx-small;"> ps_ippm(64/em64t).exe</span></td>
<td class="xl66" style="border-right: black 0.5pt solid; border-top: black; border-left: black; width: 102pt; border-bottom: black 0.5pt solid; background-color: transparent;" width="136"><span style="font-size: xx-small;"> Small Matrix</span></td>
</tr>
<tr style="height: 15pt;" height="20">
<td class="xl63" style="border-right: black 0.5pt solid; border-top: black; border-left: black 0.5pt solid; width: 128pt; border-bottom: black 0.5pt solid; height: 15pt; background-color: transparent;" width="171" height="20"><span style="font-size: xx-small;"> ps_ippcc(64/em64t).exe</span></td>
<td class="xl66" style="border-right: black 0.5pt solid; border-top: black; border-left: black; width: 102pt; border-bottom: black 0.5pt solid; background-color: transparent;" width="136"><span style="font-size: x-small;"><span style="font-size: xx-small;"><span style="mso-spacerun: yes;"> </span>Color Conversion</span></span></td>
</tr>
<tr style="height: 15pt;" height="20">
<td class="xl63" style="border-right: black 0.5pt solid; border-top: black; border-left: black 0.5pt solid; width: 128pt; border-bottom: black 0.5pt solid; height: 15pt; background-color: transparent;" width="171" height="20"><span style="font-size: xx-small;"> ps_ippsc(64/em64t).exe</span></td>
<td class="xl66" style="border-right: black 0.5pt solid; border-top: black; border-left: black; width: 102pt; border-bottom: black 0.5pt solid; background-color: transparent;" width="136"><span style="font-size: xx-small;"> Speech Coding</span></td>
</tr>
<tr style="height: 15pt;" height="20">
<td class="xl63" style="border-right: black 0.5pt solid; border-top: black; border-left: black 0.5pt solid; width: 128pt; border-bottom: black 0.5pt solid; height: 15pt; background-color: transparent;" width="171" height="20"><span style="font-size: xx-small;"> ps_ippsr(64/em64t).exe</span></td>
<td class="xl66" style="border-right: black 0.5pt solid; border-top: black; border-left: black; width: 102pt; border-bottom: black 0.5pt solid; background-color: transparent;" width="136"><span style="font-size: xx-small;"> Speech Recognition</span></td>
</tr>
<tr style="height: 15pt;" height="20">
<td class="xl63" style="border-right: black 0.5pt solid; border-top: black; border-left: black 0.5pt solid; width: 128pt; border-bottom: black 0.5pt solid; height: 15pt; background-color: transparent;" width="171" height="20"><span style="font-size: xx-small;"> ps_ippr(64/em64t).exe</span></td>
<td class="xl66" style="border-right: black 0.5pt solid; border-top: black; border-left: black; width: 102pt; border-bottom: black 0.5pt solid; background-color: transparent;" width="136"><span style="font-size: x-small;"><span style="font-size: xx-small;"><span style="mso-spacerun: yes;"> </span>Realistic Rendering</span></span></td>
</tr>
<tr style="height: 15pt;" height="20">
<td class="xl63" style="border-right: black 0.5pt solid; border-top: black; border-left: black 0.5pt solid; width: 128pt; border-bottom: black 0.5pt solid; height: 15pt; background-color: transparent;" width="171" height="20"><span style="font-size: xx-small;"> ps_ippdi(64/em64t).exe</span></td>
<td class="xl66" style="border-right: black 0.5pt solid; border-top: black; border-left: black; width: 102pt; border-bottom: black 0.5pt solid; background-color: transparent;" width="136"><span style="font-size: x-small;"><span style="font-size: xx-small;"><span style="mso-spacerun: yes;"> </span>Data Integrity<span style="mso-spacerun: yes;"> </span></span></span></td>
</tr>
</tbody>
</table>
</p>
<!--page break-->
<hr />
<div class="sectionHeading">How to Use the Performance Test Tool?</div>
<p><strong>Command Line Format and Options</strong><br /><br />As we mentioned above, this performance test tool contains command line programs. Following is the command line format:<br /><br />&lt;ps_FileName&gt;.exe [switch_1] [switch_2]… [switch_n]<br /><br />A short reference for the command line options can be displayed on the console. To invoke it, enter -? or -h in command line:<br /><em>ps_ipps.exe –h</em><br /><br />The command line options can be divided by their functionality into 6 groups. You can enter switches in an arbitrary order with at least one space between. Options like –r, -V, -o, -O can be entered several times with different file names.<br /><br /> </p>
<table class="sectionBodyText" border="1" cellspacing="0" cellpadding="4" width="100%">
<tbody>
<tr>
<td width="20%" valign="top"><strong>Groups</strong></td>
<td width="30%" valign="top"><strong>Options</strong></td>
<td width="50%" valign="top"><strong>Descriptions</strong></td>
</tr>
<tr>
<td rowspan="2" valign="top"><strong>1. Adjusting Console Input</strong></td>
<td valign="top">-A</td>
<td valign="top">Prompt for all parameters from the console</td>
</tr>
<tr>
<td valign="top">-B</td>
<td valign="top">Batch mode</td>
</tr>
<tr>
<td rowspan="8" valign="top"><strong>2. Managing Output</strong></td>
<td valign="top">-r [&lt;file-name&gt;]</td>
<td valign="top">Create csv-file and write PS results</td>
</tr>
<tr>
<td valign="top">-V[&lt;file-name&gt;]</td>
<td valign="top">Add PS results to csv-file</td>
</tr>
<tr>
<td valign="top">-o[&lt;file-name&gt;]</td>
<td valign="top">Create txt-file and write console output</td>
</tr>
<tr>
<td valign="top">-O[&lt;file-name&gt;]</td>
<td valign="top">Add console output to txt-file</td>
</tr>
<tr>
<td valign="top">-L&lt;ERR|WARN|PARM|INFO|TRACE&gt;</td>
<td valign="top">Set detail level of the console output</td>
</tr>
<tr>
<td valign="top">-e</td>
<td valign="top">Enumerate tests and exit</td>
</tr>
<tr>
<td valign="top">-g[&lt;file-name&gt;]</td>
<td valign="top">Signal file is created after testing is completed</td>
</tr>
<tr>
<td valign="top">-FL</td>
<td valign="top">Write result as number of float operations per second. This option is supported for few functions only, because it is not required by users.</td>
</tr>
<tr>
<td rowspan="4" valign="top"><strong>3. Selecting Functions for Testing</strong></td>
<td valign="top">-f &lt; or-pattern&gt;</td>
<td valign="top">Run tests of functions with pattern in name, case sensitive</td>
</tr>
<tr>
<td valign="top">-f-&lt;not-pattern&gt;</td>
<td valign="top">Not test functions with pattern in name, case sensitive</td>
</tr>
<tr>
<td valign="top">-f+&lt;and-pattern&gt;</td>
<td valign="top">Run only tests of functions with pattern in name, case sensitive</td>
</tr>
<tr>
<td valign="top">-f=&lt; eq-pattern&gt;</td>
<td valign="top">Run tests of functions with this full name, case sensitive</td>
</tr>
<tr>
<td rowspan="3" valign="top"><strong>4. Operation with .ini Files</strong></td>
<td valign="top">-i[&lt;file-name&gt;]</td>
<td valign="top">Read PS parameters from ini-file</td>
</tr>
<tr>
<td valign="top">-I[&lt;file-name&gt;]</td>
<td valign="top">Write PS parameters to ini-file and exit</td>
</tr>
<tr>
<td valign="top">-P</td>
<td valign="top">Read tested function names from ini-file</td>
</tr>
<tr>
<td valign="top"><strong>5. Direct Data Input</strong></td>
<td valign="top">-d&lt;name&gt;=&lt;value&gt;</td>
<td valign="top">Set PS parameter value</td>
</tr>
<tr>
<td rowspan="2" valign="top"><strong>6. Multi-Thread Timing</strong></td>
<td valign="top">-MT&lt;numThr eads&gt;</td>
<td valign="top">Run timing in several threads simultaneously</td>
</tr>
<tr>
<td valign="top">-T&lt;HIGH|NORMAL|LOW&gt;</td>
<td valign="top">Set high or normal priority for threads, the priority level may be specified by entering only the first letter<br /><br />
<table class="sectionBodyText" border="1" cellspacing="0" cellpadding="4" width="100%">
<tbody>
<tr>
<td valign="top">-T H[IGH]</td>
<td valign="top">High priority. It is a default value if a multi-thread timing is not set, or if the number of threads is equal to 1. </td>
</tr>
<tr>
<td valign="top">-T N[ORMAL]</td>
<td valign="top">Normal priority. It is a default value if the number of threads is greater than 1.</td>
</tr>
<tr>
<td valign="top">-T L[OW]</td>
<td valign="top">Low priority. It is recommended for a multi-thread timing if functions use OpenMP* technology.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p> </p>
<!--page break-->
<hr />
<div class="sectionHeading">Examples of Running the Performance Test Tool</div>
<p>The following examples illustrate how you can use this tool in different ways to generate Intel IPP function performance data on the targeted system.</p>
<div class="sectionHeading">Running in the Standard Mode</div>
<p>This is the simplest way to get a full set of performance data on your target system. For example:<br /><br /><em>ps_ippch.exe –B –v</em><br /><br />All IPP string functions are tested by the default timing method on standard data (-B option). The results are generated in the <em>ps_ippch.csv</em> file.</p>
<div class="sectionHeading">Testing Selected Functions</div>
<p>This is common usage to measure IPP functions. You can select only one specific function or several functions from one domain to get performance data. For example:<br /><br /><em>ps_ipps.exe -fFIRLMS_32f -V firlms.csv</em><br /><br />It measures signal processing function FIRLMS_32f (-f option), and generates a .csv file named <em>firlms.csv</em> (-V option). For example:<br /><br /><em>ps_ippch -B -V string.csv -fFind -fCompare –fRemove</em><br /><br />It outputs the data for the functions, find, compare, and remove from the string domain.</p>
<div class="sectionHeading">Retrieving Function Lists</div>
<p>Run the following command to find out the functions included in a domain:<br /><br /><em>ps_ippvc.exe  -e –o vc_list.txt</em> <br /><br />The output file vc_list.txt (-o option) will list all IPP video coding functions (-e option). <br /><br /><em>ps_ippvc.exe  -e -r H264.csv -f H264</em><br /><br />The list of functions with names containing H264 (–f option) that may be tested (-e option) is displayed on the console and stored in the file H264.csv (-v option).</p>
<div class="sectionHeading">Launching the Performance Test Tool with the .ini File</div>
<p>Use the .ini file is to avoid entering all the required parameters while running the console performance tool. You can also customize the required parameters in .ini file to simply the tests. For example:<br /><br /><em>ps_ipps.exe –B –I</em><br /><br />A ps_ipps.ini file ps_ippps.ini is created after the first run (-I option).<br /><br /><em>ps_ipps.exe –i –v</em> <br /><br />Optionally, before running this command, you can modify the <em>ps_ipps.ini</em> file to choose the functions, the array of vectors, the length of vectors, and so on. This will test all or limited functions, reading timing procedure and all or limited function parameters values from the ps_ipps.ini file (-i option). It also generates the ps_ipps.csv (-v option) output file.</p>
<!--page break-->
<hr />
<div class="sectionHeading">Setting General Parameters in Performance Test Tool</div>
<p>While running the performance tool in console command line, you are prompted to enter the parameters for timing methods, options, and other common parameters. Use a set of meaningful parameters to influence the performance of the function.<br /><br />The following table gives you a detailed description to enable you to choose the appropriate parameters:<br /><br /> </p>
<table class="sectionBodyText" border="1" cellspacing="0" cellpadding="4" width="380">
<tbody>
<tr>
<td valign="top"><strong>Methods</strong></td>
<td valign="top"><strong>Descriptions</strong></td>
<td valign="top"><strong>Parameters</strong></td>
</tr>
<tr>
<td rowspan="2" valign="top"><strong>Auto</strong></td>
<td rowspan="2" valign="top">Automatic selection of the number of function calls in the performance measurement cycle default procedure).</td>
<td valign="top">Enter “<strong>A</strong>”  from {Auto|Manual|Statistic|Jeff}</td>
</tr>
<tr>
<td valign="top"><strong>Accuracy</strong> - The number of function calls in the cycle doubles each time until the results of the last two measurements coincide with the accuracy specified by the Accuracy value. This procedure repeats three times and the best result is printed. Repeating these tests is necessary to avoid casual fluctuations generated by the system.</td>
</tr>
<tr>
<td rowspan="2" valign="top"><strong>Manual</strong></td>
<td rowspan="2" valign="top">Manual User sets the necessary number of function calls in the measurement cycle.</td>
<td valign="top">Enter “<strong>M</strong>” from {Auto|Manual|Statistic|Jeff}</td>
</tr>
<tr>
<td valign="top"><strong>NumLoops</strong> – Number of loops. The function is called NumLoops times in the measurement cycle. This is the only result printed and no other measurements are taken. This method is not recommended to test all functions with full options as the results yielded are inaccurate, or the process takes too much time.</td>
</tr>
<tr>
<td rowspan="2" valign="top"><strong>Statistic</strong></td>
<td rowspan="2" valign="top">User specifies the total number of processor clocks for the whole procedure and sets the required number of function calls to accumulate statistics .</td>
<td valign="top">Enter “<strong>S</strong>” from  {Auto|Manual|Statistic|Jeff}</td>
</tr>
<tr>
<td valign="top"><strong>NumCalls</strong> &amp; <strong>TotalClocks</strong> - Each function is measured at least NumCalls times, and the measurements continue until the total number of processor clocks exceeds the specified value of TotalClocks. The result is the average taken across all measurements. This method may be used only if the system has the stamp counter.</td>
</tr>
<tr>
<td rowspan="2" valign="top"><strong>Jeff</strong></td>
<td rowspan="2" valign="top">Certain variations of Auto method.</td>
<td valign="top">Enter “<strong>J</strong>” from {Auto|Manual|Statistic|Jeff}</td>
</tr>
<tr>
<td valign="top"><strong>NumTestRepetitions</strong> - The number of function calls in the cycle doubles each time until the results of the last two measurements coincide with the accuracy specified by the Accuracy value. This procedure repeats NumTestRepetitions times and the best result is printed.</td>
</tr>
<tr>
<td valign="top"> </td>
<td valign="top"> </td>
<td valign="top"><strong>Accuracy</strong> – see above</td>
</tr>
</tbody>
</table>
<p><br /><br />You can use the last three procedures to check the results yielded by the first method if you have doubt the reliability of the measurement results.<br /><br /><strong>Setting Function Parameters</strong><br /><br />In the course of the timing procedure the parameters of IPP functions should be specified. Certain parameters like array addresses, array element values, and parameters that have a small influence on the performance of the functions are defined within the test and you cannot change them.<br /><br />Other parameters including the vector length, image size, scale factor, and function-specific parameters may significantly affect the function performance. The test varies their values to obtain more detailed measurements of the performance. The test specifies the parameters that are variable for a given function.<br /><br />Most of the tests have several variable parameters. The test measures performance for all possible combinations of parameter values. For example, if the vector length has five possible values and scale factor has three possible values for a certain function the total number of performance measurements is 5*3 = 15. The values of variable parameters are written into the .csv file in the same order as they were prompted to be entered from the console, or placed by the PS in the .ini file.<br /><br />You can set the values for the specific function parameters either from the console in the .ini file. There are several methods to identify in the course of the time procedure. This paper does not include these details. If you have any questions, refer to the “Reference” section and contact us.</p>
<!--page break-->
<hr />
<div class="sectionHeading">Interpretation of the Performance Output Data</div>
<p>The output data file is in .csv format, which can be viewed with a spreadsheet program such as Microsoft Excel. The output performance data contains both the elapsed execution time in microseconds, as well as in the more commonly used u nits, clocks per element (cpe).  Following is a snap shot of the first few rows from an output .csv file from running the example mentioned above. It also includes test system information such as processor, operating system, the Intel IPP library version and start time:<br /><br /><a href="http://www.intel.com/cd/ids/developer/asmo-na/eng/192478.htm"><img src="http://software.intel.com/file/3855" border="0" alt="" width="380" height="335" /></a><br /><br /><strong>Click on image to view large size.</strong><br /><br />When viewing the .csv file, you may notice some columns with the headings <strong>nLps</strong>, <strong>Clocks</strong>, and <strong>per</strong>.<br /><br />The <strong>nLps</strong> contains the number of repetitions in the loop, for example 16 iterations were measured. The column with <strong>Clocks</strong> is associated with the column <strong>per</strong>, implying clocks per element (cpe). The column <strong>Time</strong> specifies the time spent for the execution of this function.<br /><br />The output for function ippsFIRLMS (illustrated above) displays the performance data on the 32f data type; it averages 30 clocks per cpMac (defined below). It also implies that it takes 0.82 usec to run on a loop with 16 iterations.<br /><br />The following table is gives a detailed description on the units used in column “per” for all IPP domains:</p>
<table class="sectionBodyText" border="1" cellspacing="0" cellpadding="4" width="100%">
<tbody>
<tr>
<td width="25%" valign="top"><strong>Units used in column “per”</strong></td>
<td width="75%" valign="top"><strong>Interpretations</strong></td>
</tr>
<tr>
<td valign="top">E</td>
<td valign="top">Clock per element (cpe)</td>
</tr>
<tr>
<td valign="top">Element</td>
<td valign="top">Per element</td>
</tr>
<tr>
<td valign="top">cpMac</td>
<td valign="top">cpMAC = numClocks/numOfAdd&amp;MulPairs – this unit is used for algorithms in which the number of multiplications equals the number of additions (for example, convolution algorithm). The result is divided by the number of such pairs: multiplication + addition (mostly used in ippSP).</td>
</tr>
<tr>
<td valign="top">e_krnPnt</td>
<td valign="top">e_krnPnt = numClocks/(numOfElememts * numOfKernelPoints) – per element &amp; filter kernel point  (mostly used in ippSP)</td>
</tr>
<tr>
<td valign="top">Px</td>
<td valign="top">Per pixel</td>
</tr>
<tr>
<td valign="top">Pxch</td>
<td valign="top">Per pixel per channel</td>
</tr>
<tr>
<td valign="top">all</td>
<td valign="top">numClocks – non-standard units in ippVC tests, it means nothing (per 1)</td>
</tr>
<tr>
<td valign="top">matrix value</td>
<td valign="top">Per matrix value (for ippMX)</td>
</tr>
<tr>
<td valign="top">vector value</td>
<td valign="top">per vector value  ( for ippMX)</td>
</tr>
<tr>
<td valign="top">Value</td>
<td valign="top">numClocks – non-standard units in ippMX tests, it means nothing (per 1)</td>
</tr>
</tbody>
</table>
<p> </p>
<!--page break-->
<hr />
<div class="sectionHeading">Conclusion</div>
<p>Intel IPP provides a powerful performance test enabling you to simplify the process of the performance benchmark for Intel IPP functions on various Intel based microprocessors. Additionally, it provides a comprehensive data set to help you analyze performance data.</p>
<!--page break-->
<hr />
<div class="sectionHeading">References</div>
<ul>
<li>Download the <a href="http://www.intel.com/software/products/ipp">Intel IPP</a> </li>
<li>The <a href="http://software.intel.com/en-us/articles/intel-integrated-performance-primitives/all/1">Intel IPP Knowledge Base</a> (Self help, FAQs, Solutions…) </li>
<li>Share your experience with other users at the <a href="http://software.intel.com/en-us/forums/intel-integrated-performance-primitives">Intel IPP Forum </a></li>
<li>Contact us via <a href="https://premier.intel.com/" target="_blank">Intel® Premier Support</a> for any questions related to Intel IPP </li>
<li>Buy the <a href="http://www.intel.com/intelpress/sum_ipp.htm?iid=ipr+spdweb" target="_blank">Intel IPP book</a> </li>
</ul>
<p> </p>
<!--page break-->
<hr />
<div class="sectionHeading">About the Author</div>
<p>Ying Song is currently a Technical Consulting Engineer for Intel Integrated Performance Primitives at the Intel Software &amp; Service Group.</p>
<!--page break-->
<hr />
<div class="sectionHeading">Appendix: Measuring Intel IPP Performance with CoreGetCpuClocks</div>
<p>In some cases, you can also call Intel IPP common function <strong>ippCoreGetCpuClocks</strong> in your application to measure Intel IPP function performance or any function performance measurement. The ippCoreGetCpuClocks function reads the current state of the time stamp counter (TSC) register and returns its value.  Subtracting two successive polling results before and after the function call gives a very accurate measurement of elapsed time.<br /><br />Following is a flow chart to illustrate how to use this Intel IPP common function:<br /><br /><img src="http://software.intel.com/file/3856" border="0" alt="" /><br /><br />Following is an example to show you how to use this ippCoreGetCpuClocks to measure function performance:</p>
<pre name="code" class="cpp">// Measure FFT performance //

#include "stdafx.h"
#include &lt;stdio.h&gt;
#include "math.h"
#include "ipp.h"

int main()
{
	//Get the version of IPP on this machine
	
	const IppLibraryVersion* lib;
	lib = ippsGetLibVersion();

    printf("Intel(R) Performance Primitives 
&amp;quo
t;);
    printf("CPU       : %s
",lib-&gt;targetCpu);
    printf("Name      : %s
",lib-&gt;Name);
    printf("Version   : %s
",lib-&gt;Version);
    printf("Build date: %s
",lib-&gt;BuildDate);

    //Measure FFT performance
	
    #define Nord	10  
    #define LEN		1024
    #define IPP_PI    ( 3.14159265358979323846 )
	Ipp32f  Signal[LEN],SignalFft[LEN];
	Ipp32f  Amp=1;
	Ipp32f  fsample=51.2e6;
	Ipp32f  fc=3e6;
    
	int NoFFT=100000; 
	int   i;
	IppsFFTSpec_R_32f* FftSpec;
	int FftOrder=Nord;
	int FftFlag=IPP_FFT_DIV_FWD_BY_N;
	//IppHintAlgorithm FftHint;
    IppStatus Status;  

	Ipp64s start,stop;
    
    // Generate sine wave 
	for (i=0;i&lt;LEN;i++)
	{
	 Signal[i]=Amp*cos(2*IPP_PI*i*fc/fsample);
             }

	 ippsFFTInitAlloc_R_32f(&amp;FftSpec,FftOrder,FftFlag,ippAlgHintNone); 
  
     start = ippGetCpuClocks();
     for (i=0;i&lt;NoFFT;i++)
	 {
      		 ippsFFTFwd_RToPack_32f(Signal,SignalFft,FftSpec, NULL);
	 } 
  
     stop = ippGetCpuClocks();

     float ippFFTPerf = (float) (stop-start)/LEN/NoFFT;
     printf ("FFT 32f: ipp=%.1f
", ippFFTPerf);
   
     ippsFFTFree_R_32f(FftSpec); 
	 ippsFree(Signal);
	 ippsFree(SignalFft); 
	 
	 return 0;
}
</pre>
<p> </p>
<!--page break-->
<hr /> ]]></description>
      <link>http://software.intel.com/en-us/articles/measure-intel-ipp-function-performance</link>
      <pubDate>Tue, 04 Nov 2008 16:32:42 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/measure-intel-ipp-function-performance#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/measure-intel-ipp-function-performance</guid>
      <category>Tools</category>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
    </item>
    <item>
      <title>Understanding CPU optimized code used in Intel® IPP</title>
      <description><![CDATA[ <p class="MsoNormal" style="margin: 0in 0in 10pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;"><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;">The Intel IPP uses codes optimized for various central processing unit (CPU). Dispatching refers to detection of your CPU and selecting the Intel IPP binary that corresponds to the hardware that you are using. For example, in the \ia32\bin directory, <em style="mso-bidi-font-style: normal;">ippiv8-x.x.dll</em> reflects the optimized imaging processing libraries for Intel® Core™ 2 Duo processors in version x.x.<br /><br />A single Intel IPP function, for example <em style="mso-bidi-font-style: normal;">ippsCopy_8u()</em>, may have many versions, each one optimized to run on a specific Intel® processor with specific architecture, for example: the version of this function optimized for the Intel Core 2 Duo processor on IA-32 is <em style="mso-bidi-font-style: normal;">p8_ippsCopy_8u()</em>.</span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;"><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;">The following lists processor-specific codes used in Intel IPP:</span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt 36.75pt; text-indent: -0.25in; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in;"><span style="font-size: 10pt; color: #555555; font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7pt &quot;Times New Roman&quot;;">         </span></span></span><strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial; mso-bidi-font-size: 11.0pt;">IA-32 Intel® architecture<br />       <span style="font-size: 10pt; color: #555555; font-family: &quot;Courier New&quot;; mso-fareast-font-family: 'Courier New';"><span style="mso-list: Ignore;">o<span style="font: 7pt &quot;Times New Roman&quot;;"> </span></span></span></span></strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Courier New&quot;; mso-fareast-font-family: 'Courier New';"><span style="mso-list: Ignore;"><span style="font: 7pt &quot;Times New Roman&quot;;">  </span></span></span><strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial; mso-bidi-font-size: 11.0pt;">px</span></strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;"> - C-optimized for all IA-32 processors </span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt 72.75pt; text-indent: -0.25in; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in;"><span style="font-size: 10pt; color: #555555; font-family: &quot;Courier New&quot;; mso-fareast-font-family: 'Courier New';"><span style="mso-list: Ignore;">o<span style="font: 7pt &quot;Times New Roman&quot;;">   </span></span></span><strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial; mso-bidi-font-size: 11.0pt;">a6</span></strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;"> - Optimized for Pentium III processors (</span><span style="font-size: 9pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt;">it is removed in Intel IPP v6.0</span><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;">)</span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt 72.75pt; text-indent: -0.25in; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in;"><span style="font-size: 10pt; color: #555555; font-family: &quot;Courier New&quot;; mso-fareast-font-family: 'Courier New';"><span style="mso-list: Ignore;">o<span style="font: 7pt &quot;Times New Roman&quot;;">   </span></span></span><strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial; mso-bidi-font-size: 11.0pt;">w7</span></strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;"> - Optimized for Pentium 4 processors </span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt 72.75pt; text-indent: -0.25in; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in;"><span style="font-size: 10pt; color: #555555; font-family: &quot;Courier New&quot;; mso-fareast-font-family: 'Courier New';"><span style="mso-list: Ignore;">o<span style="font: 7pt &quot;Times New Roman&quot;;">   </span></span></span><strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial; mso-bidi-font-size: 11.0pt;">t7</span></strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;"> - Optimized for Pentium 4 processors with Streaming SIMD Extensions 3 (SSE3) </span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt 72.75pt; text-indent: -0.25in; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in;"><span style="font-size: 10pt; color: #555555; font-family: &quot;Courier New&quot;; mso-fareast-font-family: 'Courier New';"><span style="mso-list: Ignore;">o<span style="font: 7pt &quot;Times New Roman&quot;;">   </span></span></span><strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial; mso-bidi-font-size: 11.0pt;">v8</span></strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;"> - New Optimizations for 32-bit applications on Intel® Core™2 and Intel® Xeon® 5100 processors </span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt 72.75pt; text-indent: -0.25in; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in;"><span style="font-size: 10pt; color: #555555; font-family: &quot;Courier New&quot;; mso-fareast-font-family: 'Courier New';"><span style="mso-list: Ignore;">o<span style="font: 7pt &quot;Times New Roman&quot;;">   </span></span></span><strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial; mso-bidi-font-size: 11.0pt;">p8</span></strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;"> - New Optimizations for 32-bit applications on 45nm Intel® Core™2 Duo (Penryn) family processors and Intel® Core™ i7 processors (Nehalem)</span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt 72.75pt; text-indent: -0.25in; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in;"><span style="font-size: 10pt; color: #555555; font-family: &quot;Courier New&quot;; mso-fareast-font-family: 'Courier New';"><span style="mso-list: Ignore;">o<span style="font: 7pt &quot;Times New Roman&quot;;">   </span></span></span><strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial; mso-bidi-font-size: 11.0pt;">s8 </span></strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;">– Optimized for Intel® Atom™ Processors ( new in Intel IPP v6.0)<br style="mso-special-character: line-break;" /><br style="mso-special-character: line-break;" /></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt 36.75pt; text-indent: -0.25in; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in;"><span style="font-size: 10pt; color: #555555; font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7pt &quot;Times New Roman&quot;;">         </span></span></span><strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial; mso-bidi-font-size: 11.0pt;">Intel® 64 (Intel® EM64T) architecture<br />      <span style="font-size: 10pt; color: #555555; font-family: &quot;Courier New&quot;; mso-fareast-font-family: 'Courier New';"><span style="mso-list: Ignore;">o<span style="font: 7pt &quot;Times New Roman&quot;;"> </span></span></span></span></strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Courier New&quot;; mso-fareast-font-family: 'Courier New';"><span style="mso-list: Ignore;"><span style="font: 7pt &quot;Times New Roman&quot;;">  </span></span></span><strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial; mso-bidi-font-size: 11.0pt;">mx</span></strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;"> - C-optimized for all Intel® EM64T-based platforms </span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt 72.75pt; text-indent: -0.25in; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in;"><span style="font-size: 10pt; color: #555555; font-family: &quot;Courier New&quot;; mso-fareast-font-family: 'Courier New';"><span style="mso-list: Ignore;">o<span style="font: 7pt &quot;Times New Roman&quot;;">   </span></span></span><strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial; mso-bidi-font-size: 11.0pt;">m7</span></strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;"> - Optimized for Intel EM64T-based platforms </span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt 72.75pt; text-indent: -0.25in; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in;"><span style="font-size: 10pt; color: #555555; font-family: &quot;Courier New&quot;; mso-fareast-font-family: 'Courier New';"><span style="mso-list: Ignore;">o<span style="font: 7pt &quot;Times New Roman&quot;;">   </span></span></span><strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial; mso-bidi-font-size: 11.0pt;">u8</span></strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;"> - New Optimizations for 64-bit applications on Intel Core 2 and Intel Xeon 5100 processors </span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt 72.75pt; text-indent: -0.25in; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in;"><span style="font-size: 10pt; color: #555555; font-family: &quot;Courier New&quot;; mso-fareast-font-family: 'Courier New';"><span style="mso-list: Ignore;">o<span style="font: 7pt &quot;Times New Roman&quot;;">   </span></span></span><strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial; mso-bidi-font-size: 11.0pt;">y8</span></strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;"> - New Optimizations for 64-bit applications on 45nm Intel® Core™2 Duo (Penryn) family processors and Intel® Core™ i7 processors (Nehalem)</span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt 72.75pt; text-indent: -0.25in; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in;"><span style="font-size: 10pt; color: #555555; font-family: &quot;Courier New&quot;; mso-fareast-font-family: 'Courier New';"><span style="mso-list: Ignore;">o<span style="font: 7pt &quot;Times New Roman&quot;;">   </span></span></span><strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial; mso-bidi-font-size: 11.0pt;">n8 </span></strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;">– Optimized for Intel® Atom™ Processors ( new in Intel IPP v6.0)<br style="mso-special-character: line-break;" /><br style="mso-special-character: line-break;" /></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt 36.75pt; text-indent: -0.25in; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in;"><span style="font-size: 10pt; color: #555555; font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7pt &quot;Times New Roman&quot;;">         </span></span></span><strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial; mso-bidi-font-size: 11.0pt;">Intel® Itanium® architecture<br />      </span></strong><strong></strong><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;"> <span style="font-size: 10pt; color: #555555; font-family: &quot;Courier New&quot;; mso-fareast-font-family: 'Courier New';"><span style="mso-list: Ignore;">o<span style="font: 7pt &quot;Times New Roman&quot;;">   <span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial; mso-bidi-font-size: 11.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"><strong>i7</strong></span></span></span></span> <span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;">– </span>Optimized for Intel® Itanium® processor family</span></p>
<p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-add-space: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in;"><span style="font-size: 10pt; color: #555555; font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7pt &quot;Times New Roman&quot;;">         </span></span></span><strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;">Intel® IXP4XX Network processors</span></strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;"> (it is removed in Intel IPP v6.0, check </span><span style="font-size: 10pt; color: #005bd3; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial; mso-themecolor: accent5;"><a href="http://software.intel.com/en-us/articles/intel-ipp-for-intel-ixp-support"><span style="color: #005bd3; mso-themecolor: accent5;">here</span></a> </span><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;">for more details)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 1in; text-indent: -0.25in; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-add-space: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in;"><span style="font-size: 10pt; color: #555555; font-family: &quot;Courier New&quot;; mso-fareast-font-family: 'Courier New';"><span style="mso-list: Ignore;">o<span style="font: 7pt &quot;Times New Roman&quot;;">    </span></span></span><strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;">sx</span></strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;"> - C-optimized for the IXP4XX product line </span></p>
<p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 10pt 72.75pt; text-indent: -0.25in; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-add-space: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in;"><span style="font-size: 10pt; color: #555555; font-family: &quot;Courier New&quot;; mso-fareast-font-family: 'Courier New';"><span style="mso-list: Ignore;">o<span style="font: 7pt &quot;Times New Roman&quot;;">   </span></span></span><strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;">s2</span></strong><span style="font-size: 10pt; color: #555555; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial;"> - Optimized for the IXP4XX product line</span></p>
<p> </p> ]]></description>
      <link>http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-understanding-cpu-optimized-code-used-in-intel-ipp</link>
      <pubDate>Tue, 04 Nov 2008 10:48:28 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-understanding-cpu-optimized-code-used-in-intel-ipp#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-understanding-cpu-optimized-code-used-in-intel-ipp</guid>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
    </item>
    <item>
      <title>Intel® Integrated Performance Primitives (Intel® IPP) - JPEG sample and performance FAQs</title>
      <description><![CDATA[ <table border="0" cellspacing="15" cellpadding="0">
<tbody>
<tr>
<td class="bodycopy">
<p><strong>Contents:</strong></p>
<ul>
<li><a href="#1">Where can I download the Intel® IPP JPEG sample package?</a></li>
<li><a href="#2">What JPEG samples does Intel IPP JPEG sample package contain?</a></li>
<li><a href="#3">What features are supported in the Intel IPP JPEG sample package?</a></li>
<li><a href="#4">Where can I find the performance data for Intel IPP JPEG samples?</a></li>
<li><a href="#5">Which Intel IPP JPEG encoder/decoder is faster than the IJL?</a></li>
</ul>
<br />
<p><strong><a name="1"></a>Where can I download the Intel® IPP JPEG sample package?</strong><br />You can download the Intel IPP JPEG sample package from the following URL: <br /><a href="http://www.intel.com/cd/software/products/asmo-na/eng/perflib/ipp/219967.htm">http://www.intel.com/cd/software/products/asmo-na/eng/perflib/ipp/219967.htm</a></p>
<br />
<p><strong><a name="2"></a>What JPEG samples does Intel IPP JPEG sample package contain?</strong><br />The Intel IPP JPEG sample package contains different samples, depending on the OS. The following samples are available:</p>
<table border="0" cellspacing="15" cellpadding="0">
<tbody>
<tr>
<td bgcolor="#a6a6a6">
<table border="0" cellspacing="1" cellpadding="5">
<tbody>
<tr>
<td class="bodycopy" bgcolor="#efefef"><strong>Sample</strong></td>
<td class="bodycopy" bgcolor="#efefef"><strong>Description</strong></td>
<td class="bodycopy" bgcolor="#efefef"><strong>OS Support</strong></td>
</tr>
<tr>
<td class="bodycopy" bgcolor="#ffffff">IJL-IPP</td>
<td class="bodycopy" bgcolor="#ffffff">This sample simplifies migration to Intel IPP for Intel® JPEG Library (IJL) users. In some cases, this implementation may be slower than IJL v1.51 because IJL v1.51 uses 8-bit fixed-point coefficients in color conversion formulae. In this Intel IPP-based version, 14-bit and sometimes 16-bit accurate calculations are implemented. IJL-based projects must be recompiled.</td>
<td class="bodycopy" bgcolor="#ffffff">Windows* <br />only</td>
</tr>
<tr>
<td class="bodycopy" bgcolor="#ffffff">IJG-IPP</td>
<td class="bodycopy" bgcolor="#ffffff">This sample shows how to speed up a well known JPEG implementation, Independent JPEG Group (IJG) library.</td>
<td class="bodycopy" bgcolor="#ffffff">Windows* <br />Linux* <br />Mac OS*</td>
</tr>
<tr>
<td class="bodycopy" bgcolor="#ffffff">JPEG2000</td>
<td class="bodycopy" bgcolor="#ffffff">This sample demonstrates how to use Intel IPP for JPEG 2000 encoder/decoder development.</td>
<td class="bodycopy" bgcolor="#ffffff">Windows* <br />Linux*</td>
</tr>
<tr>
<td class="bodycopy" bgcolor="#ffffff">JPEGView</td>
<td class="bodycopy" bgcolor="#ffffff">This simple C++ implementation of the JPEG encoder and decoder is optimized for maximum performance and uses OpenMP* threading in the decoder.  <strong>Note:</strong> Compile the sample with Intel® C/C++ compiler to automatically enable OpenMP threading.</td>
<td class="bodycopy" bgcolor="#ffffff">Windows* <br />Linux*</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<br />
<p><strong><a name="3"></a>What features are supported in the Intel IPP JPEG sample package?</strong><br />The Intel IPP JPEG samples implement different JPEG features as described below:</p>
<ul>
<li><strong>IJG-IPP</strong> and  <strong>IJL-IPP</strong>: These samples support all JPEG standard features excluding 12-bit per color component and arithmetic coding.</li>
<li><strong>JPEG2000</strong>: The decoder supports most features including several progression orders, multi-tile image decoding, lossy and lossless coding. The restriction of decoder is of streams with arbitrary-access markers, like SOP, EPH, PPM (and others) and ROI coding. The encoder supports basic options including lossy and lossless coding, 97 and 53 filter banks, quantization and rate-distortion optimization. The encoder is restricted to supporting one layer-resolution level-component-position, one layer compressed data organization and single tile/single precinct (per resolution level).</li>
<li><strong>JPEGView</strong>: This sample supports 444, 422, 244 and 411 sampling factors (multi-threading used only for 444 and 422), image output in YUY2 format (if compressed with 422 sampling) and retrieval of Exif metadata. Lossless mode supports one-channel images only. Baseline JPEG encoding with several scans is not supported.</li>
</ul>
<br />
<p><strong><a name="4"></a>Where can I find the performance data for Intel IPP JPEG samples?</strong><br />Performance data is available in the following locations:</p>
<ul>
<li><strong>IJG-IPP:</strong> Performance data is provided in the  <strong>ijg_ipp.pdf</strong> document located in the JPEG sample package folder  <strong>\jpeg\IJG\doc</strong>. <br /><strong>IJG-IPP</strong> sample code also provides the  <strong>ijg_timing</strong> utility that can measure JPEG coding performance. After building the sample code, you can find the  <strong>ijg_timing</strong> application at folder  <strong>\JPEG\IJG\bin\xxxx\</strong>. Please refer to  <strong>Readme.htm</strong> file in the sample to learn how to run the application.</li>
<li><strong>IJL-IPP</strong>: Performance data is provided in the  <strong>ijl-ipp.pdf</strong> document located in the JPEG sample package folder  <strong>\jpeg\JPEG_IJL\doc</strong>.</li>
<li><strong>JPEG2000</strong>: Performance data is distributed with the Intel IPP binaries package in the  <strong> \tools\perfsys\data</strong> directory; check the files named  <strong>ps_ippj*.csv</strong>. <br /><strong>JPEG2000</strong> sample code also includes the  <strong>j2kit</strong> application that can measure JPEG200 coding performance. After building the sample code, you can find the  <strong>j2kit</strong> application at folder  <strong>\JPEG\JPEG2000\ bin\xxxx\</strong> . Please refer to  <strong>Readme.htm</strong> file in the sample to learn how to run the application.</li>
<li><strong>JPEGView</strong>: Performance data is distributed with the Intel IPP binaries package in the  <strong> \tools\perfsys\data</strong> directory; check the files named  <strong>ps_ippj*.csv</strong>.</li>
</ul>
<br />
<p><strong><a name="5"></a>Which Intel IPP JPEG encoder/decoder is faster than the IJL?</strong><br />The Intel IPP JPEG codec from the JPEGView sample is implemented for maximum performance and is faster than IJL v1.51 and the IJL-IPP sample.</p>
<br /><img src="http://software.intel.com/file/6408" alt="" width="1" height="10" /><br />
<p class="xs"><span style="font-family: Arial,Helvetica,sans-serif; font-size: xx-small;"> <sup>†</sup> This link will take you off of the Intel Web site. Intel does not control the content of the destination Web Site.</span></p>
<br />
<p><strong>Operating System:</strong></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="xs">Windows Server* 2003 Standard x64 Edition, Mac OS*, Red Hat* Enterprise Linux 2.1, SUSE* Linux Enterprise Server 8.0, SUSE* Linux Enterprise Server 9.0, Windows* XP Professional, Red Hat* Linux 7.3, Red Hat* Linux 8.0, Windows Server* 2003, Red Hat* Linux 9.0, Red Hat* Enterprise Linux 3.0, Windows* XP 64-Bit Edition Version 2003</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table> ]]></description>
      <link>http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-jpeg-sample-and-performance-faqs</link>
      <pubDate>Fri, 19 Sep 2008 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-jpeg-sample-and-performance-faqs#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-jpeg-sample-and-performance-faqs</guid>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
    </item>
    <item>
      <title>Intel® Integrated Performance Primitives (Intel® IPP) - Which version of Intel® IPP supports Intel® Core™ 2 Duo processors?</title>
      <description><![CDATA[ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body>
<table border="0" cellspacing="15" cellpadding="0"><tr><td class="bodycopy">
<p><font face="Arial" size="2"><span style="FONT-SIZE: 10pt">Intel® IPP 5.1.1, available since August 2006, provides the specific library optimizations targeted at the Intel® Core&trade; 2 Duo processor, Intel® Core&trade; 2 Extreme processor, and the Dual-Core Intel® Xeon&reg; processor 5100 series. 
</span></font></p>
<p><font face="Arial" size="2"><span style="FONT-SIZE: 10pt">v8 - New optimizations for 32-bit applications on Intel Core 2 Duo processor and Intel Xeon processor 5100 series (Windows*, Linux*, Mac OS*)
<br></span></font><font face="Arial" size="2"><span style="FONT-SIZE: 10pt"><br>u8 - New optimizations for 64-bit applications on Intel Core 2 Duo processor and Intel Xeon processor 5100 series (Windows, Linux)</span></font></p>To find product and download information, please visit at: 
<a href="http://www.intel.com/software/products/ipp">http://www.intel.com/software/products/ipp</a><p><strong>Operating System:</strong><br></p>
<table border="0" cellspacing="0" cellpadding="0"><tr><td class="xs">Red Hat* Linux, Red Hat* Desktop Linux* 3, Red Hat* Enterprise Linux Desktop 4, Windows Server* 2003 Enterprise x64 Edition, Red Hat* Enterprise Linux 2.1, SUSE* Linux 9.1, SUSE* Linux Enterprise Server 8.0, SUSE* Linux Enterprise Server 9.0, Red Hat* Enterprise Linux 4.0, Windows* XP Professional, Red Hat* Linux 6.2, Red Hat* Linux 6.2 SBE2, Red Hat* Linux 7.0, Red Hat* Linux 7.1, Red Hat* Linux 7.2, Red Hat* Linux 7.3, SUSE* Linux 7.3, SUSE* Linux 8.0, SUSE* Linux 8.1, Red Hat* Linux 8.0, SUSE* Linux 7.2, SUSE* Linux 7.1, Red Hat* Linux Advanced Server 2.x, Windows Server* 2003, Red Hat* Linux 9.0, Red Hat* Enterprise Linux 3.0, SUSE* Linux* 8.2, Red Hat* Linux Advanced Server 3.x, SUSE* Linux* 9.x, Windows* XP 64-Bit Edition Version 2003</td></tr></table>
</td></tr></table>
<table border="0" cellspacing="0" cellpadding="0">
<tr><td><img src="http://software.intel.com/file/6324" width="388" height="5"></td></tr>
<tr><td height="10"></td></tr>
</table>
</body></html>
 ]]></description>
      <link>http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-which-version-of-intel-ipp-supports-intel-core-2-duo-processors</link>
      <pubDate>Fri, 19 Sep 2008 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-which-version-of-intel-ipp-supports-intel-core-2-duo-processors#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-which-version-of-intel-ipp-supports-intel-core-2-duo-processors</guid>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
    </item>
  </channel></rss>