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

Featured Articles

Nessun contenuto trovato

More Tech Articles

Best Known Method: Coaxing the Compiler to Vectorize Structured Data via Gathers
By TERENCE S. (Intel)Posted 02/22/20130
Best Known Method To help the compiler generate better vector code, sometimes it helps to decompose complex data structures to allow the compiler to understand the available parallelism and vectorize the code.  Vectorizing critical kernels is recommended for improving performance generally but i...
Optimizing Memory Bandwidth on Stream Triad
By Karthik Raman (Intel)Posted 02/19/20135
Download Article Download Optimizing Memory Bandwidth on Stream Triad [PDF 647KB] Overview This document demonstrates the best methods to obtain peak memory bandwidth performance on the Intel® Xeon Phi™ coprocessor using the de facto industry standard benchmark for the measurement of computer ...
Using Guided Auto-Parallelization for Embedded Development
By shenghong-geng (Intel)Posted 02/18/20130
Guided auto-parallelism is a key feature of Intel compiler, to provide advice to improve the performance of code, it is also supported in Eclipse integration for ICC.
Offload Runtime for the Intel® Xeon Phi™ Coprocessor
By CJ Newburn (Intel)Posted 02/08/20130
The Intel® Xeon Phi™ coprocessor platform has a software stack that enables new programming models.  One such model is offload of computation from a host processor to a coprocessor that is a fully-functional Intel® Architecture CPU, namely, the Intel® Xeon Phi™ coprocessor.  The purpose of that o...

Pagine

Iscriversi a

Supplemental Documentation

Nessun contenuto trovato
Iscriversi a

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


Compiler Error With TBB's Atomic.h
By Chris M.2
I am using the latest Intel C++ compiler suite (updated today), and I cannot use the atomics with TBB. I can declare an atomic variable, but I have no access to the various fetch/load/etc. functions because the __TBB_DECL_ATOMIC( ... ) macros throw errors. The compiler complains: 'Error: Pure specifier ('= 0') allowed only on virtual functions' On any lines in 'Atomic.h' that use the macro: __TBB_DECL_ATOMIC( ... ) I am posting this in the Intel Compiler forum because the MSVC compiler works perfectly. What can I do?
Compile errors in MS includes
By Byron H.4
I'm trying to compile the Spec CPU 2006 benchmarks with the Intel compiler, which I'm using for the first time. Apparently it uses headers from MS Visual Studio, but in some cases it can't compile them. The following errors are failing to compile the MS header "yvals.h". Does anyone know why this might not work? Are there other flags I need to pass? icl -Qvc9 -c -FoCompute.obj -DSPEC_CPU -DNDEBUG -DSPEC_CPU_WINDOWS -DWIN32ERFC -QxHOST -Qipo -O3 -Qprec-div- -Qparallel -Qansi-alias -Qopt-prefetch -Qcxx-features -Qauto-ilp32 /TP Compute.C Compute.C C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\yvals.h(666): error: expected a ";" __CLR_OR_THIS_CALL _Lockit(const _Lockit&) = delete; ^ C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\yvals.h(667): error: expected a ";" _Lockit& __CLR_OR_THIS_CALL operator=(const _Lockit&) = delete; ...
“a derived class is not allowed here”
By Raimar S.2
Hi, here is another code snippet which does not compile with ICC (version 14.0.2 on Linux) but does compile with GCC and Clang: template<int N, bool B> struct A; template<int N> struct A<N,false> { template<int M> struct Nested {}; }; template<int N> struct A<N,true> : public A<N,false> {}; template struct A<1,true>::Nested<2>; // explicit instantiationThe error message is: $ icpc -c -std=c++11 testcase.cc testcase.cc(17): error: invalid qualifier for "A<1, false>::Nested<2>" (a derived class is not allowed here) template struct A<1,true>::Nested<2>; ^ compilation aborted for testcase.cc (code 2)I got some help with this code snippet on stackoverflow.com (c.f. http://stackoverflow.com/q/22479641/1132850) and believe this is a compiler bug. Note that instantiating an object instead of explicit instantiation does compile: void foo() { A<1,true>::Nested<...
Eclipse IDE
By srinivasu6
Hi, I came to know that there is Intel® C++ Compiler with the Eclipse* IDE for Linux. Is there any Eclipse IDE for Windows XP/7? If so please provide the link for how to use this. One more query is that whether this Eclipse IDE supports AVX or not and which version of Visual Studio supports AVX/AVX2/AVX-512.
icpc 14.0.2 crash: internal error: assertion failed at: "shared/cfe/edgcpfe/lower_il.c", line 7661
By Raimar S.1
I am using icpc 14.0.2 on Linux, here is a minimal program to reproduce the crash: class A { public: virtual ~A() {} virtual void f() = 0; }; template<typename T> class B : public A { void f(); }; namespace { struct C {}; } template<> void B<C>::f(){}The error message is: testcase.cc(11): internal error: assertion failed at: "shared/cfe/edgcpfe/lower_il.c", line 7661 class B : public A ^ compilation aborted for testcase.cc (code 4)  Note that this compiles just fine (removing the anonymous name space): class A { public: virtual ~A() {} virtual void f() = 0; }; template<typename T> class B : public A { void f(); }; struct C {}; template<> void B<C>::f(){}Please let me know if and how I can further assist to debug this problem. Best regards Raimar
atl projet visual studio 2013 assert error : too many categories defined
By michael.mansion@or2s.fr5
hi When i create a new atl project using visual studio 2013 (without add any code), when i try to compile it with intel c++ XE 14.0 i have this error : Debug Assertion Failed! program : C:\travail\test_atl_2013_intel\x64\D_IC\test_atl_2013_intel.dll file: c:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\atltrace.h Line: 270 Expression: false && "Too many categories defined" i have the same error for an atl old big project when i use visual studio 2013 with the intel c++ XE 14.0 compiler (in visual studio 2012 i don t have this problem...) How to solve it ? Thanks in advance regards Michael  
error when building open-mpi 1.4.5
By Majid Z.1
Hi all intel developers and user I have Parallel studio 2013 XE on ubuntu 13.10 I configure openmpi 1.4.5 with this code : ./configure --prefix=/usr/local/openmpi-1.4.5 CC=icc FC=ifort F77=ifortIt's OK. but when I make with make -j4 I see this error; .libs/mpicxx.o: In function `_GLOBAL__sub_I_mpicxx.cc': mpicxx.cc:(.text.startup+0x24): undefined reference to `__dso_handle' /usr/bin/ld: .libs/mpicxx.o: relocation R_X86_64_PC32 against undefined hidden symbol `__dso_handle' can not be used when making a shared object /usr/bin/ld: final link failed: Bad value collect2: error: ld returned 1 exit status make[2]: *** [libmpi_cxx.la] Error 1 make[2]: Leaving directory `/home/majid/Apps/openmpi-1.4.5/ompi/mpi/cxx' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/majid/Apps/openmpi-1.4.5/ompi' make: *** [all-recursive] Error 1 Please help me to fix this error. Thank you so much Majid
Option cannot change across modules: 0
By Marián "VooDooMan" Meravý6
My environment: ICC 14 Update2, Win 8.1 x64, x64 project build. When I make adjustment to single .cpp file, and hit F5 for build and run, I get message from IPO linker at the end: 1> c_box_container.cpp 1> Option cannot change across modules: 0 1>xilink : error #10014: problem during multi-file optimization compilation (code 1) 1>xilink : error #10014: problem during multi-file optimization compilation (code 1) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== my compile command line from IDE is: /Yu"stdafx.h" /MP /GS- /Qopenmp /GA /debug:expr-source-pos /Qrestrict /Qansi-alias /Qftz /W3 /Qdiag-disable:"809" /QxHost /Zc:wchar_t /I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\" /I"c:\Program Files (x86)\Windows Kits\8.1\Include\um\" /I".\" /I"..\3rd_party\portaudio\include\" /I"..\3rd_party\portaudio\bindings\cpp\include\" /I".\includes\" /I"..\3rd_party\libsndfile\src\" /I"src\" /I"..\3rd_party\freeverb3\" /I"..\3rd_party\...

Pagine

Iscriversi a Forum

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


equivalent for C++ Holders in C programming!
By Alireza R.0
Hello, I was interested to know if there is an C++ holders equivalent for C as well? if not, how could I have the same functionality please?
Cilk array notation prevents gcc auto-vectorization?
By Christopher F.0
Hi all, I am having a problem getting Cilk array notation to play well with Gcc auto-vectorization (i.e., -ftree-vectorize).  For example, (Let's refer to the code snippet at http://www.cilkplus.org/tutorial-add-arrays as copy.c). If I run > gcc -fcilkplus -lcilkrts -Wall -O3 copy.c using "gcc version 4.8.1 20130520 (prerelease) (GCC)" downloaded from https://www.cilkplus.org/download, I get a functionally correct code, but only the reference loop (i.e., for (int i = 0; i < array_size; i++) c[i] = a[i] + b[i]; ) will vectorize (according to both -ftree-vectorizer-verbose=1 and manual assembly inspection).  I am having similar luck when explicitely using -ftree-vectorize without -O3.  I have verified that -O3 is not pruning the loops and the problem is still the same with other vector operators. The simplest problem is of course a missing flag, but I don't see documentation for such a flag (beyond -fcilkplus which is needed for array notation to compile).  Further, it seems tha...
Are threads persistent in CilkPlus?
By leoferres7
Suppose I have a cilk_for that runs its course, and then another one right after it. Do the worker threads die after the first and are pthread_created() for the second one again, or do pthreads get created at the beginning of the process and persist for its whole duration?
Seg Fault with cilk -.-
By Ryan M.15
OK good news finally got my compiler up and linked properly xD. Bad news seg fault -.-. OK I'm using the cpp file of Fibonacci numbers provided by cilkplus.org . So when I go to add the extra arguement ex. ./a.out 2. I get a seg fault -.-. Any ideas. I DID NOT WRITE THE FILE lol. cute_rj@Cute:~/cilk-fib$ which g++/home/cute_rj/gcc-cilk/bin/g++cute_rj@Cute:~/cilk-fib$ g++ -fcilkplus -lcilkrts fib.cpp cute_rj@Cute:~/cilk-fib$ g++ -fcilkplus -lcilkrts fib.cppcute_rj@Cute:~/cilk-fib$ ./a.out 2Segmentation fault (core dumped)cute_rj@Cute:~/cilk-fib$
cilk/cilk.h: no such file or directory
By Ryan M.5
I thought I start a new thread since it doesn't pertain to the bug anymore. I am getting this:  cute_rj@Cute:~/code/src/sort/build$ makeg++ -std=c++0x -O2 -DHAVE_OPENMP=1 -DHAVE_CILKPLUS=1 -fcilkplus -lcilkrts -I.. ../common/test_sort.cpp -ltbb -lgomp -lrt -o test_sort.x../common/test_sort.cpp:9:23: fatal error: cilk/cilk.h: No such file or directory#include <cilk/cilk.h>^compilation terminated.make: *** [test_sort.x] Error 1 and yes my environment variables are set! cute_rj@Cute:~/code/src/sort/build$ echo $PATH/home/cute_rj/gcc-cilk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/gamescute_rj@Cute:~/code/src/sort/build$ echo $LIBRARY_PATH/home/cute_rj/gcc-cilk/libcute_rj@Cute:~/code/src/sort/build$ echo $LD_LIBRARY_PATH/home/cute_rj/gcc-cilk/lib What the heck is going on? -.- lol
Intel User and Reference Guide
By leoferres3
Guys, is there a pdf or a single-page version of the CilkPlus User and Reference Guide? All I can find is this link http://software.intel.com/sites/products/documentation/doclib/stdxe/2013... and I have to navigate the left panel (or I'm geekly-blind and cannot find the link)... I'd just like a single-page with everything on it. Thanks.
last function executed before cilk runtime ends
By Haris R.1
Hello, I’m experimenting with cilk runtime code and I was wondering what is the last function executed before cilk runtime ends. When I run, for example ./fib 30 in linux, what is the last function that executes in cilk runtime assuming execution went without any problems. By last function I mean any code before cilk runtime shuts down properly after ./fib 30 has completed, maybe some sort of cleanup code or some sort of memory free-up or anything in that sort. Thanks for the help or any hints.
Bug appears during "make" of the gcc cilk plus compiler in the objects folder
By Ryan M.11
<p>So when I do make in my objects directory for the cilk plus complier, I have this bug that pops up</p><p>libcommon.a ../libcpp/libcpp.a ../libbacktrace/.libs/libbacktrace.a ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a -o gcov-dump/home/cute_rj/gcc-cilk-obj/./prev-gcc/xg++ -B/home/cute_rj/gcc-cilk-obj/./prev-gcc/ -B/home/cute_rj/gcc-cilk/i686-pc-linux-gnu/bin/ -nostdinc++ -B/home/cute_rj/gcc-cilk-obj/prev-i686-pc-linux-gnu/libstdc++-v3/src/.libs -B/home/cute_rj/gcc-cilk-obj/prev-i686-pc-linux-gnu/libstdc++-v3/libsupc++/.libs -I/home/cute_rj/gcc-cilk-obj/prev-i686-pc-linux-gnu/libstdc++-v3/include/i686-pc-linux-gnu -I/home/cute_rj/gcc-cilk-obj/prev-i686-pc-linux-gnu/libstdc++-v3/include -I/home/cute_rj/gcc-cilk-src/libstdc++-v3/libsupc++ -L/home/cute_rj/gcc-cilk-obj/prev-i686-pc-linux-gnu/libstdc++-v3/src/.libs -L/home/cute_rj/gcc-cilk-obj/prev-i686-pc-linux-gnu/libstdc++-v3/libsupc++/.libs -c -DIN_GCC_FRONTEND -g -O2 -DIN_GCC -fno-exceptions -fno-rtti ...

Pagine

Iscriversi a Forum

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.