Intel® C and C++ Compilers

Leadership application performance

  • Advanced optimization and multithreading capabilities
  • Utilizes the latest Intel® AVX, AVX2 and AVX-512 instructions
  • Compatible with leading compilers and development environments

Interested in the Intel® C++ compiler for Android*? Click here.

C/C++ only:
From $699
Buy Now
Or Download a Free 30-Day Evaluation Version

C/C++ & Fortran:
From $1,199
Buy Now
Or Download a Free 30-Day Evaluation Version

Advanced Performance Features

  • High-Performance Parallel Optimizer (HPO) offers an improved ability to analyze, optimize, and parallelize more loop nests. This revolutionary capability combines vectorization, parallelization, and loop transformations into a single pass that is faster, more effective, and more reliable than prior discrete phases.
  • Automatic Vectorizer analyzes loops and determines when it is safe and effective to execute several iterations of the loop in parallel. Vectorization and auto-parallelization have been enhanced for broader applicability, improved application performance. It also offers insights into your code when you use the guided autoparallelization (GAP) feature. In addition, SIMD pragmas can be used for added user control of vectorization.
  • Guided Auto-Parallelization (GAP) is a unique capability in both Intel C++ and Intel Fortran compilers that suggests ways to improve auto-vectorization as well as auto-parallelization and data transformation. When used, GAP builds a report that may include suggestions for source code changes, use of pragmas, or use of specific compiler options. This is a powerful tool that can help you extend the auto-vectorization and auto-parallelism capabilities of the compiler.
  • Interprocedural Optimization (IPO) Interprocedural optimization is a simple switch setting that can speed application performance.. It can dramatically improves performance of small- or medium-sized functions that are used frequently, especially programs that contain calls within loops. It speeds application performance by inlining your code – a process that logically 'lines up' all the components of your application to speed execution.

  • Loop Profiler is part of the compiler and can be used to generate low overhead loop and function profiling to show hotspots and where to introduce threads.
  • Profile-Guided Optimization (PGO) is a multi-step process that optimizes application performance based on user workload. It improves application performance by reducing instruction-cache thrashing, reorganizing code layout, shrinking code size, and reducing branch mispredictions. PGO uses actual user workloads to understand how the application logic in your application is used. It then organizes your application according to those patterns to speed execution.

  • OpenMP* 3.1 is supported to help simplify pragma-based development of parallelism in your C and C++ applications.
  • Videos on Getting Started with Intel® C++ Compiler
  • Vectorization Essentials
  • Performance Essentials with OpenMP 4.0 Vectorization
  • View slides

Register for future Webinars


Previously recorded Webinars:

  • OpenMP 4.0 for SIMD and Affinity Features with Intel® Xeon® Processors and Intel® Xeon Phi™ Coprocessor
  • Introduction to Vectorization using Intel® Cilk™ Plus Extensions
  • Optimizing and Compilation for Intel® Xeon Phi™ Coprocessor

More Tech Articles

Selective Use of gatherhint/scatterhint Instructions
By Rakesh Krishnaiyer (Intel)Posted 02/20/20140
Compiler Methodology for Intel® MIC Architecture Selective Use of gatherhint/scatterhint Instructions Overview The -opt-gather-scatter-unroll=<N> compiler option can be used to generate gatherhint/scatterhint instructions supported by the coprocessor.  This is useful if your code is doin...
Introduction to the Intel® Numeric String Conversion Library
By Zhang Z (Intel)Posted 02/04/20140
Intel® Numeric String Conversion Library (libistrconv) is a new component introduced in Intel® C++ compiler version 14.0 Update 1. This library provides a collection of routines for converting between ASCII strings of decimal numbers and C numeric data types. These routines provide similar functi...
Vectorization Essentials
By Ronald W Green (Intel)Posted 12/06/20130
  Compiler Methodology for Intel® MIC Architecture Vectorization Essentials Overview This chapter covers topics in vectorization. Vectorization is a form of data-parallel programming. In this, the processor performs the same operation simultaneously on N data elements of a vector ( a one-dime...
Memory Layout Transformations
By AmandaS (Intel)Posted 11/25/20130
Compiler Methodology for Intel® MIC Architecture Memory Layout Transformations Overview This chapter examines a useful user code transformation: moving from data organized in an Array of Structures (AoS) to an organization of Stucture of Arrays (SoA). This transformation allows the compiler to ac...

Pages

Subscribe to

Supplemental Documentation

Intel® MKL Sparse BLAS Overview
By Naveen Gv (Intel)Posted 06/25/20120
Sparse BLAS routines can be useful to implement iterative methods for solving large sparse systems of equations or eigenvalue problems
Intel Guide for Developing Multithreaded Applications
By adminPosted 01/16/201224
The Intel® Guide for Developing Multithreaded Applications covers topics ranging from general advice applicable to any multithreading method to usage guidelines for Intel® software products to API-specific issues.
Elemental functions: Writing data parallel code in C/C++ using Intel® Cilk™ Plus
By Robert Geva (Intel)Posted 01/24/20116
Intel® Cilk™ Plus provides simple to use language extensions to express data and task-parallelism to the C and C++ language. This article describes one of these programming constructs: “elemental functions”.
Subscribe to

You can reply to any of the forum topics below by clicking on the title. Please do not include private information such as your email address or product serial number in your posts. If you need to share private information with an Intel employee, they can start a private thread for you.

New topic    Search within this forum     Subscribe to this forum


Error using compilervars.csh or ippvars.csh - arch: Undefined variable.
By Kevin Davis (Intel)0
Cross posting for the benefit of others. See original thread here: http://software.intel.com/forums/topic/505599 A defect was reported with the Intel® Integrated Performance Primitives (IPP) 8.1 Initial release ippvars.csh file distributed for Linux* (found under: /opt/intel/composer_xe_2013_sp1/ipp). This may also affect users who install the Intel® Composer XE 2013 SP1 Update 2 release (Package id: l_ccompxe_2013_sp1.2.144) and use the compilervars.csh script (found under: /opt/intel/composer_xe_2013_sp1/bin). For example: $ cd /opt/intel/composer_xe_2013_sp1.2.144/bin $ source ./compilervars.csh intel64 arch: Undefined variable. Refer to following article for a complete description of the error and work around:http://software.intel.com/en-us/articles/error-when-using-compilervarscshippvarscsh-arch-undefined-variable
OS X 10.9 Xcode 5 error can't open "stdlib.h" OR ld: library not found for -lcrt1.10.6.o
By Ronald W Green (Intel)0
Environment:  OS X 10.9 (Mavericks) and Xcode 5.0 Command line compilations/links fail with either: "catastrophic error: cannot open source file "stdlib.h" OR with "ld: library not found for -lcrt1.10.6.o" Affected compiler:  Intel Composer XE 2013 Update 1 Root cause:  Xcode 5.0 installation does not install all command line tools (include files, libraries, SDKs) need for the compiler to link user applications.  FIX: Install the Xcode 5.0 "Command Line Tools".  Follow this Knowledge Base article for installation of this package:  http://software.intel.com/en-us/articles/installing-intel-compilers-for-os-x-pre-requisite-xcode-command-line-tools
New product: Intel® C++ Compiler 14.0 for Android
By Jennifer J. (Intel)3
Hello everyone, Today we are introducing a new product called Intel® C++ Compiler 14.0 for Android*. It can be hosted on Windows*, OS X*, or Linux*. You can find more info at http://software.intel.com/en-us/c-compiler-android. The previous release – the limited-time, free version of the Intel® C++ Compiler 13.0 for Android* OS – is no longer available. For emphasis, the version available today is 14.0.  It is available in 3 separately downloadable packages, one each for Windows, OS X, and Linux.  You can download evals or purchase the compiler at the above link as well. Support is offered through this forum.  If you have any issues, suggestions, comments, etc., please let us know. Thank you ! Jennifer Jiang
ld: cannot find -lm when building with -static or -fast
By Ronald W Green (Intel)0
RHEL 6.x, FC14, FC13, FC12, SL6.x, CentOS 6, etc. and possibly other recent distributions: error when using -static or -fast: ld: cannot find -lm See this article: http://software.intel.com/en-us/articles/error-ld-cannot-find-lm/
IDB use under Mac OS* X 10.7 Lion
By Ronald W Green (Intel)0
In order to debug applications built by the Intel Composer XE 2011 ( Updates 6, 7, 8, and possible future updates ) under Mac OS* X 10.7 Lion, the following options are required: -g -save-temps -fpic -Wl,-no_pie Further information can be found here: http://software.intel.com/en-us/articles/using-the-idb-debugger-under-mac-os-x-107-lion/This does not affect users running Mac OS* X 10.6 Snow Leopard or Mac OS* X 10.5 Leopard.
ABI compatibility between updates of the Intel C++ compiler
By Richard G.2
On linux, the intel C++ compiler libraries (eg. libimf.so) don't use soname versioning to indicate ABI compatibility. When intel issues a major upgrade or patch upgrade, are these libraries ABI compatible? eg. if I built a shared library with icc14.0.0, will it still work if I link to the libimf.so from icc 14.0.2? (I presume yes) If I build a shared library with icc13 will it work with the libimf.so from icc14? (I presume no) Also, if I build a shared library with a new icc (eg. 14.0.2), will it run with a binary which was built & uses an old major version icc (eg. 13.1.1)? (I presume no) Would you consider adding soname versions to the intel libraries to make this clear? Thanks!
Multi-processor compilation + precompiled header
By mpoeter3
Hi, is it possible to combine multi-processor compilation with precompiled headers? I am using Visual Studio 2013 with Intel Composer XE 2013 SP1. I have set up my project to use multi-processor compilation (/MP) and I have a pch.h + pch.cpp for the precompiled header. For the project I have selected "use" precompiled header (/Yu) while for pch.cpp this is set to "create" (/Yc). I use "force include" to automatically include the pch.h in every cpp file. This configuration works fine with the Microsoft Compiler. The Intel compiler also compiles everything just fine, but totally ignores the /MP switch -> compiling one file after the other with just a single icl process runnning. When I completely deactivate the precompiled header (for both, the project and the pch.cpp file) the multi-processor compilation works as expected (on my machine resulting in 8 icl processes running concurrently). Is there a reason why this does not work with precompiled headers? Am I doing something wrong...
libmmdd.lib linking to libmmd.dll?
By Scott S.0
Hi all, I've just updated to Intel Compiler 2013 SP1 and I've noticed that libmmdd.lib seems to be pulling in the release version of the dll, i.e. libmmd.dll.  Is this the correct behavior for some reason? Regards

Pages

Subscribe to Forums

You can reply to any of the forum topics below by clicking on the title. Please do not include private information such as your email address or product serial number in your posts. If you need to share private information with an Intel employee, they can start a private thread for you.

New topic    Search within this forum     Subscribe to this forum


Cilk Plus for GCC 4.8
By Barry Tannenbaum (Intel)0
Binary versions of the GNU Compiler Collection (GCC) C and C++ 4.8 compilers with the cilkplus extension are now available from http://www.cilkplus.org/download#gcc-development-branch . The binaries support the x86-32 and x86-64 architectures on Ubuntu* Linux*. The source for these compilers is available at http://gcc.gnu.org/svn/gcc/branches/cilkplus-4_8-branch  . These compilers are provided as a convenience. This branch is under active development and should not be used for production code. The compilers are not guaranteed to be up-to-date or error-free. Questions, bug reports, or issues should be posted in this forum. Cilk Plus is also being integrated into the next version of the GCC C and C++ compilers.  Sources for that version are available at http://gcc.gnu.org/svn/gcc/branches/cilkplus .
Announcement: Version 1.2 of the Cilk Plus Language Specification released
By Pablo Halpern (Intel)0
We are pleased to announce an update to the Intel® Cilk™ Plus Language Specification.  This document describes the syntax and semantics of the Cilk™ Plus language constructs that were added to the C and C++ programming languages.  This version of the specification was relseased in September, 2013 and supersedes the 1.1 version of the same specification released in July, 2011.  This version adds no new features to the language extensions described in the V1.1 specification, but contains numerous corrections and clarifications.  A few obsolete constructs were removed.  It is recommended that implementors adding Cilk Plus extensions to their compilers base their changes on this document instead of the V1.1 document. The new spec is available on the Open Specifications download page on cilkplus.org.
Cilkpub: a library of community-contributed Cilk Plus code
By Jim Sukha (Intel)2
We are pleased to announce that Cilkpub, a library of community-contributed Cilk Plus code, is now available for download. Cilkpub is intended to be a public library of code contributed and maintained by the members of the Cilk Plus community. Version 1.02 has been posted to the community website and contains the following modules: DotMix DPRNG: a deterministic parallel random number generator for Cilk Plus, contributed by Tao B. Schardl and myself. Sort: a module containing parallel implementations of quicksort and sample sort, contributed by Arch Robison.   This code is derived from the sorts described in Structured Paralllel Programming. Cilkpub is distributed as a source code.  The DotMix and Sort modules are implemented using C++ templates, and consist of only header files. If you have your own Cilk Plus code that you would like to share with the world, please consider contributing your code!   The Cilkpub project is still in its early stages, and we hope to expand the library ...
Cilk Plus/LLVM available on Github
By Ben Langmuir (Intel)3
Hi all, I am pleased to announce that the source code for our in-progress implementation of the Intel Cilk Plus extensions in Clang/LLVM is now available on Github: http://cilkplus.github.com/ This is an early release, and is not yet feature-complete. Right now, only spawn and sync are supported, as well as anything that only requires the runtime library, such as hyperobjects. We will of course be adding the rest of the Intel Cilk Plus extensions over time, including cilk_for and the vectorization features. More information about the current status, including supported platforms and known issues is available at http://cilkplus.github.com/#status. We would love to hear your feedback (and bug reports!) – either on this forum, or via the github issue tracker https://github.com/cilkplus/clang/issues.  Ben
New Cilk Plus website - http://cilkplus.org/
By Bethany Dalby (Intel)1
Check out the new Intel® Cilk Plus™ website http://cilkplus.org/.  Learn about the latest product information, download tools and samples, submit contributions, and much more! If you have any comments or suggestions, we would love to hear them.
Intel Cilk Plus SDK - Cilkscreen and Cilkview for Intel Cilk Plus
By Barry Tannenbaum (Intel)6
The Intel Cilk Plus SDK (Software Development Kit) is now available as a WhatIf kit. It supplies the Cilkscreen race detection and Cilkview scalability tools for Intel Cilk Plus developers working on the Microsoft Windows* and Linux* operating systems. More information can be found at the Intel Cilk Plus Download page. Support for the Intel Cilk Plus SDK will be provided through the Intel Cilk Plus forum. Note: You must have SP1 or later of the Intel Parallel Composer 2011 or Intel C++ Composer XE 2011 products. - Barry
Question on cilk_sort
By Lawrence R.14
Is cilk_sort functions parallel drop in replacements for the C qsort function?  
Issue with gather & scatter operations
By Loïc T.2
Hi, I read on the doc that array notation can be used for array indicies in both cases : C[:] = A[B[:]] and A[B[:]] = C[:]I try to use this notation for left & right operands at the same time but it gives me wrong results. Here is my problem: double tmp[VEC_SIZE]; // Already initialized int index[VEC_SIZE]; // Already initialized tab[index[:]] = tab[index[:]] + tmp[:]; // This line gives wrong result for (int i = 0; i < VEC_SIZE; i++) { tab[index[i]] = tab[index[i]] + tmp[i]; // While this loop gives the correct result }To me, these two versions of the code are supposed to be equivalent, am I wrong ? Can we use array notation for array indicies in left & right operands at the same time ? Thanks

Pages

Subscribe to Forums

Integration into Microsoft Visual Studio*, Compatibility with the gnu* tool chain


The Intel compilers that are part of Intel® Composer XE 2013 for Windows integrate into Microsoft Visual Studio* Microsoft Visual Studio* 2008-2013. This means all parts of Intel Composer XE 2013 – Intel C++, Intel Fortran and the Performance Libraries – are usable through Visual Studio. This preserves your knowledge of and investment in Visual Studio. Intel C++ compilers are also source and binary compatible with Microsoft Visual C++ which makes it easier to switch to Intel compilers or use them for the performance-sensitive parts of your application while continuing to use Visual C++ for other parts. It's a similar story on Linux. Compilers in Composer XE products for Linux are compatible with the gnu tool chain and are source and binary compatible with gcc.

A choice of suites that include the Intel C or C++ compiler(s):

Software Development Suite

Includes the following components for development on:

Build, Debug and Tune**

Windows*

Linux*

OS X*

Intel® Cluster Studio XE Intel® C++ Composer XE
Intel® Visual Fortran Composer XE
Intel® Trace Analyzer and Collector
Intel® MPI Library
Intel® VTune™ Amplifier XE
Intel® Inspector XE
Intel® Advisor XE
Intel® C++ Composer XE
Intel® Fortran Composer XE
Intel® Trace Analyzer and Collector
Intel® MPI Library
Intel® VTune™ Amplifier XE
Intel® Inspector XE
Intel® Advisor XE
 
Intel® Parallel Studio XE Intel® Fortran Composer XE
Intel® VTune™ Amplifier XE
Intel® Inspector XE
Intel® Advisor XE
Intel® Fortran Composer XE
Intel® VTune™ Amplifier XE
Intel® Inspector XE
Intel® Advisor XE
 

Intel® C++ Studio XE

Intel® C++ Composer XE
Intel® VTune™ Amplifier XE
Intel® Inspector XE
Intel® Advisor XE

Intel® C++ Composer XE
Intel® VTune™ Amplifier XE
Intel® Inspector XE
Intel® Advisor XE

 

Intel® Cluster Studio Intel® Composer XE
Intel® Trace Analyzer and Collector
Intel® MPI Library
Intel® MPI Benchmarks
Intel® Composer XE
Intel® Trace Analyzer and Collector
Intel® MPI Library
Intel® MPI Benchmarks
 

Build***

Windows*

Linux*

OS X*

Intel® Composer XE Intel® Fortran Compiler
Intel® C++ Compiler
Intel® Math Kernel Library
Intel® Threading Building Blocks
Intel® Integrated Performance Primitives
Intel® Fortran Compiler
Intel® C++ Compiler
Intel® Math Kernel Library
Intel® Threading Building Blocks
Intel® Integrated Performance Primitives
 

Intel® C++ Composer XE

Intel® C++ Compiler
Intel® Math Kernel Library
Intel® Threading Building Blocks
Intel® Integrated Performance Primitives

Intel® C++ Compiler
Intel® Math Kernel Library
Intel® Threading Building Blocks
Intel® Integrated Performance Primitives

Intel® C++ Compiler
Intel® Math Kernel Library
Intel® Threading Building Blocks
Intel® Integrated Performance Primitives

** Build, Debug and Tune Suites include C/C++ and/or Fortran compiler(s), libraries, threading assistant, error checking and performance profiler
*** Build Suites include C/C++ and/or Fortran compiler(s) and libraries.