Intel Compiler - Polyhedron Software

45
Software & Services Group Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners. Using Intel Compiler in GCC Environment ICC 12.1 for Linux 1/9/2012 1

Transcript of Intel Compiler - Polyhedron Software

Page 1: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Using Intel Compiler in GCC Environment

ICC 12.1 for Linux

1/9/2012 1

Page 2: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Agenda

1. The Compiler

2. Compiler Options

3. Standards

4. Compatibility

5. Compiler Tools to help Visibility

Intel Confidential

2

Page 3: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Question:

What do you expect in a good compiler?

Intel Confidential

3

Page 4: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

In a good compiler …

Intel Confidential

4

Fast performing code

Compatibility

Reliable code

Page 5: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

What?

Intel Confidential

5

/Qms

“allow compilation of certain dubioussources”

n=0 disable Microsoft compatibility bugsn=1 enable most Microsoft

compatibilities (DEFAULT)

n=2 full Microsoft compatibility

Page 6: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

PhasePhasePhasePhase ProductivityProductivityProductivityProductivity ToolToolToolTool FeatureFeatureFeatureFeature BenefitBenefitBenefitBenefit

Advanced Advanced Advanced Advanced Build & Build & Build & Build & DebugDebugDebugDebug

Intel® Composer XEIntel® Composer XEIntel® Composer XEIntel® Composer XE

C/C++ and Fortran compilers, performance libraries, and parallel models

Driving application performance and scalability benefits of multicore and forward scale to manycore. Additionally providing code robustness and security.

Advanced Advanced Advanced Advanced VerifyVerifyVerifyVerify Intel® Intel® Intel® Intel® Inspector XEInspector XEInspector XEInspector XE

Memory & threading error checking tool for higher code reliability & quality

Increases productivity and lowers cost, by catching memory and threading defects early

Advanced Advanced Advanced Advanced TuneTuneTuneTune

Intel® Intel® Intel® Intel® VTuneVTuneVTuneVTuneTMTMTMTM

Amplifier XEAmplifier XEAmplifier XEAmplifier XE

Performance Profiler to optimize performance and scalability

Removes guesswork, saves time, makes it easier to find performance and scalability bottlenecks Combines ease of use with deeper insights.

Intel® Parallel Studio XE 2011Advanced Performance

61/9/2012

Page 7: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

7

Intel® C++ and Fortran Composer XE

1/9/2012 7

Intel® C++ Composer XE 2011 for Linux

Intel® C++ Compiler (ICC) 12.0

Intel® Debugger with parallel debugging support (IDB) 12.0

Intel® Math Kernel Library ( Intel® MKL ) 10.3

Intel® Integrated Performance Primitives (Intel® IPP) 7.0

Intel® Threading Building Blocks (Intel® TBB) 3.0

Intel® Fortran Composer XE 2011 for Linux

Intel® Fortran Compiler ( IFORT) 12.0

Intel® Debugger with parallel debugging support (IDB) 12.0

Intel® Math Kernel Library ( Intel® MKL ) 10.3

Intel® Composer XE for Linux == Intel® C++ Composer XE for Linux & Intel® Fortran Composer XE for Linux

Page 8: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners. 8

Intel® Compiler Architecture

Profiler

C++

Front End

Interprocedural analysis and optimizations: inlining,

constant prop, whole program detect, mod/ref, points-to

Loop optimizations: data deps, prefetch, vectorizer,

unroll/interchange/fusion/dist, auto-parallel/OpenMP

Global scalar optimizations: partial redundancy elim,

dead store elim, strength reduction, dead code elim

Code generation: vectorization, software pipelining,

global scheduling, register allocation, code generation

FORTRAN 2000

Front End

Disambiguation:

types, array,

pointer, structure,

directives

1/9/2012

Page 9: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

2. Compiler Options

HLO

IPO

PGO

Intel Confidential

9

Page 10: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Common Optimization Switches

10

Windows* Linux*

Disable optimization /Od -O0

Optimize for speed (no code size increase) /O1 -O1

Optimize for speed (default) /O2 -O2

High-level optimizer, including prefetch, unroll

/O3 -O3

Create symbols for debugging /Zi -g

Inter-procedural optimization /Qipo -ipo

Profile guided optimization (muli-step build) /Qprof-gen

/Qprof-use

-prof-gen

-prof-use

Optimize for speed across the entire program /fast(same as: /O3 /Qipo /Qprec-div- /QxHost)

-fast (same as: -ipo –O3 -no-prec-div -static -xHost)

OpenMP 3.0 support /Qopenmp -openmp

Automatic parallelization /Qparallel -parallel

Page 11: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

High-Level Optimizer (HLO)

• Compiler switches: /O2, /O3 (Windows*), -O2, -O3 (Linux*)

• Loop level optimizations

– loop unrolling, cache blocking, pre-fetching, …

• More aggressive dependency analysis

– Determines whether or not it‘s safe to reorder or parallelizeinstructions

• Scalar replacement

– Goal is to reduce memory references with register references

11

Page 12: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners. 12

Interprocedural OptimizationsExtends optimizations across file boundaries

Compile & Optimize

Compile & Optimize

Compile & Optimize

Compile & Optimize

file1.c

file2.c

file3.c

file4.c

Without IPO

Compile & Optimize

file1.c

file4.c file2.c

file3.c

With IPO

/Qip, -ip Only between modules of one source file

/Qipo, -ipo Modules of multiple files/whole application

Page 13: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners. 13

Interprocedural Optimizations (IPO) Usage: Two-Step Process

Linking

Linux* icc -ipo main.o func1.o

func2.o

Windows* icl /Qipo main.o func1.o

func2.obj

Pass 1

Pass 2

Intermediate language

(mock) object

executable

Compiling

Linux* icc -c -ipo main.c func1.c

func2.c

Windows* icl -c /Qipo main.c func1.c

func2.c

Page 14: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Profile-Guided Optimizations (PGO)

• Static analysis leaves many questions open for the optimizer like:– How often is x > y– What is the size of count– Which code is touched how often

• Use execution-time feedback to guide (final) optimization

• Enhancements with PGO:– More accurate branch prediction– Basic block movement to improve instruction

cache behavior– Better decision of functions to inline (help IPO)– Can optimize function ordering– Switch-statement optimization– Better vectorization decisions

14

if (x > y) do_this();

elsedo that();

for(i=0; i<count; ++I

do_work();

Page 15: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

PGO Usage: Three Step Process

15

Compile + link to add instrumentationicc -prof_gen prog.c

Execute instrumented programprog.exe (on a typical dataset)

Compile + link using feedbackicc -prof_use prog.c

Dynamic profile: 12345678.dyn

Instrumented executable: foo.exe

Merged .dyn files: pgopti.dpi

Step 1

Step 2

Step 3

Optimized executable:foo.exe

profmerge

Page 16: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

16

Simple PGO Example: Code Re-Order

for (i=0; i < NUM_BLOCKS; i++)

{

switch (check3(i))

{

case 3: /* 25% */

x[i] = 3; break;

case 10: /* 75% */

x[i] = i+10; break;

default: /* 0% */

x[i] = 99; break

}

}

“Case 10” is moved to the beginning – PGO can eliminate most tests&jumps for the common case –

less branch mispredicts

Page 17: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

17

What you should know about PGO

• Instrumentation run can be up to twice as long– In-lining disabled, trace calls overhead

• Sometimes trace-files cannot be found– Looking at right directory ?

– Clean exit() call is necessary to dump info – Debugger can help / break in PGO trace start/end calls

• Benefit depends on control flow structure:

Significant Benefit

Little Benefit

Page 18: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

1/9/2012

18

AutoAutoAutoAuto----Vectorization (IAVectorization (IAVectorization (IAVectorization (IA----32 and Intel32 and Intel32 and Intel32 and Intel® 64): 64): 64): 64): Optimizing Loops with SSE/SSE2/SSE3/SSSE3/SSE4Optimizing Loops with SSE/SSE2/SSE3/SSSE3/SSE4Optimizing Loops with SSE/SSE2/SSE3/SSSE3/SSE4Optimizing Loops with SSE/SSE2/SSE3/SSSE3/SSE4

Your Task: convert this…Your Task: convert this…Your Task: convert this…Your Task: convert this…$ cat w.c

� void work( float* a, float *b, float *c, int MAX) {

� for (int I=0;I<=MAX;I++)

� c[I]=a[I]+b[I]; }

128-bit Registers128-bit Registers

A[0]

B[0]

C[0]

+ + + +

A[1]

B[1]

C[1]

not used not used not used

not used not used not used

not used not used not used

Page 19: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

1/9/2012

19

void work( float* a, float *b, float *c, int MAX) {

� for (int I=0;I<=MAX;I++)

� c[I]=a[I]+b[I]; }

� $ icc w.c -c -xT

� w.c(2) : (col. 3) remark: LOOP WAS VECTORIZED.

AutoAutoAutoAuto----Vectorization (IAVectorization (IAVectorization (IAVectorization (IA----32 and Intel® 64)32 and Intel® 64)32 and Intel® 64)32 and Intel® 64)

128-bit Registers128-bit Registers

A[3] A[2]

B[3] B[2]

C[3] C[2]

+ +

A[1] A[0]

B[1] B[0]

C[1] C[0]

+ +

Page 20: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

1/9/2012

20

Vectorization Report

– “Existence of vector dependence”

– “Non-unit stride used”

– “Mixed Data Types”

– “Condition too Complex”

– “Condition may protect exception”

– “Low trip count”

– “Subscript too complex”

– ‘Unsupported Loop Structure”

– “Contains unvectorizable statement at line XX”

– “Not Inner Loop”

– "vectorization possible but seems inefficient"

– “Operator unsuited for vectorization”

or other countries.

“Loop was not vectorized” because:

Page 21: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

3. Standards

Intel Confidential

21

Page 22: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Compatibility to Standards

Intel® C++ Compiler provides the following language conformances- ANSI/ISO standard for C language compilation

(ISO/IEC9899:1990)

- C99 support only misses ‚long double‘

- ANSI/ISO standard (ISO/IEC 14882:1998) for the C++ language

- AC99

- Many features of proposed C++0x standard

The Fortran Compiler provides the following language conformances- Fortran IV

- Fortran 77 language standard

- Fortran 90 language standard

- Fortran 95 language standard

- Fortran 2003 support almost complete

- Many features of Fortran 2008

22

Page 23: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

C99 Standard Support

The following C99 features are supported in this version of the Intel® C++ Compiler

• Restricted pointers (restrict keyword).• Variable-length Arrays• Flexible array members• Complex number support (_Complex keyword)• Hexadecimal floating-point constants• Compound literals• Designated initializers• Mixed declarations and code• Macros with a variable number of arguments• Inline functions (inline keyword)• Boolean type (_Bool keyword)

Limitations:• long double (128-bit representations) is not supported

23

Page 24: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

C++0x Support

New C++0x features

enabled by switch

/Qstd=c++0x (Windows), -std=c++0x (Linux)

• RVALUE references• Variadic templates • Extern templates • Hexadecimal Floating Constants• Atomic Types• Right angle brackets• Extended friend declarations• Mixed string literal concatenations • Support for long long• Static assertions• Universal character name literals• Strongly-typed enums• Lambda functions• …

24

Page 25: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Fortran 2003/2008 Support

Fortran 2003 implementation almost complete– Added in Composer XE:

– Complete type-bound procedures (GENERIC, OPERATOR,..)

– FINAL procedures

– Bounds remapping on pointer assignments

– Remaining features of F2003 to be done in a later release: – User-defined derived type I/O

– Parameterized derived types

Fortran 2008 features– Coarrays

– DO CONCURRENT

– CONTIGUOUS

– I/O enhancements

– New constants in ISO_FORTRAN_ENV

– New intrinsic functions

– Increase maximum rank from 7 to 31– F2008 requires only 15

25

More Fortran details in a separate training module

Page 26: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

4. Linux Compatibility

(a) Compatibilty to Linux GCC Compiler

(b) Libc \ Kernel Building

Intel Confidential

26

Page 27: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

4. Linux Compatibility

(a) Compatibilty to Linux GCC Compiler

(b) Libc \ Kernel Building

Intel Confidential

27

Page 28: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Compatibility to Linux GNU Compilers

Libraries & “Bin-Utils “• Intel compilers use linker and all other ‘bin-utils’

from Linux – no special version from Intel • Intel compilers use standard library “glibc” as

available on compilation system– Some dependencies to version – see release notes

• For C++, Intel compiler use GNU libstdc++

Compatibility of Fortran compilers • Intel Fortran Compiler for Linux is not binary

compatible with GNU g77 or GNU gfortrancompiler– Many differences too for accepted Fortran

language/standard conformance

28

Page 29: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Compatibility to Linux GNU Compilers

Compatibility between compilers a topic of three levels:

• Compatibility of object code including name mangling

– Since GCC release 3.2, code compiled by ICC and GCC can be mixed without exceptions

• Compiler switches– Main switches of GCC and ICC are identical; both have options

however not available in the other

• Source code – features, syntax and semantic

– for the relevant parts, full compatibility of ICC and GCC – in particular standard conformance ( C and C++ )

– Switch –gcc-version=<n> can enforce specific compatibility to a GCC version <n>

– Samples for differences of ICC/GCC: – Supported C++0x features

– ICC does not support “Nested functions in C” see next slide– White paper on software.intel.com lists all differences

29

Page 30: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Nested Functions Support

• Simple example of a nested function with an uplevelreference:

void foo(int i) {

void bar() {

i = 5;

}

}

• Glibc sources use this feature in about 40 files

• Feature added to icc with support for handling:

– Inline and always_inline attributes for nested functions

– References to parameters of enclosing functions and other uplevel references

– Duplicate nested function names

– Internal linkage properly for nested functions

Page 31: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

ICC Compatibility Options

Intel Confidential

31

-gcc-name=<name>name and location of gcc if not where expected

-gxx-name=<name>name and location of g++ if not where expected

-gcc-version=<version>specify the <version> of gcc compatibility. Default value matches gcc version installed. Major/Minor versions listed but patch levels (i.e. 345) are permissibleExample: -gcc-version=410 -> gcc 4.1.x compatibility

-fabi-version=<val>directs the compiler to select a specific ABI implementation0 - most recent ABI implementation1 - g++ 3.2 compatible ABI implementation2 - most conformant ABI implementation

Page 32: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Installation - Linux Setup

• Command line-driven installer/uninstaller

– Extract file to temp dir and run installer, e.g.:$ cd

$ tar -xzvf l_ccompxe_2011.2.048.tgz

$ cd l_ccompxe_2011.2.048

$ ./install //choose root , sudo root or user installation

.....

$ <installdir> bin/uninstall.sh //root or user uninstall, for example:

$ sudo /opt/intel/composerxe-2011.2.048/bin/uninstall.sh

32

Page 33: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Directory Structure - Linux

• Based on Linux standard guidelines • bin contains compiler source scripts iccvars.(c)sh/ifortvars.(c)sh and symbolic

links to executables that can be invoked by user• The lib, include, ipp, mkl, and tbb directories are symbolic links to directories

with the same name in composerxe and contain the performance library headers and libraries

• man contains man pages for executable commands. It will be a symbolic link to the man structure under composerxe.

• composerxe is a symbolic link pointing to the compilerpro-12.0 directory.• composerxe-2011 is a physical directory containing links to header files and

libraries that are part of the latest Composer XE product configuration.• composerxe-2011.<n>.<bld>, for example composerxe-2011.2.048 is the

directory containing the files from a Composer release. <n> is the update number (starting at 0 for RTM) and <bld> is the build number.

• If /opt is a network drive, symbolic links are created if possible. They may or may not be visible on systems on which the product was not installed.

33

/opt/intel

includebin lib man composerxe-2011

tbbmklipp composerxe-

2011.<n>.<bld>

composerxe licenses

Page 34: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

4. Linux Compatibility

(a) Compatibilty to Linux GCC Compiler

(b) Libc \ Kernel Building

Intel Confidential

34

Page 35: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Overview of GNU/Linux Build Effort

• Linux kernel build using icc

•Glibc build using icc

•Libgcc and libstdc++ builds using icc

• Many other libraries were built with icc without

any issues

Page 36: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

GLIBC \ Kernel Project – Problems Tackled

• Gcc options not supported by icc

• Nested functions support

• Unwinding support differences between gcc and icc

• Exception handling differences between gcc and icc

• Support for variadic templates

• Driver support for warnings, options, message strings

• Thread local storage issue

• Asm label declarations

• Hidden/Static/Weak symbols handling differences

Most issues related to gcc-compatibility features

Page 37: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Summary and Future Work

• Significant improvements made in gcc-compatibility features as part of this effort

• Lot more work remains to be done

– Changing particular versions brings in new issues

– Build latest version of libstdc++

• Aim to build a full GNU/Linux distribution using icc

– Intel64 (for performance)

– Atom/Meego

Page 38: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

5. Compiler Tools to help Visibility

Intel Confidential

38

Page 39: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Loop ProfilerIdentify Time Consuming Loops/Functions

• Compiler switch: /Qprofile-functions, -profile-functions

– Insert instrumentation calls on function entry and exit points to collect the cycles spent within the function.

• Compiler switch: /Qprofile-loops=<inner|outer|all>,

-profile-loops= <inner|outer|all>

– Insert instrumentation calls for function entry and exit points as well as the instrumentation before and after instrument able loops of the type listed as the option’s argument.

• Loop Profiler switches trigger generation of text (.dump) and XML (.xml) output files– Invocation of XML on command line:

java -jar loopprofviewer.jar <xml datafile>

39

Page 40: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Loop Profiler Text Dump (.dump file)

40

Page 41: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Loop Profiler Data Viewer GUI (copy from sl. 46)

41

Page 42: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

42

Intel® Code Coverage Tool

Example of code coverage summary for a project. The workload applied in this test exercised 34 of 143 blocks, representing 5 of 19 functions in 2 of 3 modules. In the file, SAMPLE.C, 4

of 5 functions were exercised

Clicking on SAMPLE.C produces a listing that highlights the code

that was exercised. In this example, the pink-highlighted code was never exercised, the

yellow was run but not exercised by any of the tests set up by the

developer and the beige was partially covered.

Page 43: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Optimization Notice

43

Optimization Notice

Intel compilers, associated libraries and associated development tools may include or utilize options that optimize for instruction sets that are available in both Intel and non-Intel microprocessors (for example SIMD instruction sets), but do not optimize equally for non-Intel microprocessors. In addition, certain compiler options for Intel compilers, including some that are not specific to Intel micro-architecture, are reserved for Intel microprocessors. For a detailed description of Intel compiler options, including the instruction sets and specific microprocessors they implicate, please refer to the “Intel Compiler User and Reference Guides” under “Compiler Options." Many library routines that are part of Intel compiler products are more highly optimized for Intel microprocessors than for other microprocessors. While the compilers and libraries in Intel compiler products offer optimizations for both Intel and Intel-compatible microprocessors, depending on the options you select, your code and other factors, you likely will get extra performance on Intel microprocessors.Intel compilers, associated libraries and associated development tools may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include Intel Streaming SIMD Extensions 2 (Intel SSE2), Intel Streaming SIMD Extensions 3 (Intel SSE3), and Supplemental Streaming SIMD Extensions 3 (Intel SSSE3) instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors.While Intel believes our compilers and libraries are excellent choices to assist in obtaining the best performance on Intel and non-Intel microprocessors, Intel recommends that you evaluate other compilers and libraries to determine which best meet your requirements. We hope to win your business by striving to offer the best performance of any compiler or library; please let us know if you find we do not.

Notice revision #20110228

Page 44: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Legal Disclaimer

44

INFORMATION IN THIS DOCUMENT IS PROVIDED “AS IS”. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. INTEL ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO THIS INFORMATION INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.

Performance tests and ratings are measured using specific computer systems and/or components and reflect the approximate performance of Intel products as measured by those tests. Any difference in system hardware or software design or configuration may affect actual performance. Buyers should consult other sources of information to evaluate the performance of systems or components they are considering purchasing. For more information on performance tests and on the performance of Intel products, reference www.intel.com/software/products.

BunnyPeople, Celeron, Celeron Inside, Centrino, Centrino Atom, Centrino Atom Inside, Centrino Inside, Centrino logo, Cilk, Core Inside, FlashFile, i960, InstantIP, Intel, the Intel logo, Intel386, Intel486, IntelDX2, IntelDX4, IntelSX2, Intel Atom, Intel Atom Inside, Intel Core, Intel Inside, Intel Inside logo, Intel. Leap ahead., Intel. Leap ahead. logo, Intel NetBurst, Intel NetMerge, Intel NetStructure, Intel SingleDriver, Intel SpeedStep, Intel StrataFlash, Intel Viiv, Intel vPro, Intel XScale, Itanium, Itanium Inside, MCS, MMX, Oplus, OverDrive, PDCharm, Pentium, Pentium Inside, skoool, Sound Mark, The Journey Inside, Viiv Inside, vPro Inside, VTune, Xeon, and Xeon Inside are trademarks of Intel Corporation in the U.S. and other countries.*Other names and brands may be claimed as the property of others.

Copyright © 2011. Intel Corporation.

http://intel.com/software/products

Intel Confidential

Page 45: Intel Compiler - Polyhedron Software

Software & Services Group

Developer Products Division Copyright© 2011, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.