Intel® C++ Compiler 7.1 for Linux*
Release Notes

Contents

Overview
What's New
Package Contents
Documentation
System Requirements
Installation
Known Limitations
Resolved Issues
Technical Support and Feedback


Overview

Intel® Compilers help make your software run at top speeds on all Intel® 32-bit processors and 64-bit Itanium® processors. Optimizations include support for Streaming SIMD Extensions 2 (SSE2) in the Intel® Pentium® 4 and Pentium-M processors and software pipelining in the Intel® Itanium® 2 processor. Inter-procedural optimization (IPO) and profile-guided optimization (PGO) can provide greater application performance. Intel Compilers support multi-threaded code development through auto-parallelism and OpenMP* support.

The following executables are included in the installation package:

The paper, Optimizing Applications with the Intel C++ and Fortran Compilers for Windows* and Linux , explains how to use the Intel compilers to optimize for the Pentium® 4 and Itanium processors and is available at http://www.intel.com/software/products/compilers/ . Additional information on the Intel Software Development Products is available at http://www.intel.com/software/products/ .

Compatibility with the GNU Compilers

The compilers have substantial source and binary compatibility with the GNU gcc compiler although this product release is not fully compatible. The paper, Intel Compilers for Linux - Compatibility with the GNU Compilers, provides additional details and is available at http://www.intel.com/software/products/compilers/clin/ .

Compiler Drivers

The compiler drivers, icc for IA-32 applications and ecc for Itanium-based applications, determine the language, C or C++, to be used, based on the filename extension. When compiling preprocessed files (*.i), the ecc and icc drivers assume the C language, whereas the C++ drivers, ecpc and icpc, assume the C++ language, although these defaults can be overridden by compiler options. Please consider using the C++ compiler driver for C++ applications.

Related Products and Services

Information on Intel software development products is available at http://www.intel.com/software/products/ .

The Intel® Software College Provides a one-stop shop at Intel for training developers on leading edge software development technologies. Training consists of online and classroom courses covering all Intel architectures, platforms and technologies. For details refer to http://www.intel.com/software/college/ .

The VTune(TM) Performance Analyzer allows you to evaluate how your application is utilizing the CPU and helps you determine if there are modifications you can make to improve your application's performance. It is also not part of this product, but is available at http://www.intel.com/software/products/vtune/ .

The Intel® Performance Library Suite provides a set of routines optimized for various Intel processors. It is also not part of this product, but is available at http://www.intel.com/software/products/perflib/ .

What's New

New in the Intel® C++ Compiler 7.1 for Linux*

The 7.1 version of the Intel C++ Compiler for Linux includes some performance enhancements, a number of bug fixes, stability improvements, and the following new features:

CPUID Dispatch Support for the Intel® Pentium® M Processor

The Intel C++ compiler can now recognize the Intel Pentium® M processor for automatic CPUID dispatch code generation. The -[a]xW option used for the Pentium 4 processor will now also generate code targetted to the Pentium M processor.

Changes to the -ax{i|M|K|W} switch

Now you can specify more than one version with the -ax option. For example, if you specify -axMK, the compiler may generate up to 3 versions of the code. One version would be for the Pentium® with MMXTM technology processor (M), another version for the Pentium® III processor (K), and one generic version that would work properly on processors without these extensions. At runtime, one of the versions is chosen to execute depending on the processor the program is currently running on. In this way, the program can get large performance gains on more advanced Intel processors, while still working properly on other processors.

Ability to disable I/O locks in the C++ standard library

The C++ Standard Library provided with the Intel Compiler contains an IOStreams implementation that provides locking for each I/O operation. If you provide your own locking mechanism for I/O operations, the additional locking in the C++ standard library implementation provides no added value and decreases performance. In the 7.1 version of the Intel C++ Compiler, if you specify -D_IOSTREAM_OP_LOCKS=0, our locking will be disabled and performance will improve. Specifying -D_IOSTREAM_OP_LOCKS=1 (the default) will enable this locking. If you choose to disable this locking, please make sure you implement an I/O locking scheme appropriate for your application if you are using multiple threads.
Additionally, please note that if you have a single threaded application or I/O is restricted to a single thread, you could consider disabling the default I/O locking to improve performance.

Additional performance enhancements to the standard template library

The push_back and pop_back STL member functions have been updated for improved performance.

New in the Intel C++ Compiler 7.0 for Linux

Version 7.0 of the Intel C++ Compiler for Linux supports much more of the GNU C language extensions compared to previous versions. Also new in this version of the Intel C++ compiler is improved support for OpenMP*, enhancements to interprocedural optimizations, compile time improvements, and profile guided optimization now allows source file relocation. The compiler supports several new compiler directives to assist with loop optimizations such as unroll, software pipeline (Itanium compiler only), vectorization (IA-32 compiler only), prefetch and loop count. The 7.0 Intel C++ Compiler supports the OpenMP 2.0 specification with the following exceptions: the WORKSHARE directive is not currently supported, and support for array reductions is incomplete. See below under Known Limitations for additional OpenMP limitations. See the 'What's New in This Release' section of the User's Guide for details on the new features.

Intel® Itanium® 2 Processor Support

This version of the Intel C++ Compiler for Linux include optimization support for the Intel® Itanium® 2 processor via the -tpp2 compiler option. Refer to the "New Compiler Options" section of the User's Manual for additional information.

Install time license checking

The Intel Compilers for Linux uses Macrovision Corporation*'s FLEXlm* electronic licensing technology. The install time license checking function checks for a valid license before installing any Intel Compiler component. For details see the Installation Notes section below.

Training Tutorial

A new training tutorial, "Enhancing Performance with the Intel® Compiler", is provided in this product. This tutorial covers the major compiler optimizations supported by the Intel Compilers, and also provides examples on how to improve performance of an application by using the optimizations. The optimizations covered by this tutorial are: By default, the tutorial is installed at /opt/intel/compiler70/training/optimize/index.htm.

Intel Debugger

The Intel Debugger, idb,  has replaced the ldb debugger which was provided with the 5.0.1 and 6.0 compiler. Run idb after setting up the compiler configuration script (see section Compiler Environment and configuration scripts ) and enter help .

Compiler Configuration

It is no longer necessary to run a script to create several new environment variables at the start of each session. The only required variables are PATH and LD_LIBRARY_PATH, which may be updated by the .login file. Refer to section: "Compiler Environment and configuration scripts" for details.

Package Contents

Intel C++ Compiler for IA-32 Based Applications

The Intel C++ compiler for IA-32 based applications contains the following components:

Intel C++ Compiler for Itanium-Based Applications

The Intel C++ compiler for Itanium-based applications contains the following components:

Documentation

The compiler and assembler documentation is presented in HTML format with full navigation, search, and hypertext capabilities and is viewable with your web browser. The documents also have PDF versions for easier printing via Adobe Acrobat Reader*.

The documentation is installed in the <install-dir>/compiler70/docs directory. Also, an HTML index document can be found at <install-dir>/compiler70/docs/ccompindex.htm. For information on the GNU glibc C language library, documentation can be obtained from the Linux OS vendor or from the GNU web site, www.gnu.org.

Additional documentation, including getting started guides, optimization and compatibility, is available on the product web site at http://www.intel.com/software/products/compilers/clin/ .

Viewing HTML Documentation

To view the compiler User's Guide HTML-based documentation, you no longer need to use a Java*-enabled or Javascript-enabled Web browser. The documentation format has been tested to work with Web browsers shipped on standard Red Hat* distributions. To allow the HTML-based User's Guide help to be browser-neutral and not require java support, the Search capability has been removed. If you need to search the User's Guide, please use the supplied User's Guide PDF files (same content as HTML-based User's Guide).

Viewing PDF Documentation Files

You can read the PDF files using the xpdf utility or install Adobe Acrobat Reader. It is recommended to view the PDF documentation with Acrobat running within Netscape as this provides additional navigation features. To enable Netscape to start Acrobat Reader, it needs to be installed in a directory searched by your PATH environment variable and you need to edit the browser's preferences.
NOTE: If Acrobat Reader isn't configured correctly, you can overwrite the PDF files, requiring you to reinstall them. If improperly configured, the browser may prompt you to Save-As file, which if you click OK can overwrite the PDF documentation files. Perform these steps needed to update your preferences for Acrobat Reader:
Edit --> Preferences --> Navigator --> Applications --> new
Description: Portable Document Format
MIMEType: application/pdf
Suffixes: pdf
Application: acroread %s
Another method to configure Acrobat Reader is to add the following entry in the file .mailcap in your home directory:
application/pdf; acroread %s
Depending on your version of the Netscape browser, you might need to disable (turn OFF) the "Automatically load images" option or the browser will freeze when you open the HTML documentation files, this means that you will then need to click on the images in the documentation if you want to see them while paging through the documentation with the browser. Turn OFF this option by clicking on: Edit-->Preferences--> Advanced-->Automatically load images and other data types .

System Requirements

IA-32 Processor System Requirements

Itanium Processor System Requirements

Installation Notes

Note: If you are using some other versions of the Intel C++ Compiler 7.1 or 7.0, we recommend you uninstall them prior to installing this version of Intel C++ Compiler.

The Intel compilers use the Macrovision Corporation* FLEXlm* electronic licensing technology. A valid license is needed to install the compilers. Following are the steps to install the compiler:

  1. The installation program of Intel C++ Compiler 7.1 checks for a valid license before installing any component of the product. Also, the license must remain in place on the system in order to use the Intel C++ Compiler to compile and build programs. If you have downloaded the compiler from Intel Premier Support, the license key you received with your 6.0 compiler will work with the 7.1 compiler provided your support services have not expired.
    Here is how to setup the license file before installation. For details about the support service license, please see http://www.intel.com/software/products/compilers/clin/pricelist.htm
  2. If you downloaded the compiler, untar the compiler package.
  3. Login as the root user and execute the install script, "install". Please note that you may not be able to run the ‘rpm’ command successfully if you are not logged in as a root user. It is possible to install the compilers without root access by unpacking the RPM files with rpm2cpio and editing the compiler environment and configuration files, described below, but this installation method is not supported.
  4. Select the compiler or debugger to install. The default RPM options "-U --replacefiles" are recommended to update existing files. The recommended installation directory is /opt/intel.
  5. After the installation process, all the packages that are successfully installed are listed. Please confirm that this list is accurate and Enter "x" to exit.
  6. Execute the appropriate script to setup the compiler environment variables:
    $ source <install-dir>/compiler70/ia32/bin/iccvars.sh(.csh) or
    $ source <install-dir>/compiler70/ia64/bin/eccvars.sh(.csh).
  7. Run the compiler.

Compiler Environment and Configuration Scripts Information

The compilers use environment variables that can be easily set by the following scripts.
<install-dir>/compiler70/ia32/bin/iccvars.sh(.csh) for IA-32 applications, and
<install-dir>/compiler70/ia64/bin/eccvars.sh(.csh) for Itanium processor-based applications.

Default compiler options are stored in the following configuration files.
<install-dir>/compiler70/ia32/bin/icc.cfg for IA-32 applications and
<install-dir>/compiler70/ia64/bin/ecc.cfg for Itanium processor-based applications.

They contain common settings that can be used to add additional system-wide default compilation options. Please note that you will need to save and restore any custom options in the configuration files, when you install a new version of the Intel compiler.

The default cfg files that are provided at install time contain the following statement: "-Xlinker -rpath <PATH libraries installed in>".
This option embeds the path of the shared libraries into the executable. This eliminates the need for setting the variable LD_LIBRARY_PATH. However, if the application is moved to a system without the same installation configuration, the application will not work. For this purpose, the user can remove this option from the config files and use the environment variable LD_LIBRARY_PATH to specify the location of the shared libraries.

Installation Warnings

Installation Warning for RPM 4.0.2
RPM 4.0.2 cannot install to a non-default directory. This has been resolved in RPM 4.0.3. RPM 4.1 cannot install to a non-default directory. This has been resolved in RPM 4.11 to 4.2.

Installation Warning for Intel C++ and Fortran compilers in Different Directories
The Intel C++ compiler for Linux and the Intel Fortran compiler for Linux share common files.The default RPM options in the install script prevent the compilers from working correctly when installed in different directories. For this reason, it is recommended that the compilers are installed in the same directory. However, the compiler installation packages should still be untar-ed into separate directories.

FLEXlm Server for counted license users

All distributions of the Linux compilers include a copy of the software "Intel(R) License Manager for FLEXlm*" to help you in configuring the license server. This software is automatically installed during the compiler installation if a counted license is detected. The license manager's installer displays its End User License Agreement (EULA) via a "pager" program such as "more" or "less". The default pager is "less", which requires that the "q" key be pressed after viewing the EULA. If this default behavior is not desired, simply set the PAGER environment variable to some other value (e.g., "export PAGER=more" in sh/ksh/bash, or "setenv PAGER more" in csh/tcsh) before installing the software.

Uninstalling the compilers

Login as root and run the uninstall script:
<install-dir>/compiler70/ia32/bin/uninstall on IA-32 based systems.
<install-dir>/compiler70/ia64/bin/uninstall on Itanium-based systems.

Known Limitations

OpenMP Limitations

POSIX threaded programs that require a large stack size may not run correctly on some versions of Linux because of hard-coded stack size limits in some versions of the Linux POSIX threads libraries. These limits also apply to OpenMP programs (-openmp) and automatically generated parallel programs (-parallel) with the Intel compilers, because the Intel compilers use the POSIX threads library to implement OpenMP based and automatically generated parallelism. Threaded programs that exceed the stack space limit usually experience segmentation violations or addressing errors.

To avoid these limitations, please use a version of glibc built with the FLOATING_STACKS parameter defined, typically version 2.2.4 or later for both IA-32 and Itanium Processor Family. Then use the ulimit -s .... command to set the maximum shell stack size to an explicit large value (units of KBytes) and also set the KMP_STACKSIZE environment variable to the needed thread stacksize in bytes. A shell stacksize limit of unlimited does not work - it causes a fixed hard limit to be imposed. Note, in the bash shell, ulimit -s can be used to set a large maximum stack size only once. In the C shell (csh), ulimit -stacksize can be used to reset the maximum stacksize repeatedly. The default values for KMP_STACKSIZE have been increased to 2 MB for IA-32 and 4 MB for Itanium-based systems.

This solution has been tested on glibc version 2.2.4-13 for IA-32 and glibc 2.2.4-19 for Itanium Processor Family as found in the RedHat 7.2 Linux distribution. For glibc 2.2.4-13 on IA-32, the shared version of the POSIX threads library must be used, (there should not be a -static flag in the compiler .cfg file or on the command line).

In addition, if a common block is declared as "THREADPRIVATE" with an OpenMP directive, the common block must have the same length in all the source files in which it is declared.

Use of Profile Guided Optimization along with OpenMP may substantially increase the execution time for the generation of the profile (.dyn file). This is a known issue which is being addressed. The use of profile guided optimization in conjunction with OpenMP is not recommended for this version of the Intel C++ compiler.

Please click on the appropriate link below to see additional notes and known limitations in the latest version of the compiler.

Backward binary compatibility

Code generated by the Intel C++ Compiler 7.1 for Linux is compatible with the code generated by version 7.0.
However the generated binary code by the Intel C++ Compiler 7.1 is not backward compatible with the code generated by previous release 6.0 or earlier. This means object files, static libraries, shared libraries, and executables built with previous Intel compiler/library versions may not work with current object files, static libraries, and shared libraries. Version 7.1 of the Intel Compiler has implemented shared library versioning to detect many failures due to shared library incompatibilities before run-time. Shared libraries provided with the 7.1 Intel compilers have version numbers different from libraries shipped with previous compilers. Any executable or shared object built against older versions of a shared library must be rebuilt with the new version of the compiler, or point to the library version against which they were built.

Resolved Customer Support Issues

Please click on the appropriate link below to see which issues have been resolved in the latest version of the compiler.

Technical Support and Feedback

Register for support

Your feedback is very important to us. To receive technical support and product updates for the tools provided in this product you need to register at http://support.intel.com/support/performancetools/support.htm and click on "Registration Center".

Note: If you are having trouble registering or unable to access your Premier Support account, contact developer.support@intel.com. Please do not email your technical issue to developer.support@intel.com as it is not a secure medium.

Be sure to also check out our Users Forums at http://www.intel.com/ids/community/, FAQ's, tips and tricks, and other support information available from our web-site at: http://support.intel.com/support/performancetools/c/linux/. For general support information please visit http://www.intel.com/software/products/support/ .

For more information about using the Intel C++ Compiler 7.1 for Linux, please visit http://www.intel.com/software/products/compilers/clin/. The following are some examples of the technical papers:

Submitting Issues

To submit an issue via the Intel Premier Support website, perform the following steps:
  1. Go to https://premier.intel.com/. You need to have Java* and Javascript* enabled in your web browser to submit an issue.
  2. Type in your Login and Password. Both are case-sensitive.
  3. Click the "Submit" button.
  4. Read the Confidentiality Statement and click the "I Accept" button.
  5. Click on the "Go" button next to the "Product" drop-down list.
  6. Click on the "Submit Issue" link in the left navigation bar.
  7. Choose "Development Environment (tools,SDV,EAP)" from the "Product Type" drop-down list.
  8. If this is a software or license-related issue choose "Intel® C++ Compiler, Linux*" from the "Product Name" drop-down list.
  9. Enter your question and complete the fields in the windows that follow to successfully submit the issue. Enter your question and complete the fields in the windows that follow to successfully submit the issue.

Please follow these guidelines when forming your problem report or product suggestion:

A technical support engineer will respond within one (1) Intel business day.

Copyright and Legal Information

Intel, Pentium and Itanium 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

Copyright (C) 2001 - 2003 Intel Corporation. All Rights Reserved.