 |
Auto-vectorization parallelizes code to utilize the Streaming SIMD Extensions (SSE) instruction set architectures (SSE, SSE2, SSE3, SSSE3, and SSE4) of our latest processors. |
 |
High-Performance Parallel Optimizer (HPO)restructures and optimizes loops to ensure that auto-vectorization, OpenMP, or auto-parallelization best utilizes the processor’s capabilities for cache and memory accesses, SIMD instruction sets, and for multiple cores. This revolutionary capability, new in Version 10, combines vectorization, parallelization and loop transformations into a single pass which is faster, more effective and more reliable than prior discrete phases. |
 |
Interprocedural Optimization (IPO)dramatically improves performance of small- or medium-sized functions that are used frequently, especially programs that contain calls within loops. The analysis capabilities of this optimizer can also give feedback on vulnerabilities and coding errors, such as uninitialized variables or OpenMP API issues, which cannot be detected as well by compilers which rely strictly on analysis by a compiler front-end. |
 |
Profile-guided Optimization (PGO) improves application performance by reducing instruction-cache thrashing, reorganizing code layout, shrinking code size, and reducing branch mispredictions. |
 |
Optimized Code Debugging with the Intel® Debugger improves the efficiency of the debugging process on code that has been optimized for Intel® architecture. |
|
Improved Performance and Threading
 |
New Parallel/Loop Optimizer (HPO) |
|
Better application performance for computationally intensive applications such as graphics/digital media, financial modeling, and high-performance computing for threaded and non-threaded applications. Our new High Performance Parallel Optimizer, HPO, offers an improved ability to analyze, optimize, and parallelize more loop nests. |
|
Security Checking and Diagnostics
 |
GNU Mudflap |
 |
Static Verifier for buffer overflow |
 |
OpenMP* API verification |
|
Ability to create code that is less susceptible to security vulnerabilities, such as buffer overflow. The diagnostics are very helpful for novice and expert users for catching common coding errors, from unitialized variables to mismatched dummy and actual arguments to OpenMP API coding issues. |
| 64-bit Mac OS* X Support |
Ability to create applications that take advantage of the addressing and performance capabilities enabled by Intel® 64 architecture-based processors used in the latest Apple Mac OS X systems. |
| Optimization Reports |
More detailed optimization diagnostics for users who want to use our advanced optimizations to help the compiler do a better job at tuning their applications. |
| Options to enable more advanced optimizations for loop unrolling, streaming stores and pointer aliasing |
Improved application performance. |
| Option to select alternate algorithms for malloc |
Increased flexibility when allocating memory. |
|
Support for the Latest Multi-Core Processors
The Intel C++ Compiler provides optimization support for the very latest multi-core processors, including:
 |
Intel® Core™2 Duo processor |
 |
Intel® Core™2 Quad processor |
 |
Quad-Core Intel® Xeon® processor 5300 series |
 |
Dual-Core Intel® Xeon® processor 3000 series |
 |
Dual-Core Intel® Xeon® processor 5000 series |
 |
Dual-Core Intel® Xeon® processor 7000 series |
 |
Dual-Core Intel® Itanium 2 processor |
|
Intel® compilers future-proof your investment with assurance of world-class support for each successive generation of processors. That's a key advantage in a world where new hardware platforms come to market with awesome speed.
Support for auto-parallelization and OpenMP enable you to create optimized, multithreaded applications that take full advantage of multi-core processing features to deliver outstanding performance. |
| Professional Edition |
Includes not only the advanced capabilities of the compiler, but also Intel® Threading Building Blocks, Intel® Integrated Performance Primitives, and Intel® Math Kernel Library with highly optimized functions for threading, math processing, and multimedia. |
Interprocedural optimization (IPO) can dramatically improve application performance in programs that contain many small- or medium-sized functions that are frequently used, especially for programs that contain calls within loops. This set of techniques, which can be enabled for automatic operation in the Intel® compilers, uses multiple files or whole programs to detect and perform optimizations, rather than focusing within individual functions.
|
| Figure 2. The interprocedural optimization process |
The IPO process, shown in Figure 2, first requires that source files are compiled with the IPO option, creating object (.o) files that contain the intermediate language (IL) used by the compiler. Upon linking, the compiler combines all of the IL information and analyzes it for optimization opportunities. Typical optimizations made as part of the IPO process include procedure inlining and re-ordering, eliminating dead (unreachable) code, and constant propagation, or the substitution of known values for constants. IPO enables more aggressive optimization than what is available at the intra-procedural level, since the added context of multiple procedures makes those more-aggressive optimizations safe.
The analysis capabilities of IPO can also give feedback on vulnerabilities and coding errors, such as uninitialized variables, which cannot be detected as well by compilers which rely strictly on analysis by a compiler front-end. back to top |
 |
An all-stop/all-go execution model (i.e., all threads are stopped when one is stopped, and all threads are resumed when one is resumed). |
 |
List all created threads. |
 |
Switch focus between threads. |
 |
Examine detailed thread state. |
 |
Set breakpoints (including all stop, trace, and watch variations) and display a back-trace of the stack for all threads or for a subset of threads. |
 |
The built-in GUI provides a Thread panel (on the Current Source pane) that activates when a thread is created, and that allows an operator to select thread focus and display related details. |
| The recently enhanced GNU Project Debugger (GDB debugger) can also be used for parallel applications. For additional information, please refer to the Intel Debugger Technical White Paper (PDF 210KB). |
| Xcode Integration |
The Intel C++ Compiler is compatible with Xcode*, enabling developers to work with a popular IDE while also taking advantage of advanced optimization features from Intel.
Generate C/C++ Universal Binaries from the Xcode environment using the Intel C++ Compiler and GCC for PowerPC*, retaining compatibility with GCC 4.0. Universal Binaries are designed to ease the transition between PowerPC and Intel® architecture by combining native code for both architectures in a single compiled package.
High-level code that contains no processor dependencies requires few if any changes to create a Universal Binary. Lower-level code that contains hardware dependencies presents a greater challenge. |
| GCC 4.0 Interoperability |
GNU C/C++ compatibility features enable you to gain source- and object-code compatibility with GNU C. The Intel C++ Compiler has GCC-extension support to help ease application porting, so you can recompile existing software to get improved application performance. Alternatively, rather than switching compilers completely, build applications by compiling specific modules with the Intel C++ Compiler for Mac OS X and link them with modules compiled with GNU C. Additionally, the Intel C++ Compiler for Mac OS X complies with the C++ ABI standard, which enables stronger binary compatibility with GCC 4.0.
|
| Support for Apple Frameworks |
Apple frameworks are a special type of bundle used to distribute shared resources, including library code, resource files, header files, and reference documentation. They offer flexibility that is often preferable to using dynamic shared libraries.
For more information on Apple frameworks, please visit Apple’s website*. |
| Standards Compliance |
 |
ANSI C/C++ standard |
 |
ISO C/C++ standard |
 |
GNU inline assembly |
 |
C++ ABI object model |
|