<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated on Tue, 24 Nov 2009 20:08:08 -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-c-compiler-for-linux-kb/type/compatibility/feed/" rel="self" type="application/rss+xml" />
    <title>Intel Software Network articles feed</title>
    <link>http://software.intel.com/en-us/articles/intel-c-compiler-for-linux-kb/compatibility/</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>error 409 when building boost libraries 1.40.0 with Intel compiler</title>
      <description><![CDATA[ <p><strong>Problem : <br /></strong>When building boost libraries version 1.40.0 with Intel compiler 11.1.046, the compiler report error #409 like below:</p>
<blockquote>
<p>./boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp(119): error #409: "boost::wave::cpplexer::re2clex::lexer&lt;IteratorT, PositionT&gt;::lexer(const IteratorT &amp;, const IteratorT &amp;, const PositionT &amp;, boost::wave::language_support)" provides no initializer for:<br />const member "boost::wave::cpplexer::re2clex::lexer&lt;IteratorT, PositionT&gt;::cache"<br />{<br />^<br />detected during:<br />instantiation of "boost::wave::cpplexer::re2clex::lex_functor&lt;IteratorT, PositionT&gt;::lex_functor(const IteratorT &amp;, const IteratorT &amp;, const PositionT &amp;, boost::wave::language_support) [with IteratorT=char *, PositionT=boost::wave::util::file_position_type]" at line 402<br />instantiation of "boost::wave::cpplexer::lex_input_interface *boost::wave::cpplexer::new_lexer_gen&lt;IteratorT, PositionT&gt;::new_lexer(const IteratorT &amp;, const IteratorT &amp;, const PositionT &amp;, boost::wave::language_support) [with IteratorT=char *, PositionT=boost::wave::util::file_position_type]" at line 52 of "libs/wave/src/instantiate_re2c_lexer.cpp"</p>
</blockquote>
<p><strong>Environment :</strong> <br /><br />Boost libraries version 1.40.0 for linux*<br />Intel C++ Compiler for linux, version 11.1.046<br /><br /><strong>Root Cause :</strong> <br />Need initializer for const variable cache defined in file cpp_re2c_lexer.hpp, line 107. Refer this article <a href="http://software.intel.com/en-us/articles/cdiag409">http://software.intel.com/en-us/articles/cdiag409</a> for details.<br /><br /><strong>Resolution : <br /></strong>This error no longer occurs with the Intel® C++ Compiler 11.1.059 for Linux*.  As a workaround as well, you can add an initializer for the const variable cache in file boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp. For example:</p>
<pre name="code" class="cpp">template &lt;typename IteratorT, typename PositionT&gt;
inline
lexer&lt;IteratorT, PositionT&gt;::lexer(IteratorT const &amp;first, 
IteratorT const &amp;last, PositionT const &amp;pos, 
boost::wave::language_support language_) 
: filename(pos.get_file()), at_eof(false), language(language_),cache(token_cache&lt; typename lexer &lt; IteratorT, PositionT &gt;::string_type &gt;())
{
using namespace std; // some systems have memset in std
memset(&amp;scanner, '\0', sizeof(Scanner));
</pre>
<p> </p> ]]></description>
      <link>http://software.intel.com/en-us/articles/error-409-when-building-boost-libraries-1400-with-intel-compiler</link>
      <pubDate>Tue, 17 Nov 2009 19:21:42 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/error-409-when-building-boost-libraries-1400-with-intel-compiler#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/error-409-when-building-boost-libraries-1400-with-intel-compiler</guid>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
    </item>
    <item>
      <title>Using Intel Compilers for Linux with Caos Linux</title>
      <description><![CDATA[ Using Intel(R) Compilers under Caos NSA 1.0 Linux<br /><br />These notes apply to a Caos NSA 1.0 Linux Desktop installation.  Other installation types (server, base, etc) but should be similar but may require the installation of additional packages.<br /><br />In order to use Intel(R) Compilers ( Fortran or C++ ) under Caos Linux you will need the latest 11.1 version of the Intel compiler(s). Older 10.0 and 9.1 versions of the compilers may not work properly and have not been tested.  Keep in mind that Caos NSA Linux installations are not OFFICIALLY supported by the Intel Compilers.  Please see your ReleaseNotes document with your compiler version for a list of officially supported distributions and versions.<br /><br />If you have active support for your compiler, you can download the latest Intel compiler version from<br />https://registrationcenter.intel.com<br /><br />Follow the directions below after your network connection is configured.  Also, it is recommended that you first update your system to the latest version of Caos.  Open a terminal window as the root user.  Enter the following command to update your Caos installation:<br /><br />smart update<br />smart upgrade<br /><br />BEFORE YOU INSTALL Intel(R) Fortran for Linux or Intel(R) C++ for Linux on your fresh Caos NSA Desktop installation, you will first need to install several packages to prepare the system to serve as a development platform:<br /><br />Check that gcc and g++ are installed. By default. Check this with:<br /><br />gcc --version<br />g++ --version<br /><br />By default you may not have these packages installed.<br /><br />To prepare the system for the Intel Compilers, add the gcc-c++ and glibc-devel packages.  Open a terminal window as the root user.  Use 'smart' to install the following packages:<br /><br />smart install gcc-c++<br />smart install glibc-devel<br /><br />If you are in a 32bit, also known as "CAOS NSA 1.0 for i386" system, you may proceed with the installation of the Intel compilers (see below).  'uname -m' will return "i686" for this configuration.<br /><br /><b>For x86-64 architecture</b>, you will also need another package to supply 32bit libraries needed for developing 32bit applications in addition to 64bit applications.  First, determine the version of the 64bit version of glibc-devel that is installed:<br /><br />smart query glibc-devel<br /><br />the output should show both the 64bit and 32bit packages and their version.  For example:<br /><br />glibc-devel-2.8-13.nsa1@i686<br />glibc-devel-2.8-13.nsa1$x86_64<br /><br />Note that the versions you see may not match "2.8-13".  You may have a newer or older version available.  Find the 'i686' version and use smart install to fetch and install that package:<br /><br />smart install glibc-devel-2.8-13.nsa1@i686   <br /><br />for example.  Use the correct version returned by 'smart query' above, "2.8-13" is just an example to give you the idea.<br /><br /><br />Finally, there is an optional package to consider: The 11.0 version of the Intel Compiler for Linux has a graphical <br />debugger, a new graphical interface for the IDB debugger. If you want to use this debugger, please make sure to install the Java JRE version 1.5 or greater. This can be done at anytime after the installation of the compiler. However, you will get a warning message about 'missing prerequisite' for the JRE - simply ignore that message and proceed with the installation.  OR to avoid that message and enable the graphical IDE, get the latest JRE from:<br /><br /><a href="http://java.com/en/download/manual.jsp">http://java.com/en/download/manual.jsp</a><br /><br />Once installation of prerequisites is complete, you are ready to start the Intel compiler(s) installation. During the installation, you may get a message "Detected operating system (generic) is not supported", followed by<br />----------------------------------------------------------------- ---------------<br /> Missing optional pre-requisite<br /> -- operating system type is not supported.<br /> -- system glibc or kernel version not supported or not detectable<br /> -- binutils version not supported or not detectable<br /> ----------------------------------------------------------------- ---------------<br />"Would you like to perform an unsupported install of this product [yes/no] (no)?"<br /><br />enter "<b>yes</b>"<br /><br />This will complete the installation.  Keep in mind, <b>you will get this warning from the compiler installer until such time as this particular OS and version are supported.</b> Once installed, you can read the ReadMe notes in ...installdir.../Documentation directory which has a list of the supported Linux distributions and versions. ]]></description>
      <link>http://software.intel.com/en-us/articles/using-intel-compilers-for-linux-with-caos-linux</link>
      <pubDate>Fri, 28 Aug 2009 13:49:34 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/using-intel-compilers-for-linux-with-caos-linux#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/using-intel-compilers-for-linux-with-caos-linux</guid>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
    </item>
    <item>
      <title>Installing Intel Compilers on OpenSUSE</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><b>Problem : </b>I am having trouble installing my Intel Compiler Pro v11.1 on OpenSUSE<br /><br /><br /><b>Environment : </b>This article was written for OpenSUSE 11.2 and 11.1 but should apply to 11.0 installations as well.  This guide applies ONLY to the Intel Compilers Profession <b>Version 11.1 and greater</b>.  If you have an older Intel compiler, please upgrade to 11.1.  Compatibility of OpenSUSE 11.2 with anything other than Intel Compiler Pro 11.1 is not guaranteed to work - consider getting an older OpenSUSE 10.x or older version to work with your older Intel compiler.<br /><br /><br /><b>Root Cause : </b>As of this writing OpenSUSE 11.2 is not officially supported by the Intel Compiler Professional edition. The procedures herein are intended to assist the user configure OpenSUSE to support installation of the Intel Compiler Professional Edition.  However, this is not a supported configuration.  Please see your Release Notes document for a list of officially supported Linux distributions and versions.<br /><br />The default OpenSUSE installation may not have all the packages needed to support software development (gcc, g++, and binutils packages along with header files).  Also, the Intel compiler released versions are targeted and built for distributions available 12-16 months before the compiler is actually released to customers.  Thus, by the time development is completed for a particular compiler version, many Linux distributions have progressed forward one or two versions.  Intel tries to stay current with Linux distributions, but it often takes us many months after a distribution release to add support.  See your Release Notes from the compiler documentation to determine supported distributions and versions.<br /><br /><br /><b>Resolution : </b>Add several packages to your OpenSUSE installation PRIOR to installation of the compiler.<br /><br /><br /><b>Procedure:</b><br /><br /><b>00) Remove any previous failed installations: </b><br />If you have an installation of the Intel Compiler Pro v11.1 on your system from a failed attempt, uninstall it.  <br />/opt/intel/Compiler/11.1/046/bin/[ia32 | intel64]/uninstall_cpro[c | f].sh<br /><br />substitute your version for "046" above if you have another version besides 11.1.046<br /><br /><br /><b>0) First determine whether you have installed a 32bit or 64bit version of OpenSUSE.  Do this with the uname -a command:</b><br /><br />uname -m<br /><br />which will return:<br /> x86_64   if you have a 64bit installation<br /> i686  if you have a 32bit installation<br /><br />Based on whether you have a 32bit or 64bit installation, choose one of the 2 procedures below.<br /><br /><br /><br /><br /><b>1)  i686 32bit Installation</b><br /><br /><b>a) login as root or super user.</b> <br />If you do not have the root password or priviledge, check if you have SUDO priviledges.  <br />If you do not have either root/admin or SUDO priviledges STOP.  You will be unable to install the Intel compilers on this installation until you are able to add system-wide packages as a root or admin user.<br />If you use SUDO to gain access, open a root window with this command:<br /> sudo bash<br /><br /><b>b) Add Base Development and C/C++ Development</b><br />start Yast2 in interactive mode.  From the root window:   yast2<br />When the graphical admin tool Yast2 opens, there is a button (lower right) for "Software Manager".<br />Click Software Manager button to open the Software Manager tool.  <br />On this Software Manager window, find the "Filter" pull-down.  Set Filter to "Patterns" to display groups of packages in the left-hand list of package groups.  Scroll down in this list to find the group named "Development".<br />Under the "Development" group, select the following package sets to install:<br /> "Base Development"<br /> "C/C++ Development"<br /><br />in addition, if you are installing the Intel C++ compiler and wish to use Eclipse integration, also install the "Integrated Development Environments"/"Eclipse" package set.<br /><br />Once these package sets are select, select "Install" to install the developer packages on your system.<br /><br /><b>c) Install 32bit gcc and g++ 3.3 and make the default</b><br />From the terminal window, as root:<br /><br />zypper install gcc33-32bit<br />zypper install libstdc++33-32bit<br /><br />Try the installation of the Intel Compiler at this point.  If this does not work, consider doing the following:<br /> rm /usr/bin/gcc<br /> ln -s /usr/bin/gcc-3.3 /usr/bin/gcc<br /><br />You may now proceed with an installation of the Intel Compilers.<br /><br /><br /><b>2) x86_64 64bit OS Installation</b><br /><br /><b>a) login as root or super user.</b> <br /> If you do not have the root password or priviledge, check if you have SUDO priviledges.  <br /> If you do not have either root/admin or SUDO priviledges STOP.  You will be unable to install the Intel compilers on this installation until you are able to add system-wide packages as a root or admin user.<br /> If you use SUDO to gain access, open a root window with this command:<br /> sudo bash<br /> <br /> <b>b) Add Base Development and C/C++ Development</b><br /> start Yast2 in interactive mode.  From the root window:   yast2<br /> When the graphical admin tool Yast2 opens, there is a button (lower right) for "Software Manager".<br /> Click Software Manager button to open the Software Manager tool.  <br /> On this Software Manager window, find the "Filter" pull-down.  Set Filter to "Patterns" to display groups of packages in the left-hand list of package groups.  Scroll down in this list to find the group named "Development".<br /> Under the "Development" group, select the following package sets to install:<br /> "Base Development"<br /> "C/C++ Development"<br /> <br /> in addition, if you are installing the Intel C++ compiler and wish to use Eclipse integration, also install the "Integrated Development Environments"/"Eclipse" package set.<br /> <br /> Once these package sets are select, select "Install" to install the developer packages on your system.<br /> <br /> <b>c) Install gcc and g++ 3.3 </b><br /> From the terminal window, as root:<br /> <br /> zypper install gcc33<br /> zypper install libstdc++33<br />zypper install libstdc++33-32bit<br /><br />At this point you are ready to install the 64bit versions of the Intel Compiler.  But before you do, read below:<br /><br /><b>d) Determine if you want or need to develop 32bit applications</b><br />Up to this point you have everything you need to install the 64bit Intel compilers and develop 64bit applications.  If this is all you need, locate the Intel compiler tarball named *_intel64.tgz, for example, l_cprof_p_11.1.046_intel64.tgz and install.  <br />IF you want to be able to create 32bit applications AND 64bit applications:<br /><br />zypper install gcc33-32bit<br /> <br /> <br /> You may now proceed with an installation of the Intel Compilers.  Use the combined IA-32 and Intel64 package, for example l_cprof_p_11.1.046.tgz.<br /><br /><br />Finishing up:  Usage<br /><br />Once the compilers are installed, it is necessary to source the ifortvars.sh or ifortvars.csh file to properly set the user environment to use the Intel compilers.  This (these) commands can be placed in a user's ~/.bashrc or other system login file (fortran 11.1.046 example shown below, bash user):<br /><br />64bit compiler selection:<br /> source /opt/intel/Compiler/11.1/046/bin/ifortvars.sh intel64<br /><br />32bit compiler selection:<br /> source /opt/intel/Compiler/11.1/046/bin/ifortvars.sh  ia32 <br /><br />C/C++ users: substitute "iccvars" for "ifortvars" above.<br /><br />Other versions: substitute your actual minor version for "046" above.  <br />Also, if you are a CSH or TCSH user, use ifortvars.csh or iccvars.csh as appropriate.<br /><br /><br /><b>It is hoped this guide proves helpful for installing the Intel Compilers Professional Edition on an OpenSUSE installation.  Please add comments to this article if you have suggestions or tips to improve this guide.<br /></b><br /><br /></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/installing-intel-compilers-on-opensuse</link>
      <pubDate>Wed, 22 Jul 2009 09:36:56 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/installing-intel-compilers-on-opensuse#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/installing-intel-compilers-on-opensuse</guid>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
    </item>
    <item>
      <title>ISO/IEC Standards language conformance for Intel C++ compiler</title>
      <description><![CDATA[ The Intel C++ compiler option /Qstd=val or –std=val could be used to get the specific version of ISO/IEC standards language conformance for the compiler. <br /><br />The possible values are for “val” are given below:<br /><br />c89 - Conforms to the ISO/IEC 9899:1990 International Standard.<br /><br />c99 - Conforms to The ISO/IEC 9899:1999 International Standard.<br /><br />gnu89 - Conforms to ISO C90 plus GNU* extensions.<br /><br />gnu++98 - Conforms to the 1998 ISO C++ standard plus GNU extensions.<br /><br />c++0x - Enable support for the following C++0x features. Please refer to Intel C++ compiler documentation for details.<br /><br />The default for Intel C++ compiler 11.0 are as given below:<br /><br />-std=gnu89 - default for C, Conforms to ISO C90 plus GNU extensions.<br />-std=gnu++98 - default for C++, Conforms to the 1998 ISO C++ standard plus GNU* extensions.<br />/Qstd=c89 - Conforms to the ISO/IEC 9899:1990 International Standard.<br /><br /> ]]></description>
      <link>http://software.intel.com/en-us/articles/iso-iec-standards-language-conformance-for-intel-c-compiler</link>
      <pubDate>Thu, 04 Jun 2009 02:01:38 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/iso-iec-standards-language-conformance-for-intel-c-compiler#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/iso-iec-standards-language-conformance-for-intel-c-compiler</guid>
      <category>Intel C++ Compiler and Performance Library for QNX* Neutrino* RTOS Knowledge Base</category>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® C++ Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>Performance Tools for Software Developers - Intel® compiler&amp;#39;s dependency on /usr/lib/libstdc++.so.5</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>Product improvements in the Intel® C++ and Fortran 10.x compilers for Linux*, and continued with the 11.x releases, require linkage to a Standard C++ library on <strong>*all*</strong> IA-32, Intel® 64, and IA-64 processor-based Linux systems. Intel® 10.x and 11.x compilers are linked to the <strong>/usr/lib/libstdc++.so.5</strong> library by design to permit use of the Intel 10.x and 11.x compilers on GCC* 3.2-based Linux distributions.</p>
<p>Many Linux distributions available today are GCC* 3.4-based and thus by default provide the newer Standard C++ library, <strong>/usr/lib/libstdc++.so.6</strong>. Therefore, installation and use of the Intel C++ and Fortran 10.x and 11.x compilers for Linux on GCC 3.4-based Linux distributions may require explicit user action to install the Standard C++ library compatibility RPM, <strong>compat-libstdc++</strong>, that provides the required <strong>/usr/lib/libstdc++.so.5</strong> library.</p>
<p>Please refer to your Linux distribution's installation materials for details on the <strong>compat-libstdc++</strong> RPM and installing specific RPMs.</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/performance-tools-for-software-developers-intel-10x-compilers-dependency-on-usrliblibstdcso5</link>
      <pubDate>Wed, 13 May 2009 07:24:27 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/performance-tools-for-software-developers-intel-10x-compilers-dependency-on-usrliblibstdcso5#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/performance-tools-for-software-developers-intel-10x-compilers-dependency-on-usrliblibstdcso5</guid>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
    </item>
    <item>
      <title>Inappropriate error: no instance of function template matches argument list</title>
      <description><![CDATA[ <div id="art_pre_template"><strong>Reference Number :</strong> DPD200044227<br /><br /><br /><strong>Version :</strong> 9.1, 10.0, 10.1<br /><br /><br /><strong>Operating System :</strong>  Windows*, Linux*, Mac OS X*<br /><br /><br /><strong>Problem Description :</strong> Code like the following:<br /><br />
<pre name="code" class="cpp">template&lt; typename Arg &gt; void foo(Arg, void (*pf)(Arg)); // icpc does not deduce type of Arg in pointer to function class Bond {}; class Angle {}; void g(Bond); void g(Angle); void f() { foo( Bond(), &amp;g); } </pre>
<br />Gives an error when compiled with the Intel compiler:<br /><br />
<pre name="code" class="plain:nogutter:nocontrols">$ icpc -V -c simple.cpp Intel(R) C++ Compiler for applications running on IA-32, Version 10.1 Build 20090203 Package ID: l_cc_p_10.1.022 Copyright (C) 1985-2009 Intel Corporation. All rights reserved. Edison Design Group C/C++ Front End, version 3.8 (Feb 4 2009 22:33:53) Copyright 1988-2006 Edison Design Group, Inc. simple.cpp(10): error: no instance of function template "foo" matches the argument list argument types are: (Bond, &lt;unknown-type&gt;) foo( Bond(), &amp;g); ^ compilation aborted for simple.cpp (code 2)</pre>
<br /><br /><strong>Resolution Status :</strong> This code is no longer flagged with an error with the Intel® C++ Compiler 11.0 or above.<br /><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/inappropriate-error-no-instance-of-function-template-matches-argument-list</link>
      <pubDate>Thu, 12 Mar 2009 17:40:30 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/inappropriate-error-no-instance-of-function-template-matches-argument-list#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/inappropriate-error-no-instance-of-function-template-matches-argument-list</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>
    </item>
    <item>
      <title>OpenMP* Loops with Function Calls for Bounds May Not Parallelize</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><strong>Reference Number :</strong>  DPD200110877<br /><br /><br /><strong>Version :</strong> 11.0, 11.1 or Intel® Parallel Composer<br /><br /><br /><strong>Operating System : </strong>Windows*, Linux*, Mac OS X*<br /><br /><br /><strong>Problem Description : </strong>The OpenMP* 3.0 standard now supports using STL iterators for OpenMP loop bounds.  However, the Intel® C++ Compiler does not parallelize code like the following:<br /><br />
<pre name="code" class="cpp">#include &lt;vector&gt;

void iterator_example()
{
  std::vector&lt;double&gt; vec(23);
  std::vector&lt;double&gt;::iterator it;

#pragma omp parallel for default(none) shared(vec) 
  for (it = vec.begin(); it &lt; vec.end(); it++)
  {
    *it = 1.0;// do work with *it //
  }
}</pre>
<br /><br />The compiler will not give an indication (as it should) that the loop was parallelized for OpenMP*.  If you examine the code, you will see that the compiler generates a serial version of the loop.  This is because of an issue with the compiler using function calls on loop bounds that are inlined causing the compiler to not recognize the loop as being a validly formed loop for parallelization.<br /><br /><br /><strong>Resolution Status : </strong>This will be resolved in an upcoming compiler update.<br /><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/openmp-loops-with-function-calls-for-bounds-may-not-parallelize</link>
      <pubDate>Thu, 12 Mar 2009 17:06:43 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/openmp-loops-with-function-calls-for-bounds-may-not-parallelize#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/openmp-loops-with-function-calls-for-bounds-may-not-parallelize</guid>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® C++ Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>Old Style C Function Argument Declarations are Supported</title>
      <description><![CDATA[ <p>The Intel® C++ Compiler 11.x does support old-style C function declarations like the one in the following code snippet.</p>
<pre name="code" class="cpp">void foo(a,b,c)
   int a;
   float b;
   float c[10];
{
   int i = 0;
   for(i=0;i&lt;10;i++)
      c[i]=b*a;
}</pre>
<br />Please note that the C99 standard disallows this style of declaring functions, so legacy code using this syntax will need to be updated to be compliant with that standard.  <br />The Intel® C++ Compiler 11.x will still accept this syntax when using the /Qstd:c99 (on Windows*) or -std=c99 (on Linux* or Mac OS X*) options. ]]></description>
      <link>http://software.intel.com/en-us/articles/old-style-c-function-argument-declarations-are-supported</link>
      <pubDate>Wed, 11 Mar 2009 10:58:21 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/old-style-c-function-argument-declarations-are-supported#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/old-style-c-function-argument-declarations-are-supported</guid>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® C++ Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>__SSE4_1__ and __SSE4_2__ Macros Not Defined</title>
      <description><![CDATA[ <br />
<p><strong>Problem :</strong>  gcc and the Intel® C++ Compiler* provide macros that are defined when the -msse (gcc) or -x (Intel) options are used.  The Intel® C++ Compilers 11.0.069 for Linux*,  11.0.054 for Mac OS* and 11.0.061 for Windows* support -xSSE4.1 and -xSSE4.2 options, but do not provide the corresponding __SSE4_1__ and __SSE4_2__ macro definitions.<br /><br /><br /><strong>Environment : </strong>Windows*, Linux* or Mac OS* X; C++; IA-32 or Intel® 64 platforms<br /><br /><br /><strong>Root Cause : </strong>Already stated above<br /><br /><br /><strong>Resolution : <br /></strong>These macros are now defined in</p>
<ul>
<li>the Intel® C++ Compilers for Linux* 11.0.074 and later</li>
<li>the Intel® C++ Compilers for Mac OS* 11.0.056 and later</li>
<li>the Intel® C++ Compilers for Windows* 11.0.066 and later</li>
<li>the Intel Parallel Composer</li>
</ul> ]]></description>
      <link>http://software.intel.com/en-us/articles/sse4_1_-and-_sse4_2_-macros-not-defined</link>
      <pubDate>Fri, 20 Feb 2009 16:02:20 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/sse4_1_-and-_sse4_2_-macros-not-defined#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/sse4_1_-and-_sse4_2_-macros-not-defined</guid>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® C++ Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>Intel Architecture Platform Terminology for Development Tools</title>
      <description><![CDATA[ <p>Intel® compilers and libraries support three platforms: general combinations of processor architecture and operating system type. This section explains the terms that Intel uses to describe the platforms in its documentation, installation procedures and support site.  <strong>Note:</strong> not all Intel software development tools support all three platforms.</p>
<p><strong>IA-32 Architecture</strong> refers to systems based on 32-bit processors generally compatible with the Intel Pentium® II processor, (for example, Intel® Pentium® 4 processor or Intel® Xeon® processor), or processors from other manufacturers supporting the same instruction set, running a 32-bit operating system.</p>
<p><strong>Intel® 64 Architecture</strong> (formerly Intel® EM64T)refers to systems based on IA-32 architecture processors which have 64-bit architectural extensions, (for example, Intel® Core™2 processor family), running a 64-bit operating system such as Microsoft Windows Vista* x64 or a Linux* "x86_64" variant. If the system is running a 32-bit  operating system, then IA-32 architecture applies instead. Systems based on AMD* processors running a 64-bit operating system are also supported by Intel compilers for Intel® 64 architecture applications.</p>
<p>64-bit computing on Intel architecture requires a computer system with a processor, chipset, BIOS, operating system, device drivers and applications enabled for Intel® 64 architecture. Performance will vary depending on your hardware and software configurations. Consult with your system vendor for more information.</p>
<p><strong>IA-64 Architecture</strong> refers to systems based on the Intel® Itanium® processor running a 64-bit operating system.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/intel-architecture-platform-terminology</link>
      <pubDate>Thu, 12 Feb 2009 07:48:07 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/intel-architecture-platform-terminology#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/intel-architecture-platform-terminology</guid>
      <category>Software Products General</category>
      <category>Intel® Parallel Advisor</category>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Software Development Tool Suites for Intel® Atom™ Processor Knowledge Base</category>
      <category>Intel® Cluster Toolkit for Linux* Knowledge Base</category>
      <category>Intel® Cluster Toolkit for Windows* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
      <category>Intel® Math Kernel Library Knowledge Base</category>
      <category>Intel® Parallel Amplifier Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
      <category>Intel® Parallel Inspector Knowledge Base</category>
      <category>Intel® Thread Checker for Windows* Knowledge Base</category>
      <category>Intel® Thread Profiler for Windows* Knowledge Base</category>
      <category>Intel® Threading Building Blocks Knowledge Base</category>
      <category>Intel® Trace Analyzer and Collector for Linux* Knowledge Base</category>
      <category>Intel® Trace Analyzer and Collector for Windows* Knowledge Base</category>
      <category>Intel® Visual Fortran Compiler for Windows* Knowledge Base</category>
    </item>
  </channel></rss>