<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated on Sun, 21 Mar 2010 03:39:59 -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/software-defects/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/software-defects/</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>High CPU usage and Intel® IPP threaded function</title>
      <description><![CDATA[ <p>There are about ~15-20% of IPP functions are threaded internally by OpenMP. A list of the threaded primitives in the IPP library is provided in the <em>ThreadedFunctionsList.txt</em> file located in the library's doc directory. The quickest way to multi-thread an Intel IPP application is to use the built-in OpenMP threading function directly, which mean when you call any of the threaded funtions on multi-core machine, your program will run in parallel automatically.  But some users noticed the cpu usage is "much" higher than expected. This article list several possible scenarios and provide solution for this. <br /><br /><b>Problem : </b><br /><strong>Scenario 1</strong>: as the comments under the article <a href="http://software.intel.com/en-us/articles/deprecated-ipp-api-in-version-60/"><b>Deprecated API list since Intel IPP v6.0</b></a> <a target="_blank" href="http://software.intel.com/en-us/articles/deprecated-ipp-api-in-version-60/feed/"></a> <br /><a href="http://software.intel.com/en-us/profile/432262/">I2R D&amp;T Team</a>: I have noticed that when calling the function ippResize or ippResizeCenter <strong>recursively and sequentially with small delay (&lt; 100 ms) in between</strong>, uses less CPU usage as compared to ippResizeSqrPixel. ......, I have tried using the single algorithm or parallel algorithm introduced in the documentation but it still uses a lot of CPU usage in both algorithms. I cannot figure out what's wrong with ippResizeSqrPixel function. Does anyone faced the same problem?<br /><br /><strong>Scenario 2</strong>:<a href="http://software.intel.com/en-us/profile/418841/">mdl61</a>:We have noticed a similar problem and traced it to the internal threading mechanism. <strong>We have implemented our own threading external to ippResizeSqrPixel</strong> and this conflicts with the internal threading causing an increase of 40% CPU utilization, mostly in the kernel. We avoid this problem by calling ippSetNumThreads(1) before using ippResizeSqrPixel.<br /><br /><strong>Scenario 3</strong>: Upgrade from IPP 5.3 to IPP 6.0, caused my cpu usage to go from 3% to 88% on Quad-core machine. The setNumThreads(1) function resolves the problem. I'm calling ippiCFAToRGB_8u_C1C3R <strong>with a interval of 200ms</strong> in a separate thread. The pseudo code is like,</p>
<div id="art_pre_template">
<p>   // ippSetNumThreads(1);<br />    for (i=0; i&lt;100; i++)<br />    {<br />       ippiCFAToRGB_8u_C1C3R(pRAWData, srcRoi, srcSize, img_orig.step, pRGBData1, img_debayer.step, grid, 0); <br />       Sleep (20000);<br />    }</p>
<b>Root Cause : <br /><br /></b>Seeing from the above scenarios, they have same features:<br />1. Using IPP build-in thread function on multi-threads environment (multi-core machine or own thread).<br />    for example, ippiResize is not threaded, but ippResizeSqrPixel is threaded.<br />2. Using the threaded function intermittently. For example, call function <strong>with a interval of 200ms. <br /></strong><br />In general, it is true that the high cpu usage usually corresponds to better performance. <br />For example, calling the IPP threaded function repeatedly on 4 core machines,  <br />for (i=0; i&lt;100; i++){<br />       ippiCFAToRGB_8u_C1C3R(pRAWData, srcRoi, srcSize, img_orig.step, pRGBData1, img_debayer.step, grid, 0); <br />}<br />when without openMP threading, the cpu usage is 25% (1 of 4 core), take 10ms, <br />and when OpenMP threading is on, the cpu use 100% (full 4 core). it takes 2.5ms.<br />So for highly optimized functions, when one thread is used, it will take 25% cpu and when all of core are used, the cpu usage go to 100% is expected. <br /><br />But if intermittently call the threaded functions, i.e 30 times a second, the cpu usage arise from 3% to 88%, this causes overall performance to drop so much that it is impossible to use IPP threaded function in real application. <br /><br />The problem is actually caused by <strong>a feature of OpenMP threads execution mode</strong>.  As we know, IPP threaded function is using OpenMP threading internally (libiomp5*.lib/dll).  When IPP threaded function run in OpenMP threads, in order to get good performance, <strong>the threads</strong> or the workers (libiomp5* library=&gt;kmp_lauch_worker) <strong>will keep active for next work until no more new work come in</strong>. Such mechanism is efficient if these threads are reserved solely for OpenMP execution. But for many application which happened to call the function intermittently and contains no-thread code (i.e. sleep()) in parallel region. The OMP threads will wait each times, after completing the work of ipp function call in a parallel region, before sleeping. Such "wait" (default is 200 milliseconds) cause the cores busy, therefore abnormally high cpu usage.  <br /><br />Here is more information about OpenMP thread execution mode: <br /><a href="http://www.intel.com/software/products/compilers/docs/flin/main_for/mergedprojects/optaps_for/common/optaps_par_libs.htm">http://www.intel.com/software/products/compilers/docs/flin/main_for/mergedprojects/optaps_for/common/optaps_par_libs.htm</a><br /><br />In addition, calling and IPP threaded in external thread may cause high cpu usage because the overhead for nest parallel.  See more from <a href="http://software.intel.com/en-us/articles/openmp-and-the-intel-ipp-library/">OpenMP and the Intel® IPP Library </a><br /><br /><b>Resolution : <br /></b><br />1. Avoid the problems(intermittent IPP function call and nested threads) completely by calling ippSetNumThreads(1) <br /><br />2. For who still hope to keep IPP build-in thread functionatlity, you may change the IPP OpenMP thread execution mode by <br />    setting environment variable in system, KMP_BLOCKTIME=0 <br />    or setting it before run your application. <br />    &gt;set KMP_BLOCKTIME=0<br />    &gt;run.bat<br />    or call OpenMP function kmp_set_blocktime(0). <br /><br />Notes*: The function kmp_set_blocktime() is from Intel OpenMP* run-time library libiomp*.lib/dll. Please see more from <a href="http://www.intel.com/software/products/compilers/docs/clin/main_cls/mergedProjects/optaps_cls/common/optaps_par_exrt.htm">http://www.intel.com/software/products/compilers/docs/clin/main_cls/mergedProjects/optaps_cls/common/optaps_par_exrt.htm</a><br /></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/high-cpu-usage-and-intel-ipp-threaded-function</link>
      <pubDate>Mon, 22 Feb 2010 19:16:12 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/high-cpu-usage-and-intel-ipp-threaded-function#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/high-cpu-usage-and-intel-ipp-threaded-function</guid>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Integrated Performance Primitives Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>/Qvec-reportN doesn&amp;#39;t work with /Qipo in the IDE</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><strong>Reference Number :</strong> DPD200139993<br /><br /><br /><strong>Version :</strong> 11.1<br /><br /><br /><strong>Product :</strong> Intel® C++ and Visual Fortran Compilers for Windows* and Intel® Parallel Composer<br /><br /><br /><strong>Operating System :</strong> Windows*<br /><br /><br /><strong>Problem Description :</strong> When using /Qipo from the Microsoft Visual Studio* IDE (/Qipo is enabled by default in C++ release configurations), /Qvec-reportN has no effect.  You may see this when using the compiler with /Qipo from the command-line as well, but make sure that you're passing /Qvec-reportN at link-time in that case, as it will only have an effect on the second pass phase of IPO.  You will need to link with icl.exe if that is the case, because xilink.exe (used by the IDE and usable from the command-line) has no option to enable vectorization messages.<br /><br /><br /><strong>Resolution Status :</strong> Our compiler driver developers are working on adding support for modifying the vectorization message verbosity to xilink.exe in a future compiler version.  The only way to get vectorization messages at this time is to use /Qvec-reportN, and either:<br /><br />1. Disable /Qipo.  Note that you may not get a vectorizer report that exactly matches what you would get if you used IPO, as IPO might be able to eliminate loops entirely that would then not be vectorized, or enable vectorization where the compiler would not be ordinarily able to identify the loop as being safely vectorizable, but the vectorization report you do get should be useful.<br />or<br />2. Pull the linker line from the Visual Studio* buildlog and use icl.exe on the command line to link.  This will require some work to happen, as you will need to pull the object files more to the front, and then add the /link option to separate the compiler command options like /Qvec-report and /Qipo from the linker options.  For example, the buildlog will list the linker options as:<br /><br />&lt;linker options&gt;<br />a.obj<br />b.obj<br />c.obj<br />&lt;rest of objects&gt;<br /><br />And you would have to create a command line like:<br /><br />icl.exe /Qipo /Qvec-report3 a.obj b.obj c.obj &lt;other objects&gt; /link &lt;linker options&gt;<br /><br /><br /><br /><i>[DISCLAIMER: The information on this web site is intended for hardware system manufacturers and software developers. Intel does not warrant the accuracy, completeness or utility of any information on this site. Intel may make changes to the information or the site at any time without notice. Intel makes no commitment to update the information at this site. ALL INFORMATION PROVIDED ON THIS WEBSITE IS PROVIDED "as is" without any express, implied, or statutory warranty of any kind including but not limited to warranties of merchantability, non-infringement of intellectual property, or fitness for any particular purpose. Independent companies manufacture the third-party products that are mentioned on this site. Intel is not responsible for the quality or performance of third-party products and makes no representation or warranty regarding such products. The third-party supplier remains solely responsible for the design, manufacture, sale and functionality of its products. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands may be claimed as the property of others.]</i></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/qvec-reportn-doesnt-work-with-qipo-in-the-ide</link>
      <pubDate>Mon, 01 Feb 2010 15:33:37 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/qvec-reportn-doesnt-work-with-qipo-in-the-ide#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/qvec-reportn-doesnt-work-with-qipo-in-the-ide</guid>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
      <category>Intel® Visual Fortran Compiler for Windows* Knowledge Base</category>
    </item>
    <item>
      <title>Warning #677: memory usage conflict with precompiled header file seen on Windows* XP and Linux*</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><strong>Reference Number :</strong> DPD200136749<br /><br /><br /><strong>Version : </strong>10.1, 11.0, 11.1<br /><br /><br /><strong>Product : </strong>Intel® C++ Compilers Professional Edition for Windows* and Linux*.  Intel ® Parallel Composer.<br /><br /><br /><strong>Operating System :</strong> Windows* versions prior to Windows Vista* or equivalent, Linux*<br /><br /><br /><strong>Problem Description : </strong>When using precompiled headers, you may see the diagnostic:<br /><br />Warning #677: memory usage conflict with precompiled header file<br /><br />This means that there was an internal problem with the precompiled header processing in the compiler and precompiled headers will not be used for the file in question which may cause an increase in build times.<br /><br /><br /><strong>Resolution Status :</strong> We are investigating this issue.  Please contact us via the User Forum or Intel® Premier Support if you are experiencing this issue.<br /><br /><br /><br /><i>[DISCLAIMER: The information on this web site is intended for hardware system manufacturers and software developers. Intel does not warrant the accuracy, completeness or utility of any information on this site. Intel may make changes to the information or the site at any time without notice. Intel makes no commitment to update the information at this site. ALL INFORMATION PROVIDED ON THIS WEBSITE IS PROVIDED "as is" without any express, implied, or statutory warranty of any kind including but not limited to warranties of merchantability, non-infringement of intellectual property, or fitness for any particular purpose. Independent companies manufacture the third-party products that are mentioned on this site. Intel is not responsible for the quality or performance of third-party products and makes no representation or warranty regarding such products. The third-party supplier remains solely responsible for the design, manufacture, sale and functionality of its products. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands may be claimed as the property of others.]</i></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/warning-677-memory-usage-conflict-with-precompiled-header-file-seen-on-windows-xp-and-linux</link>
      <pubDate>Thu, 22 Oct 2009 15:35:39 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/warning-677-memory-usage-conflict-with-precompiled-header-file-seen-on-windows-xp-and-linux#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/warning-677-memory-usage-conflict-with-precompiled-header-file-seen-on-windows-xp-and-linux</guid>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>Unresolved External Symbol Error at Link Phase when Enabled &amp;#34;/Qlong_double&amp;#34;</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><b>Reference Number : DPD200084693</b><br /><br /><br /><b>Version : 11.1.038 </b><br /><br /><br /><b>Operating System : Windows</b><br /><br /><br /><b>Problem Description : </b><br /><br />Following case will get unresolved external symbol error at linking stage if use c++ stream to pass numerical variables with option /Qlong_double specified.<br /><br />Case: test006.cpp<br />
<pre name="code" class="cpp">#include &lt;stdio.h&gt;
#include &lt;iostream&gt;
using namespace std;
int main()
{
            int x=0;          //line 6
            cout &lt;&lt; x;      //line 7
}
</pre>
<p><br />Command:</p>
<blockquote>
<p>icl /Od /Ob1 /Qlong_double /MDd test006.cpp </p>
</blockquote>
<p><br />Fail Output:</p>
<blockquote>
<p> -out:test006.exe<br />test006.obj<br />test006.obj : error LNK2001: unresolved external symbol "protected: virtual class std::ostreambuf_iterator&lt;char,struct std::char_traits&lt;char&gt; &gt; __thiscall std::num_put&lt;char,class std::ostreambuf_iterator&lt;char,struct std::char_traits&lt;char&gt; &gt; &gt;::do_put(class std::ostreambuf_iterator&lt;char,struct std::char_traits&lt;char&gt; &gt;,class std::ios_base &amp;,char,UNKNOWN)const " (?do_put@?$num_put@DV?$ostreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MBE?AV?$ostreambuf_iterator@DU?$char_traits@D@std@@@2@V32@AAVios_base@2@D_T@Z)<br />test006.exe : fatal error LNK1120: 1 unresolved externals</p>
</blockquote>
<p> </p>
<p>While if changing line 6 &amp; 7 to following,  the test will link fine: </p>
<pre name="code" class="cpp">char x='0';          //line 6
cout &lt;&lt; x;          //line 7</pre>
<p><br />Currently only using the option combination like "/Ob{1|2} /Qlong_double /MD[d]" and the use of C++ stream to pass numerical variable will trigger this link failure.  </p>
<p><b><br />Resolution Status : </b><br />This issue is fixed after Intel(R) C++ Compiler Windows* Update 3.<br /><br /><br /><i>[DISCLAIMER: The information on this web site is intended for hardware system manufacturers and software developers. Intel does not warrant the accuracy, completeness or utility of any information on this site. Intel may make changes to the information or the site at any time without notice. Intel makes no commitment to update the information at this site. ALL INFORMATION PROVIDED ON THIS WEBSITE IS PROVIDED "as is" without any express, implied, or statutory warranty of any kind including but not limited to warranties of merchantability, non-infringement of intellectual property, or fitness for any particular purpose. Independent companies manufacture the third-party products that are mentioned on this site. Intel is not responsible for the quality or performance of third-party products and makes no representation or warranty regarding such products. The third-party supplier remains solely responsible for the design, manufacture, sale and functionality of its products. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands may be claimed as the property of others.]</i></p>
</div> ]]></description>
      <link>http://software.intel.com/en-us/articles/unresolved-external-symbol-error-at-link-phase-when-enabled-qlong_double</link>
      <pubDate>Wed, 19 Aug 2009 02:19:50 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/unresolved-external-symbol-error-at-link-phase-when-enabled-qlong_double#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/unresolved-external-symbol-error-at-link-phase-when-enabled-qlong_double</guid>
      <category>Intel® Compilers</category>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>Stack Frame Run-time Check incompatible with Microsoft* Visual C++ x64</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><b>Reference Number : DPD200084262</b><br /><br /><br /><b>Version : 11.1.038 for Windows running on Intel(R) 64</b><br /><br /><br /><b>Operating System : Windows x64 edition</b><br /><br /><br /><b>Problem Description : <br /></b>The following program will get stack frame Run-Time Check(RTC) failure due to incompatible RTC stack frame check between Intel C++ Compiler for Windows and Microsoft* Visual C++ 2005 or 2008 for x64 run time library.<br /><br />--- Program ---<br />
<pre name="code" class="cpp">void sub();

int main(int argc, char* argv[])
{
  sub();
  return 0;
}

void sub()
{
  int i;
  __declspec(align(64)) float aiueo[256];

  for (i=0;i&lt;256;i++)
    aiueo[i] = 0;

  return;
}</pre>
<br />--- RTC error message ---<br /><br />
<blockquote>Run-Time Check Failure #2 - Stack around the variable 'result.38007' was corrupted.</blockquote>
<br />--- problem definition ---<br /><br />
<blockquote>If array "aiueo" is defined as align(32), align(64) or above, this failure will expose. If array "aiueo" is defined as align(8), align(16), this failure will be avoided.</blockquote>
<br />This is a stack frame Run-Time Check(RTC: /RTCs) incompatible issue between Intel C++ Compiler for Windows and Microsoft Visual C++ Compiler for x64 platform run time library. The program binary is actually gengerated correctly.<br /><br /><b>Resolution Status : <br /></b><br />This has been fixed in the 11.1.046 C++ Compiler for Windows.<br /><br /> <br /><br /><i>[DISCLAIMER: The information on this web site is intended for hardware system manufacturers and software developers. Intel does not warrant the accuracy, completeness or utility of any information on this site. Intel may make changes to the information or the site at any time without notice. Intel makes no commitment to update the information at this site. ALL INFORMATION PROVIDED ON THIS WEBSITE IS PROVIDED "as is" without any express, implied, or statutory warranty of any kind including but not limited to warranties of merchantability, non-infringement of intellectual property, or fitness for any particular purpose. Independent companies manufacture the third-party products that are mentioned on this site. Intel is not responsible for the quality or performance of third-party products and makes no representation or warranty regarding such products. The third-party supplier remains solely responsible for the design, manufacture, sale and functionality of its products. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands may be claimed as the property of others.]</i></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/stack-frame-run-time-check-incompatible-with-microsoft-visual-c</link>
      <pubDate>Sun, 02 Aug 2009 20:03:08 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/stack-frame-run-time-check-incompatible-with-microsoft-visual-c#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/stack-frame-run-time-check-incompatible-with-microsoft-visual-c</guid>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>Use of PCH and /Zi with Boost* Libraries May Result in unresolved external symbols due to Anonymous Namespace Use</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><strong>Reference Number :</strong> DPD200135511<br /><br /><br /><strong>Version :</strong> 11.1<br /><br /><br /><strong>Operating System : </strong>Windows*<br /><br /><br /><strong>Problem Description :</strong> The Boost* STL library's bind functionality uses a construct called placeholders to bind function arguments to a function.  Boost implements these placeholders in an anonymous namespace which the Intel® C++ Compiler has problems with when pre-compiled header files are used and debug symbol generation is enabled.  The following code demonstrates the problem (requires Boost* libraries).<br /><br />pch.h:<br />
<pre name="code" class="cpp">#include &lt;boost/bind.hpp&gt;</pre>
pch.cpp:<br />
<pre name="code" class="cpp">#include "pch.h"</pre>
test-bind.cpp:<br />
<pre name="code" class="cpp">#include "pch.h" class blh_widge { public: void Init(); private: void OnInputComplete(int, int, int); }; void blh_widge::Init() { boost::bind(&amp;blh_widge::OnInputComplete, this, _1, _2, _3) {} } int main() { return(0); }</pre>
Reproduce:<br />
<pre name="code" class="plain:nogutter:nocontrols">icl -Od -I&lt;boost include&gt; -Ycpch.h -Fptest-bind.pch -c -Zi pch.cpp icl -Od -I&lt;boost include&gt; -Yupch.h -Fptest-bind.pch -Zi test-bind.cpp test-bind.cpp Microsoft (R) Incremental Linker Version 8.00.50727.762 Copyright (C) Microsoft Corporation. All rights reserved. -out:test-bind.exe -debug -pdb:test-bind.pdb test-bind.obj test-bind.obj : error LNK2019: unresolved external symbol "struct boost::arg&lt;1&gt; __N_13_test_bind_cpp_main::_1" (?_1@__N_13_test_bind_cpp_main@@3U?$arg@$00@boost @@A) referenced in function ___sti__?_1@__N_13_test_bind_cpp_main@@3U?$arg@$00@b oost@@A test-bind.obj : error LNK2019: unresolved external symbol "struct boost::arg&lt;2&gt; __N_13_test_bind_cpp_main::_2" (?_2@__N_13_test_bind_cpp_main@@3U?$arg@$01@boost @@A) referenced in function ___sti__?_2@__N_13_test_bind_cpp_main@@3U?$arg@$01@b oost@@A test-bind.obj : error LNK2019: unresolved external symbol "struct boost::arg&lt;3&gt; __N_13_test_bind_cpp_main::_3" (?_3@__N_13_test_bind_cpp_main@@3U?$arg@$02@boost @@A) referenced in function ___sti__?_3@__N_13_test_bind_cpp_main@@3U?$arg@$02@b oost@@A test-bind.exe : fatal error LNK1120: 3 unresolved externals</pre>
<br /><br /><br /><strong>Resolution Status :</strong> This issue is resolved in the Intel® Parallel Composer Update 1 or Intel® C++ Compiler Professional Edition for Windows* 11.1.038.<br /><br /><br /><em>[DISCLAIMER: The information on this web site is intended for hardware system manufacturers and software developers. Intel does not warrant the accuracy, completeness or utility of any information on this site. Intel may make changes to the information or the site at any time without notice. Intel makes no commitment to update the information at this site. ALL INFORMATION PROVIDED ON THIS WEBSITE IS PROVIDED "as is" without any express, implied, or statutory warranty of any kind including but not limited to warranties of merchantability, non-infringement of intellectual property, or fitness for any particular purpose. Independent companies manufacture the third-party products that are mentioned on this site. Intel is not responsible for the quality or performance of third-party products and makes no representation or warranty regarding such products. The third-party supplier remains solely responsible for the design, manufacture, sale and functionality of its products. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands may be claimed as the property of others.]</em></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/use-of-pch-and-zi-with-boost-libraries-may-result-in-unresolved-external-symbols-due-to-anonymous-namespace-use</link>
      <pubDate>Thu, 23 Jul 2009 22:06:41 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/use-of-pch-and-zi-with-boost-libraries-may-result-in-unresolved-external-symbols-due-to-anonymous-namespace-use#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/use-of-pch-and-zi-with-boost-libraries-may-result-in-unresolved-external-symbols-due-to-anonymous-namespace-use</guid>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>How to create a preprocessed file (.i file)</title>
      <description><![CDATA[ <p>Usually when there's a compiler bug, we will need a testcase. Otherwise we won't be able to find the problem and verify the fix. <br /><br />Because we won't be able to have the same environment as yours, we will need either a testcase or a preprocessed file (.i file). <br /><br />Sometimes a small testcase may not always duplicate the problem. And also you may not have the time to create a testcase. So a preprocessed file would work in such case.</p>
<p><br /><strong>Note </strong>about a proprocessed file (.i file): it contains all the source code in original .cpp/.c as well as all the needed header files. The compiler (icl or cl) generates the code based on the compile options and include files. So the .i file generated by icl.exe is most likely different than the one generated by cl.exe.<br /><br />To create a preprocessed file (.i file), just add "-EP -P" to the compile option, and recompile the original .cpp file.  You can also generate a .i file directly from the "Prepocessor" property in Visual Studio*:</p>
<ul>
<li>Right click the file name, and click properties</li>
<li>Click Preprocessor\Generate Preprocessed File\Without Line Numbers (/EP /P)</li>
</ul>
<p>if you recompile from a command window, the .i file will be created under the current directory.</p>
<p>if you recompile from within the Visual Studio* IDE, the .i file will be created under the directory where the original source file is located.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/how-to-create-a-preprocessed-file-i-file</link>
      <pubDate>Thu, 23 Jul 2009 09:29:11 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/how-to-create-a-preprocessed-file-i-file#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/how-to-create-a-preprocessed-file-i-file</guid>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>compiler internal error 0_1279</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><b>Reference Number : DPD200008448, DPD200137998</b><br /><br /><br /><b>Version : All the 10.x, 11.x compilers and the older versions.</b><br /><br /><br /><b>Operating System : Linux, Windows</b><br /><br /><br /><b>Problem Description : </b><br />    Test case 1: test.c<br />             int round(float in);<br />             int foo(float in)<br />             {<br />                  int res=round(in);<br />                  if(res !=0) res = 1;<br />                   return res;<br />              }<br /><br />        Test case 2: test.c<br />              float memcpy(char*, char*, int);<br />              float res;<br />              void foo(char* in, char* out)<br />              {<br />                   res = memcpy(in, out, 100);<br />              }<br />     Test case 3: test.c<br />             double pow();<br />             void bar(double);<br />             void foo()<br />             {<br />                  int a=0;<br />                  int b[1]={255};<br />                  bar(pow(b[a],2));<br />             }<br />     compile the test case: icl test.c -c<br />The compiler will report the internal error 0_0, or the internal error 0_1279, or the internal error 0_1208 etc in difference cases.<br />This is the problem in all the cases where the compiler recognize something (defined by user differently than in compiler intrinsics table) being an intrinsic call and expand this call inline.<br /><b>Resolution Status : </b><br />1. Change the function name to your own name different to the compiler intrinsic function. For example, change 'round' in case 1 to 'myround', change 'memcpy' in case 2 to 'mymemcpy', change 'pow' in case 3 to 'mypow'.<br />2. Include the compiler head files to use the intrinsic functions provided by compiler instead of to define your own. Be carefull to the compiler warnings for incompatible declarations during compilation stage.<br /><br /><br /><br /><i>[DISCLAIMER: The information on this web site is intended for hardware system manufacturers and software developers. Intel does not warrant the accuracy, completeness or utility of any information on this site. Intel may make changes to the information or the site at any time without notice. Intel makes no commitment to update the information at this site. ALL INFORMATION PROVIDED ON THIS WEBSITE IS PROVIDED "as is" without any express, implied, or statutory warranty of any kind including but not limited to warranties of merchantability, non-infringement of intellectual property, or fitness for any particular purpose. Independent companies manufacture the third-party products that are mentioned on this site. Intel is not responsible for the quality or performance of third-party products and makes no representation or warranty regarding such products. The third-party supplier remains solely responsible for the design, manufacture, sale and functionality of its products. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands may be claimed as the property of others.]</i></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/compiler-internal-error-0_1279</link>
      <pubDate>Mon, 20 Jul 2009 19:50:24 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/compiler-internal-error-0_1279#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/compiler-internal-error-0_1279</guid>
      <category>Intel® Parallel Composer</category>
      <category>Intel® Compilers</category>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>Internal Compiler Error</title>
      <description><![CDATA[ <!--page break--> 
<hr />
<div class="sectionHeading">Problem Description</div>
<p>A compilation fails with a message similar to one of the following:</p>
<blockquote>example.c(22): internal error: <br /><br />Please visit 'http://www.intel.com/software/products/support' for assistance.<br /><br />[ Aborting due to internal error. ]<br /><br />compilation aborted for example.c (code 1) <br /></blockquote>
<p> </p>
<p>or</p>
<blockquote>catastrophic error: **Internal compiler error: internal abort** <br /><br />Please report this error along with the circumstances in which it occurred in a Software Problem Report. <br /><br />Note: File and line given may not be explicit cause of this error.<br /><br />compilation aborted for example.f90 (code 3)<br /></blockquote>
<p> </p>
<!--page break--> 
<hr />
<div class="sectionHeading">Explanation</div>
<p>This message usually indicates a compiler defect.</p>
<p>Please report the problem to Intel through the <a href="http://software.intel.com/en-us/forums/">Intel® Software Network Forums</a> or <a href="https://premier.intel.com/">Intel® Premier Support</a> (support license and registration required). You will need to supply a test case along with a list of the compile options used and the exact compiler version that shows the problem. If you are not using a current compiler version, try the most recent version available to you as the error may have already been corrected.</p>
<p>Please note that this message is generic in nature and does not have a single cause nor solution. Providing a test case that reproduces the error is the only way to get a precise analysis of the problem.</p>
<p>In some, but not all, cases, you can work around the error by reducing the optimization level. You may find it helpful to try compiling with fewer switches to see if you can find one that, when removed, eliminates the error. It is also helpful to remove or comment out portions of the source file to see if you can isolate the line or lines that trigger the problem. The smaller the test case, the easier it will be for Intel to resolve the problem.</p>
<p> </p>
<p> </p>
<p> </p>
<p><i>[DISCLAIMER: The information on this web site is intended for hardware system manufacturers and software developers. Intel does not warrant the accuracy, completeness or utility of any information on this site. Intel may make changes to the information or the site at any time without notice. Intel makes no commitment to update the information at this site. ALL INFORMATION PROVIDED ON THIS WEBSITE IS PROVIDED "as is" without any express, implied, or statutory warranty of any kind including but not limited to warranties of merchantability, non-infringement of intellectual property, or fitness for any particular purpose. Independent companies manufacture the third-party products that are mentioned on this site. Intel is not responsible for the quality or performance of third-party products and makes no representation or warranty regarding such products. The third-party supplier remains solely responsible for the design, manufacture, sale and functionality of its products. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands may be claimed as the property of others.]</i></p>
<p> </p> ]]></description>
      <link>http://software.intel.com/en-us/articles/internal-compiler-error</link>
      <pubDate>Thu, 02 Jul 2009 10:24:50 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/internal-compiler-error#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/internal-compiler-error</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® Fortran Compiler for Linux* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
      <category>Intel® Visual Fortran Compiler for Windows* Knowledge Base</category>
    </item>
    <item>
      <title>Unable to set compiler option /Qfp-speculation from IDE</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><b>Reference Number : <br />U66541 / DPD200137349</b><br /><br /><b>Version : <br /></b>Intel C++ compiler 11.1.035<br /><br /><br /><b>Operating System : <br /></b>Windows <br /><br /><br /><b>Problem Description : </b><br /><br />When I change the project property in VS2003 to set the /Qfp-speculation to safe, the result in command line is not "/Qfp-speculation:safe", it is appearing as "/Qfp-speculationsafe" and we get error during compilation.<br /><b><br />Resolution Status : </b><br /><br /><br />One needs to provide an argument to compiler /Qfp-speculation. The valid arguments are fast, safe, strict and off. The compiler option /Qfp-speculation from IDE is not being set properly. You may set this option from command line property page as work around.<br /><br />We have tried /Qfp-speculation:safe in VS2008 from command line and there is no issue.<br /><br /><i><br /><br /><br />[DISCLAIMER: The information on this web site is intended for hardware system manufacturers and software developers. Intel does not warrant the accuracy, completeness or utility of any information on this site. Intel may make changes to the information or the site at any time without notice. Intel makes no commitment to update the information at this site. ALL INFORMATION PROVIDED ON THIS WEBSITE IS PROVIDED "as is" without any express, implied, or statutory warranty of any kind including but not limited to warranties of merchantability, non-infringement of intellectual property, or fitness for any particular purpose. Independent companies manufacture the third-party products that are mentioned on this site. Intel is not responsible for the quality or performance of third-party products and makes no representation or warranty regarding such products. The third-party supplier remains solely responsible for the design, manufacture, sale and functionality of its products. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands may be claimed as the property of others.]</i></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/unable-to-set-compiler-option-qfp-speculation-from-ide</link>
      <pubDate>Thu, 02 Jul 2009 10:13:29 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/unable-to-set-compiler-option-qfp-speculation-from-ide#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/unable-to-set-compiler-option-qfp-speculation-from-ide</guid>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
  </channel></rss>