C++ Compiler
C++ Compiler
C++ Compiler
1 Introduction
This document describes how to install the product, provides a summary of new and changed
product features and includes notes about features and problems not described in the product
documentation.
• Intel® C++ Compilers for building applications that run on IA-32, Intel® 64 or IA-64
architecture systems running the Windows* operating system
• Intel® Assembler for IA-64 Architecture applications
• Intel® Integrated Performance Primitives
• Intel® Math Kernel Library
• Intel® Threading Building Blocks
• Integration into Microsoft* development environments
• On-disk documentation
IA-32 Architecture 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.
Intel® 64 Architecture 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 XP* Professional x64 Edition or Microsoft
Windows Vista* x64. If the system is running a 32-bit version of the Windows operating system,
then IA-32 architecture applies instead. Systems based on AMD* processors running a 64-bit
version of Windows are also supported by Intel compilers for Intel® 64 architecture applications.
Intel® C++ Compiler Professional Edition
11.0 for Windows* Installation Guide and Release Notes
1
IA-64 Architecture Refers to systems based on the Intel® Itanium® processor running a 64-bit
operating system.
The following table describes the supported combinations of compilation host (system on which
you build the application) and application target (system on which the application runs).
Notes:
1. Microsoft Visual Studio 2005 and 2008 Standard Edition installs the “x64 Compiler and
Tools” component by default – the Professional and higher editions require a “Custom”
install to select this.
2. Microsoft Visual Studio .NET 2003 is not supported on Microsoft Windows Vista. Support
for Microsoft Visual Studio .NET 2003 will be removed in a future version of the product.
3. Microsoft Visual Studio is not supported for installation on IA-64 architecture systems
4. Applications can be run on the same Windows versions as specified above for
development. Applications may also run on non-embedded 32-bit versions of Microsoft
Windows earlier than Windows XP, though Intel does not test these for compatibility.
Your application may depend on a Win32 API routine not present in older versions of
Windows. You are responsible for testing application compatibility. You may need to
copy certain run-time DLLs onto the target system to run your application.
1.3 Installation
If you are installing the product for the first time, please be sure to have the product serial
number available as you will be asked for it during installation. A valid license is required for
installation and use.
To begin installation, insert the first product DVD in your computer’s DVD drive; the installation
should start automatically. If it does not, open the top-level folder of the DVD drive in Windows
Explorer and double-click on setup.exe.
If you received your product as a downloadable file, double-click on the executable file (.EXE)
to begin installation. Note that there are several different downloadable files available, each
providing different combinations of components. Please read the download web page carefully
to determine which file is appropriate for you.
You do not need to uninstall previous versions or updates before installing a newer version –
the new version will coexist with the older versions
If you are using Visual Studio 2005/2008 Standard Edition, no configuration is needed to build
Intel® 64 architecture applications. For other editions:
1. From Control Panel > Add or Remove Programs, select “Microsoft Visual Studio 2005”
(or 2008) > Change/Remove. The Visual Studio Maintenance Mode window will appear.
Click Next.
2. Click Add or Remove Features
3. Under “Select features to install”, expand Language Tools > Visual C++
4. If the box “X64 Compiler and Tools” is not checked, check it, then click Update. If the
box is already checked, click Cancel.
To use Microsoft Visual Studio 2005/2008 Team System Edition to build applications to run on
IA-64 architecture systems, follow the above steps and ensure that the box “Itanium Compiler
and Tools” is checked.
When installing on Microsoft Windows Vista and with Microsoft Visual Studio 2005, you may see
one or more warning boxes saying that there are compatibility issues with Visual Studio 2005.
In some cases, these warning boxes may be hidden behind the installer window making it
appear that the installation has stalled. Look in the Windows task bar for additional windows
that require acknowledgement before proceeding. You may safely allow Visual Studio 2005 to
run as part of the compiler install process – after installation is complete, be sure to install the
two Service Pack 1 updates as described in the paragraph above.
• You must manually add the include and lib folders for the Intel® Math Kernel
Library, if installed, to Visual Studio using the Tools > Options > Intel C++ > Compilers
dialog. For example:
$(ICPP_COMPILER11)mkl\include
If you want to add or remove components of the installed product, rerun the product setup
program (setup.exe) of the version currently installed. This cannot be done from the
Windows Control Panel. If you downloaded the product, the setup program was unpacked to
C:\Program Files\Intel\Download\C++CompilerPro11.0 by default.
When installing an updated version of the product, you do not need to remove the older version
first. You can have multiple versions of the compiler installed and select among them. If you
remove a newer version of the product you may have to reinstall the integrations into Microsoft
Visual Studio from the older version.
• C:\Program Files\Intel\Compiler\11.0\xxx\cpp
o bin
ia32
ia32_intel64
ia32_ia64
intel64
ia64
o include
o lib
ia32
intel64
ia64
o perf_headers
o ipp
o mkl
o tbb
o Documentation
compiler_c
ipp
mkl
tbb
o Samples
Where xxx is the three-digit update number and the folders under bin, include and lib
are used as follows:
If you have both the Intel C++ and Intel Fortran compilers installed, they will share folders for a
given version.
If you are installing on a system with a non-English language version of Windows, the name of
the Program Files folder may be different. On Intel® 64 architecture systems, the folder
name is Program Files (X86) or the equivalent.
1.6 Documentation
Product documentation can be found in the Documentation folder as shown under Installation
Folders.
For information about how to find Technical Support, Product Updates, User Forums, FAQs, tips
and tricks, and other support information, please
visit http://www.intel.com/software/products/support/cwin
Note: If your distributor provides technical support for this product, please contact them for
support rather than Intel.
2.1 Compatibility
In version 11, the IA-32 architecture default for code generation has changed to assume that
Intel® Streaming SIMD Extensions 2 (Intel® SSE2) instructions are supported by the processor
on which the application is run. See below for more information.
• /arch
• /bigobj
• /homeparams
• /MP
• /QaxSSE2
• /QaxSSE3
• /QaxSSSE3
• /QaxSSE4.1
• /Qdiag-error-limit
• /Qdiag-once
• /Qfast-trancendentals
• /Qfma
• /Qfp-relaxed
• /Qfreestanding
• /Qhelp-pragma
• /Qinstruction
• /Qm32
• /Qm64
• /Qopenmp-link
• /Qopenmp-task
• /Qopenmp-threadprivate
• /Qopt-block-factor
• /Qopt-jump-tables
• /Qopt-loadpair
• /Qopt-mod-versioning
• /Qopt-prefetch-initial-values
• /Qopt-prefetch-issue-excl-hint
• /Qopt-prefetch-next-iteration
• /Qopt-subscript-in-range
• /Qprof-data-order
• /Qprof-func-order
• /Qprof-gen
For a list of deprecated compiler options, see the Compiler Options section of the
documentation.
When using the instruction set options, make sure that the executing system supports the
specified instruction set. /QxHost is best used when the same system will be used to compile
and run the application.
• The .icproj project file now contains only supplemental information not included in the
.vcproj file. This means that synchronization between the Intel and Microsoft project
systems is no longer required.
Where xxx is the update number and argument is one of ia32, ia32_intel64, intel64,
ia32_ia64, ia64 as described above under Installation Folders. If you have installed the
compiler into a different path, make the appropriate adjustments in the command.
2.5.2 Instruction Set Default Changed to Require Intel® Streaming SIMD Extensions 2
(Intel® SSE2)
When compiling for the IA-32 architecture, /arch:SSE2 (formerly /QxW) is now the default.
Programs built with /arch:SSE2 in effect require that they be run on a processor that supports
the Intel® Streaming SIMD Extensions 2 (Intel® SSE2), such as the Intel® Pentium® 4
processor and certain AMD* processors. No run-time check is made to ensure compatibility – if
the program is run on a processor that does not support the instructions, an invalid instruction
fault may occur. Note that this may change floating point results since the Intel® SSE
instructions will be used instead of the x87 instructions and therefore computations will be done
in the declared precision rather than sometimes a higher precision.
The “legacy” libraries (libguide.lib, libguide40.lib, etc.) will be removed in a future release of the
Intel compilers.
• Sparse and optimization solver libraries functions are only provided in static form
• Mode DFTI_REAL_STORAGE can have the default value only and cannot be set by the
DftiSetValue function (i.e. DFTI_REAL_STORAGE = DFTI_REAL_REAL)
• The ILP64 version of Intel® MKL does not currently support FFTs with any one
dimension larger than 2^31-1. Any 1D FFT larger than 2^31-1 or any multi-dimensional
FFT with any dimension greater than 2^31-1 will return the
"DFTI_1D_LENGTH_EXCEEDS_INT32" error message. Note that this does not exclude
the possibility of performing multi-dimensional FFTs with more than 2^31-1 elements; as
long as any one dimension length does not exceed 2^31-1
• Some limitations exist on arrays sizes for Cluster FFT functions. See mklman.pdf for a
detailed description
• When a dynamically linked application uses Cluster FFT functionality, it is required to put
the static Intel® MKL interface libraries on the link line as well. For example: -Wl,--start-
group $MKL_LIB_PATH/libmkl_intel_lp64.a $MKL_LIB_PATH/libmkl_cdft_core.a -Wl,--
end-group $MKL_LIB_PATH/libmkl_blacs_intelmpi20_lp64.a -L$MKL_LIB_PATH -
lmkl_intel_thread -lmkl_core -liomp5 -lpthread
• The ILAENV function, which is called from the LAPACK routines to choose problem-
dependent parameters for the local environment, cannot be replaced by a user's version
• second() and dsecnd() functions may not provide correct answers in the case where the
CPU frequency is not constant.
• As of version 10.0 the following two issues apply when linking to the dynamic libraries:
o A user provided XERBLA will not be invoked if LAPACK is called with illegal input
parameters. The default XERBLA will be used instead.
o A user may encounter a segment violation if they call the LP64 interface to
LAPACK with illegal parameters. This is because a request may be made to
allocate a negative amount of memory.
Limitations to the Vector Math Library (VML) and Vector Statistical Library (VSL) functions:
• In case user needs to build custom DLL that contains references to Intel® MKL
functions, the Intel® MKL DLL Builder Tool should be used. Other DLL build techniques
are not supported
• There are possible problems with getting global environment variables such as
MKL_BLACS_MPI by -genvlist by MPICH2. In this case, try to set all necessary
environment variables by using the control panel. From the System control panel select
the "Advanced" tab and click the "Environment Variables" button.
• The ILP64 version of Intel® MKL does not contain the complete functionality of the
library. For a full listing of what is in the ILP64 version refer to the user's guide in the doc
directory.
• The Java examples don't work if the path to the JDK contains spaces. Please use
quotes to set JAVA_HOME in those cases. For example: set JAVA_HOME="C:\Program
Files\Java\jdk1.6.0_06"
The DHPL_CALL_CBLAS option is not allowed when building the hybrid version of MP
LINPACK.
We recommend that /Od be used for the Intel® compilers when compiling test source code
available with Intel® MKL. Current build scripts do not specify this option and default behavior
for these compilers has changed to provide vectorization.
All VSL functions return an error status, i.e., default VSL API is a function style now rather than
a subroutine style used in earlier Intel® MKL versions. This means that Fortran users should call
VSL routines as functions. For example:
errstatus = vslrnggaussian(method, stream, n, r, a, sigma)
rather than subroutines:
call vslrnggaussian(method, stream, n, r, a, sigma)
Nevertheless, Intel® MKL provides a subroutine-style interface for backward compatibility. To
use subroutine-style interface, manually include mkl_vsl_subroutine.fi file instead of mkl_vsl.fi
by changing the line include 'mkl_vsl.fi' mkl.fi (in the include directory) with the line include
'mkl_vsl_subroutine.fi'. VSL API changes don't affect C/C++ users.
Memory Allocation: In order to achieve better performance, memory allocated by Intel® MKL
is not released. This behavior is by design and is a one-time occurrence for Intel® MKL routines
Other: The GMP component is located in the solver library. For Intel® 64 and IA-64 platforms
these components support only LP64 interface.
Using /MT when linking with multi-threaded Intel® MKL is recommended. Use of /MD with
Microsoft* Visual C++* .NET 2003 may cause linking errors.
• The atomic<long long> and atomic<unsigned long long> templates are not supported
when using the Microsoft* Visual C++* 7.1 (Microsoft* Visual Studio .NET 2003*)
compiler.
• To allow more accurate results to be obtained with Intel® Thread Checker or Intel®
Thread Profiler, download the latest update releases of these products before using them
with Intel® Threading Building Blocks.
• If you are using Intel(R) Threading Building Blocks and OpenMP* constructs mixed
together in rapid succession in the same program, and you are using Intel(R) compilers
for your OpenMP* code, set KMP_BLOCKTIME to a small value (e.g., 20 milliseconds) to
improve performance. This setting can also be made within your OpenMP* code via the
kmp_set_blocktime() library call. See the Intel® compiler OpenMP* documentation for
more details on KMP_BLOCKTIME and kmp_set_blocktime().
• In general, non-debug ("release") builds of applications or examples should link against
the non-debug versions of the Intel® Threading Building Blocks libraries, and debug
builds should link against the debug versions of these libraries. On Windows* systems,
compile with /MD and use Intel® Threading Building Blocks release libraries, or compile
with /MDd and use debug libraries; not doing so may cause run-time failures. See the
Tutorial in the product "Documentation\tbb" sub-directory for more details on debug vs.
release libraries.
Intel may make changes to specifications and product descriptions at any time, without notice.
Designers must not rely on the absence or characteristics of any features or instructions marked
"reserved" or "undefined." Intel reserves these for future definition and shall have no
responsibility whatsoever for conflicts or incompatibilities arising from future changes to them.
The information here is subject to change without notice. Do not finalize a design with this
information.
The products described in this document may contain design defects or errors known as errata
which may cause the product to deviate from published specifications. Current characterized
errata are available on request.
Contact your local Intel sales office or your distributor to obtain the latest specifications and
before placing your product order.
Copies of documents which have an order number and are referenced in this document, or
other Intel literature, may be obtained by calling 1-800-548-4725, or by visiting Intel's Web Site.
Celeron, Centrino, Intel, Intel logo, Intel386, Intel486, Intel Atom, Intel Core, Itanium, MMX,
Pentium, VTune, and Xeon are trademarks of Intel Corporation in the U.S. and other countries.