Intel® C and C++ Compilers

Leadership application performance

  • Rich set of components to efficiently implement higher-level, task-based parallelism
  • Future-proof applications to tap multicore and many-core power
  • Compatible with multiple compilers and portable to various operating systems

Performance without compromise

  • Industry leading performance on Intel and compatible processors.
  • Extensive optimizations for the latest Intel processors, including Intel® Xeon Phi™ coprocessor
  • Scale forward with support multi-core, manycore and multiprocessor systems with OpenMP, automatic parallelism, and Intel Xeon Phi coprocessor support
  • Patented automatic CPU dispatch feature gets you code optimized for the current running processor runs code optimized for specified processors identified at application runtime.
  • Intel® Performance Guide provides suggestions for improving performance in your Windows* applications.

Broad support for current and previous C and C++ standards, plus popular extensions

  • Language support with full C++11 and most C99 support. For details on C++11, see http://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler
  • Extensive OpenMP 4.0* support

Faster, more scalable applications with advanced parallel models and libraries

Intel provides a variety of scalable, easy to use parallel models. These highly abstracted models and libraries simplify adding both task and vector parallelism. The end result is faster, more scalable applications running on multi-core and manycore architectures.

Intel® Cilk™ Plus (included with Intel C++ compiler)

  • Simplifies adding parallelism for performance with only three keywords
  • Scale for the future with runtime system operates smoothly on systems with hundreds of cores.
  • Vectorized and threaded for highest performance on all Intel and compatible processors
  • Click here for sample code, contributed libraries, open specifications and other information from the Cilk Plus community.
  • Included with Intel C++ compiler and available in GCC 4.9 development branch (with –fcilkplus and the caveat that Cilk_for is not supported yet in a Clang*/LLVM* project at http://cilkplus.github.io/.
  • More information

OpenMP 4.0 (included with Intel C++ compiler)

  • Support for most of the new features in the OpenMP* 4.0 API Specification (user-defined reductions not yet supported)
  • Support for C, C++, and Fortran OpenMP programs on Windows*, Linux*, and OS X*
  • Complete support for industry-standard OpenMP pragmas and directives in the OpenMP 3.1 API Specification
  • Intel-specific extensions to optimize performance and verify intended functionality
  • Intel compiler OpenMP libraries are object-level compatible with Microsoft Visual C++* on Windows and GCC on Linux*

Intel® Math Kernel Library

  • Vectorized and threaded for highest performance using de facto standard APIs for simple code integration
  • C, C++ and Fortran compiler-compatible with royalty-free licensing for low cost deployment
  • More information

Intel® Integrated Performance Primitives

  • Performance: Pre-optimized building blocks for compute-intensive tasks
  • A consistent set of APIs that support multiple operating systems and architectures
    • Windows*, Linux*, Android*, and OS X*
    • Intel® Quark™, Intel® Atom™, Intel® Core™, Intel® Xeon®, and Intel® Xeon Phi™ processors
  • More information

Intel® Threading Building Blocks

  • Rich set of components to efficiently implement higher-level, task-based parallelism
  • Compatible with multiple compilers and portable to various operating systems
  • More information

Intel® Media SDK 2014 for Clients

  • A cross-platform API for developing consumer and professional media applications.
  • Intel® Quick Sync Video: Hardware-accelerated video encoding, decoding, and transcoding.
  • Development Efficiency: Code once now and see it work on tomorrow's platforms.
  • More information

A drop-in addition for C and C++ development

  • Windows*
    • Develop, build, debug and run from the familiar Visual Studio IDE
    • Works with Microsoft Visual Studio* 2008, 2010, 2012 and 2013
    • Source and binary compatible with Visual C++*
  • Linux*
    • Develop, build, debug and run using Eclipse* IDE interface or command line
    • Source and binary compatible with GCC
  • OS X*
    • Develop, build, debug and run from the familiar Xcode* IDE
    • Works with Xcode 4.6, 5.0 and 5.1
    • Source and binary compatible with LLVM-GCC and Clang* tool chains
  • 32-bit and 64-bit development included

  1. Project and source in Visual Studio
  2. C/C++ aware text editor
  3. Debug C/C++ code
  4. Call Stack information
  5. Set breakpoints at certain source lines on IDE.

Outstanding support

One year of support included with purchase – gives you access to all product updates and new versions released in the support period plus access to Intel Premier Support. There's a very active user forum for help from experienced users and Intel engineers

  • 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:

  • Update Now: What’s New in Intel® Compilers and Libraries
  • Performance essentials using OpenMP* 4.0 vectorization with C/C++
  • Intel® Cilk™ Plus Array Notation - Technology and Case Study Beta
  • 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

Featured Articles

Nenhum conteúdo foi encontrado

More Tech Articles

Memory Layout Transformations
Por AmandaS (Intel)Publicado em 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...
Expectations for User Source Code Changes
Por AmandaS (Intel)Publicado em 11/25/20130
Overview Although most codes can run in the Intel® Many Integrated Core Architecture (Intel® MIC Architecture) with little to no changes, to run EFFICIENTLY may require changes in user source code. This chapter examines algorithmic some general topic related to user source code changes that can ...
Getting Started with Intel Compiler Pragmas and Directives
Por AmandaS (Intel)Publicado em 11/25/20130
Compiler Methodology for Intel® MIC Architecture Getting Started with Intel Compiler Pragmas and Directives Overview Compiler options allow a user to control how source files are interpreted and control characteristics of the object files or executables.  Compiler options are applied to an en...
Advanced Optimizations for Intel® MIC Architecture
Por AmandaS (Intel)Publicado em 11/25/20130
Compiler Methodology for Intel® MIC Architecture Advanced Optimizations Overview This chapter details some of the advanced compiler optimizations for performance on Intel® MIC Architecture AND most of these optimizations are also applicable to host applications. This chapter includes topics su...
Assine o Artigos do Espaço do desenvolvedor Intel

Supplemental Documentation

Nenhum conteúdo foi encontrado
Assine o Artigos do Espaço do desenvolvedor Intel

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


Failure when using profile guided optimizations on OSX
Por meldaproduction1
   For the I tried to use profile guided optimizations and after about an hour of compiling (it's a big project), this is what I got:0 0x10da73b51 __assert_rtn + 144 1 0x10dad99fb ld::tool::OutputFile::addressOf(ld::Internal const&, ld::Fixup const*, ld::Atom const**) + 155 2 0x10dadafaf ld::tool::OutputFile::applyFixUps(ld::Internal&, unsigned long long, ld::Atom const*, unsigned char*) + 1663 3 0x10dae03a5 ld::tool::OutputFile::writeAtoms(ld::Internal&, unsigned char*) + 495 4 0x10dad8e4f ld::tool::OutputFile::writeOutputFile(ld::Internal&) + 779 5 0x10dad3551 ld::tool::OutputFile::write(ld::Internal&) + 149 6 0x10da7481a main + 1028 A linker snapshot was created at: /tmp/libMeldaProductionAudioPluginKernel.dylib-2015-03-15-174847.ld-snapshot ld: Assertion failed: (_mode == modeFinalAddress), function finalAddress, file /SourceCache/ld64/ld64-241.9/src/ld/ld.hpp, line 731.For the record, on Windows it works, but the build for generating profile gu...
icpc 16.0 OSX 10.10.3 bug
Por Jamil A.1
 Hi   The following program fails using icpc 16.0 on OSX 10.10.3 cat test.cxx #include <iostream> int main() {  return 1; } Error Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__config(316): internal error: null pointer   #if !(__has_feature(cxx_relaxed_constexpr))                                            ^ compilation aborted for test.cxx (code 4) icpc --version icpc (ICC) 16.0.0 20150325 Copyright (C) 1985-2015 Intel Corporation.  All rights reserved. Thanks  Jamil  
Why doesn't the c++ compiler generate non-temporal moves in this example?
Por rnickb1
I'm running this benchmark with intel c++ compiler 2016 using these flags "icc -std=c++11 -xHost -O3 main.cpp"  #include <chrono> #include <random> #include <iostream> #include <algorithm> using Clock = std::conditional<std::chrono::high_resolution_clock::is_steady, std::chrono::high_resolution_clock, std::chrono::steady_clock>::type; using Scale = std::chrono::nanoseconds; auto rng = std::mt19937{0}; using Scalar = double; std::uniform_real_distribution<Scalar> dist(-1, 1); const int N = 1000000; void kernel1(const std::vector<Scalar>& x, std::vector<Scalar>& y) { #pragma simd for (int i = 0; i < N; ++i) y[i] = x[i] * x[i]; } void kernel2(const Scalar* __restrict x, Scalar* __restrict y) { #pragma simd for (int i = 0; i < N; ++i) y[i] = x[i] * x[i]; } void kernel3(const Scalar* x, Scalar* y) { #pragma simd for (int i = 0; i < N; ++i) y[i] = x[i...
Installing 15.0 update 2 on Centos 6.5 x64
Por James Burgess2
Hi, In previous versions installing icc onto a x64 Centos was a matter of making sure the 32 bit libs were installed. I've just installed compat-libstdc++-296.i686 and compat-libstdc++-33.i686 (with yum) and the installer is still saying "32 bit libraries not found". Does anyone know which rpm(s) icc needs. It is allowing me to click "next", should I just go ahead and do that? Thanks, James  
Intel C++ 2016: Constructor and Destructor in unnamed union will be called.
Por Gomes T.5
class Optional{ public: union { Value m_value; ///< should be uninitialized ! But Intel Compiler will Constructor and Destructor here! }; };Intel C++ 2016 will call Constructor and Destructor for the class inside unnamed union. But this should be deleted and like VS2015 compiler it would be great to get a message about this.
icpc -mmic error; ipo: warning #11010: file format not recognized
Por sun l.2
[root@amax src]# make -f Makefile.pthreads all /opt/intel/bin/icpc -O3 -funroll-loops -opt-prefetch -fpermissive -fno-exceptions -pthread -D_GNU_SOURCE -D__XOPEN_SOURCE=600 -c pthreads.cpp fluid.hpp(403): warning #1875: offsetof applied to non-POD (Plain Old Data) types is nonstandard char padding[CACHELINE_SIZE - (offsetof(struct Cell_aux, padding) % CACHELINE_SIZE)]; ^ pthreads.cpp(279): warning #1875: offsetof applied to non-POD (Plain Old Data) types is nonstandard assert(offsetof(struct Cell_aux, padding) == offsetof(struct Cell, padding)); ^ pthreads.cpp(279): warning #1875: offsetof applied to non-POD (Plain Old Data) types is nonstandard assert(offsetof(struct Cell_aux, padding) == offsetof(struct Cell, padding)); ^ /opt/intel/bin/icpc -O3 -funroll-loops -opt-prefetch -fpermissive -fno-exceptions -pthread -D_GNU_SOURCE -D__XOPEN_SOURCE=600 -c cellpool.cpp fluid.hpp(403): warning #1875: offsetof applied to non-POD (Plain Old Data) types is nonstandard char padding[CACHELINE_S...
FMA illegal instruction
Por unrue6
Dear Intel developers, I'm using Intel 15 on Intel(R) Xeon(R) CPU E5-2670 processor. I have a problem using FMA instrinsic instruction. My compiler flags are -O3 -xHost. Compilation ends well but when I run my program I get: Program Exception - illegal instruction I have to suppose FMA is not available on that processor? If yes, why the compiler does not advice me during compilation phase? Thanks.
Is it a GDB bug or Intel Compiler bug or my code?
Por Ripunjay T.3
I am using Intel's ICC compiler for NetBSD system. I have been fighting with a bug, and got surprised even more when I observed that from the core dump - address of a symbol from two different mechanisms in gdb are not same. The variable connection_out seems to have different address when checked with "info symbol connection_out" and p &connection_out. Does it looks like a compiler problem where a local static variable badf_errcnt which was optimized into CPU registers, is assigned a memory location, and thereafter compiler got confused between two ? I have compiler O2 level optimizations ON. The variable in question is a global static int variable. I don't think pointer aliasing is in its role here as the variable's memory location is being used. I see that the unstripped symbol file also concurs to the address in the disassembled code.   gdb$ disassemble sigusr1_rt Dump of assembler code for function sigusr1_rt:    0x01845000 <+0>:     push   %ebp    0x01845001 <...
Assine o Fóruns

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 worker
Por Haris R.2
Hello, I would like to understand Cilk worker creation a litter better. I am not sure how to phrase this question so I’ll give it my best. I have downloaded Intel Cilk runtime release (cilkplus-rtl-003365 -  released 3-May-2013). I would like to create a new Cilk worker that does not cause cross-threading issues but this new worker would not be a part of the work collective. For example, if I run “CILK_NWORKERS=4 ./fib 30”  This means that runtime created with 4 Cilk workers to execute fib.  When Cilk runtime starts up, I would like to also create a 5th worker that does not participate in stealing and/or executing of fib. This new 5th worker just prints some string every 2 seconds. If I’m not mistaken, worker creation begins in “sysdep-unix.c” in function “create_threads()” From my understanding and the way I have traced worker creation, following takes place: “create_threads()” in invoked from “__cilkrts_start_workers()”from “sysdep-unix.c” “__cilkrts_start_workers()” is invo...
Thread-safety of writing a std::vector
Por Ömer Faruk Kalkan6
Is std::vector support concurrently read - write access for Cilk workers ? And which vector operator should I use ? Now  I'm using like " data [i] = x ;  " for assignment.  
Data race problem
Por Ömer Faruk Kalkan4
P1 and P2 data race problems  are appear when I inspect program . I haven`t got experience about Cilk Plus. I guess error is occur in nested loop . What should I do ? char * primary; char * secondary; primary = ( char * ) malloc (size * 15); secondary = ( char * ) malloc (size); cilk::reducer_opadd<long>number (0); . . . . cilk_for (int i= 0; i < size ; ++i) { cilk_for (int j = 14; j >= 0; --j ) { number += (primary [(14 - j ) + ( i * 15)] * (pow (3 , j ))); } if (secondary [number.get_value ()] == 0) { secondary [number.get_value ()] = 1; } number.set_value (0); } . . . . 
cilk_spawn inside cilk_for
Por Meir F.2
Hi, For some reason, whenever I have a spawn and sync inside a cilk_for it seems as though the spawn does not get recognized.  I end up getting a compile time error of Expected _Cilk_spawn before _Cilk_sync.  As an example consider the following (overly simple) program: void foo(){ cout << "foo"; } void bar(){ cout << "bar"; } void baz(){ cout << "baz"; } int main(){ cilk_for(int i-0; i<10; i++){ cilk_spawn foo(); bar(); cilk_sync; baz(); } }  If I try to compile this I get the above mentioned error.  Does anyone have any idea as to why this might be happening and/or how I can solve it.  (If I move the spawn and sync into a separate helper method it solves the problem, but unfortunately in my real use case it would mean passing a lot of variables by pointer.)  I am using g++ 4.8.1 with cilkplus. Thanks!   - Meir
Cilk™ Plus Trademark License for product distribution
Por Tam N.1
Dear all, I need a help to make clear with my customer about Cilk Plus license. I have bought a license of Intel Parallel Studio XE 2013 (contains Cilk Plus) to develop a product for my customer. Now, my customer want to distribute the product to market. Mustn't my customer need to buy a license because I bought it ? can you give for me some evidences to me negotiate with my customer ? Thanks, Tam Nguyen
sec_implicit_index
Por Tim Prince2
I've been trying to understand what the implicit_index intrinsic may be intended for.  It's tricky to get adequate performance from it, and apparently not possible in some of the more obvious contexts (unless the goal is only to get a positive vectorization report). It seems to be competitive for the usage of setting up an identity matrix. In the context of dividing its result by 2, different treatments are required on MIC and host: #ifdef __MIC__       a[2:i__2-1] = b[2:i__2-1] + c[((unsigned)__sec_implicit_index(0)>>1)+1] * d__[2:i__2-1]; #else       a[2:i__2-1] = b[2:i__2-1] + c[__sec_implicit_index(0)/2+1] * d__[2:i__2-1]; #endif That is, the unsigned right shift is several times as fast as the divide on MIC (and not much slower than plain C code), while the signed divide by 2 is up to 60% faster on host (but not as fast as C code). The only advantage in it seems to be the elimination of a for(), if in fact that is considered to be an advantage. I didn't see documented...
Set Worker on Windows with Intel Core i3
Por Tam N.3
Hi all, I have used Cilk Plus to make my code computing parallel. But PC is installed Windows XP3, Intel Core i3, how many workers should I set to make the best performance for my code ? Thanks of all, Tam Nguyen
Converting Cilkview data to seconds
Por Matthew D.2
Hey folks, I'm working with a system that needs the work and span of the programs I'm running in seconds and nanoseconds to run properly, and running Cilkview on them gives me work and span in processor instructions. Does anyone know of a way to convert that data from instructions to a unit of time? Thanks! Matt
Assine o Fóruns