Intel® C++ Compiler 17.0 for Windows* Release Notes for Intel Parallel Studio XE 2017
This document provides a summary of new and changed product features and includes notes about features and problems not described in the product documentation.
Please see the licenses included in the distribution as well as the Disclaimer and Legal Information section of these release notes for details. Please see the following links for information on this release of the Intel® C++ Compiler 17.0
- Change History
- System Requirements
- How to Use
- Documentation
- Japanese Language Support
- Intel-provided debug solutions
- Samples
- Technical Support
- New and Changed Features In 17.0
- Support Deprecated
- Support Removed
- Known Limitations
- Disclaimer and Legal Information
Change History
Changes in Update 6 (Intel® C++ Compiler 17.0.5)
- Various fixes for improved performance and stability
Changes in Update 4 (Intel® C++ Compiler 17.0.5)
- New -qopt-zmm-usage option
- Fixes for reported problems
Changes in Update 3 (Intel® C++ Compiler 17.0.4)
- Microsoft Visual Studio 2017* support added
- Updated Japanese Localization
- Fixes for reported problems
No Update 3 Release
- There was no Update 3 Release
Changes in Update 2 (Intel® C++ Compiler 17.0.2)
- Fixes for reported problems
Changes in Update 1 (Intel® C++ Compiler 17.0.1)
- First update with Localized Intel compiler documentation and diagnostic messages in Japanese language
- Fixes for reported problems
Visual Studio Integration Support
Microsoft Visual Studio 2017* Support
Integration support for Intel® C++ compiler added for Microsoft Visual Studio 2017*. Refer to System Requirements for additional information.
Microsoft* Visual Studio 2010* is no longer supported and Visual Studio 2012* support is deprecated
- In the 16.0 version Visual Studio 2010* support is deprecated; the support of Visual Studio 2010* is removed in 17.0 release.
- The support of Visual Studio 2012* is deprecated.
Changes since Intel® C++ Compiler 16.0 (New in Intel® C++ Compiler 17.0)
- The use of long double functions is now supported on Windows through the inclusion of "math.h"
- new cpu name "mic_avx512" added for 2nd generation Intel® Xeon Phi™ processor family
- Some Intel C++ Compiler Header Files Moved to a Subfolder in 17.0 RTM
- SIMD Data Layout Templates (SDLT) for n-Dimentional Data Array Support in 17.0 RTM
- Support for more new features in OpenMP* 4.0 or later
- New Intel® Xeon Phi™ offload features
- Annotated source listing
- New attribute, pragma, and compiler options for code alignment
- C++14 features supported
- C11 features supported
- New and changed compiler options
- Change in defualt behavior of offload DEFAULTMAP
- OpenMP* helper thread removed
System Requirements
- A PC based on an Intel® 64 architecture processor supporting the Intel® Streaming SIMD Extensions 2 (Intel® SSE2) instructions (Intel® 2nd Generation or newer Generation of Intel® Core™ i3, i5, or i7 processors and Intel® Xeon® E3 or E5 processor family, or compatible non-Intel processor)
- 2GB of RAM (4GB recommended)
- 4GB free disk space for all features
- For Intel® MIC Architecture development/testing:
- Intel® Xeon Phi™ coprocessor
- Intel® Manycore Platform Software Stack (Intel® MPSS)
- Debugging of offload code requires Microsoft Visual Studio* 2012 or above
- For offload to or native support for Intel® Graphics Technology development/testing
- The following processor models are supported:
- Intel® Xeon® Processor E3-1285 v3 and E3-1285L v3 (Intel® C226 Chipset) with Intel® HD Graphics P4700
- 5th Generation Intel® Core™ Processors with Intel® Iris™ Pro Graphics, Intel® HD Graphics
- 4th Generation Intel® Core™ Processors with Intel® Iris™ Pro Graphics, Intel® Iris™ Graphics or Intel® HD Graphics 4200+ Series
- Please note: Intel® Xeon® processors are only supported with the chipsets listed. Intel® Xeon® configurations with other chipsets are not supported. Previous generations of Intel® Core™ processors are not supported. Intel® Celeron and Intel® Atom™ processors are also not compatible.
- The latest 32-bit or 64-bit graphics driver with support for Intel® Graphics Technology (available at the Download Center)
- A version of binutils (specifically 2.24.51.20131210) for Windows (available at http://intel.ly/1fHX7xO)
- Note that after installing binutils, you will need to set your PATH to include the directory containing ld.exe.
- The following processor models are supported:
- Microsoft Windows 7* (SP1), Microsoft Windows 8*, Microsoft Windows 8.1*, Microsoft Windows 10*, Microsoft Windows Server 2008 (R2 SP1), Microsoft Windows HPC Server 2008 (R2)*, or Microsoft Windows Server 2012 (R2)* (embedded editions not supported) [1]
- On Microsoft Windows 8, Microsoft Windows 8.1, and Microsoft Windows Server 2012, the product installs into the "Desktop" environment. Development of "Windows 8 UI" applications is not supported. [2]
- To use the Microsoft Visual Studio development environment or command-line tools to build IA-32 or Intel® 64 architecture applications, one of:
- Microsoft Visual Studio 2017* Professional Edition (or higher edition) with 'Desktop development with C++' component installed
- Microsoft Visual Studio 2015* Professional Edition (or higher edition) with 'Common Tools for Visual C++ 2015' component installed [3]
- Microsoft Visual Studio Community 2015* with 'Common Tools for Visual C++ 2015' component installed [3]
- Microsoft Visual Studio 2013* Professional Edition (or higher edition) with C++ component installed
- Microsoft Visual Studio Community 2013* with C++ component installed
- Microsoft Visual Studio 2012* Professional Edition (or higher edition) with C++ component installed
- To use command-line tools only to build IA-32[1] architecture applications, one of:
- Microsoft Visual C++ Express 2015 for Windows Desktop*
- Microsoft Visual C++ Express 2013 for Windows Desktop*
- Microsoft Visual C++ Express 2012 for Windows Desktop*
- To use command-line tools only to build Intel® 64 architecture applications, one of:
- Microsoft Visual C++ Express 2015 for Windows Desktop*
- Microsoft Visual C++ Express 2013 for Windows Desktop*
- Microsoft Visual C++ Express 2012 for Windows Desktop*
- Microsoft Windows* Software Development Kit for Windows 8*
- To read the on-disk documentation, Adobe Reader* 7.0 or later
Notes
- Applications can be run on the same Windows versions as specified above for development. Applications may also run on non-embedded 32-bit versions of Microsoft Windows earlier than Windows XP, though Intel does not test these for compatibility. Your application may depend on a Win32 API routine not present in older versions of Windows. You are responsible for testing application compatibility. You may need to copy certain run-time DLLs onto the target system to run your application.
- The Intel® C++ Compiler does not support development of Windows 8* UI apps. We are always interested in your comments and suggestions. For example, if you want to use the Intel® C++ Compiler or other Intel software development capabilities in Windows 8 UI apps, please file a request at Intel® Premier Support (https://premier.intel.com/).
- To use the Intel® C++ Compiler with Microsoft Visual Studio 2015*, it is necessary to install the 'Common Tools for Visual C++ 2015' component from Visual Studio. This article explains how.
Intel® Manycore Platform Software Stack (Intel® MPSS)
The Intel® Manycore Platform Software Stack (Intel® MPSS) may be installed before or after installing the Intel® C++ Compiler.
Using the latest version of Intel® MPSS available is recommended. It is available from the Intel® Software Development Products Registration Center at https://lemcenter.intel.com as part of your Intel® Parallel Studio XE for Windows* registration.
Refer to the Intel® MPSS documentation for the necessary steps to install the user space and kernel drivers.
How to use the Intel® C++ Compiler
Parallel studio XE 2017: Getting started with the Intel® C++ Compiler 17.0 for Windows* at <install-dir>\documentation_2017\en\compiler_c\ps2017\get_started_wc.htm. contains information on how to use the Intel® C++ Compiler from the command line and from Microsoft Visual Studio*.
Documentation
Product documentation is linked from <install-dir>\documentation_2017\en\compiler_c\ps2017\get_started_wc.htm.
Online Help format in Microsoft Visual Studio*
The online help format is browser-based. When you view Intel documentation from the Microsoft Visual Studio* Help menu, or when you view context-sensitive help using F1 or a help button in a dialog box or other GUI element, your default browser shows the corresponding help topic. You may encounter some minor functionality issues depending on your default browser. Known issues include:
- When Set Help Preference is set to Launch in Browser and you hit F1 in Tools>Options>F# Tools or Tools>Options>Intellitrace, the browser appears twice.
- Chrome*: When arriving at a topic from Search or Index, the Table of Contents (TOC) does not sync, nor does the Sync TOC link work.
- Firefox*: The TOC loses context easily. Search is case sensitive.
- Safari*: Response on Windows* is slow.
Documentation Viewing Issue with Microsoft Internet Explorer* 10 and Windows Server* 2012
If on Windows Server 2012 you find that you cannot display help or documentation from within Internet Explorer 10, modifying a security setting for Microsoft Internet Explorer* usually corrects the problem. From Tools > Internet Options > Security, add "about:internet" to the list of trusted sites. Optionally, you can remove "about:internet" from the list of trusted sites after you finish viewing the documentation.
Documentation viewing Issue with Microsoft Visual Studio 2012 and Windows Server 2012
If on Windows Server 2012* you find that you cannot display help or documentation from within Visual Studio 2012, modifying a security setting for Microsoft Internet Explorer* usually corrects the problem. From Tools > Internet Options > Security, change the settings for Internet Zone to allow "MIME Sniffing" and "Active Scripting".
Japanese Language Support
Intel® compilers optionally provide support for Japanese language users when the combined English-Japanese product is installed. Error messages, visual development environment dialogs and some documentation are provided in Japanese in addition to English. By default, the language of error messages and dialogs matches that of your operating system language selection. Japanese-language documentation can be found in the ja subdirectory for documentation.
Japanese language support is not provided with every update of the product.
If you wish to use Japanese-language support on an English-language operating system, or English-language support on a Japanese-language operating system, you will find instructions at Changing Language Setting to see English on a Japanese OS environment or Vice Versa on Windows*.
Intel-provided debug solutions
- Intel®-provided debug solutions are based GNU* GDB. Please see Intel® Parallel Studio XE 2017 Composer Edition C++ - Debug Solutions Release Notes for further information.
Samples
Product samples are now available online at Intel® Software Product Samples and Tutorials
Technical Support
If you did not register your compiler during installation, please do so at the Intel® Software Development Products Registration Center at https://lemcenter.intel.com. Registration entitles you to free technical support, product updates and upgrades for the duration of the support term.
For information about how to find Technical Support, Product Updates, User Forums, FAQs, tips and tricks, and other support information, please visit: http://www.intel.com/software/products/support/
Note: If your distributor provides technical support for this product, please contact them for support rather than Intel.
New and Changed Features
The following features are new or significantly enhanced in this version. For more information on these features, please refer to the documentation.
The use of long double functions is now supported on Windows through the inclusion of "math.h"
An Intel "math.h" file is added to Intel C++ Compiler 17.0 for Windows and Intel Visual Fortran Compiler 17.0 for Windows to support long double functions and to avoid incompatibility with Microsoft* Visual C++ long double support when calling long double functions using "math.h" instead of "mathimf.h".
Please refer to the Intel® C++ Compiler 17.0 User's Guide for more detailed information.
new cpu name "mic_avx512" added for 2nd generation Intel® Xeon Phi™ processor family
The new cpu name is "mic_avx512" for 2nd generation Intel® Xeon Phi™ processor family with support for Intel® Advanced Vector Extensions 512 (Intel® AVX-512) Foundation instructions, Intel® AVX-512 Conflict Detection instructions, Intel® AVX-512 Exponential and Reciprocal instructions, Intel® AVX-512 Prefetch instructions for Intel® processors, and Intel® Advanced Vector Extensions 2 (Intel® AVX2) including the RDSEED and Multi-Precision Add-Carry Instruction Extensions (ADX) instructions.
For details about the new cpu name usage, see the Intel® C++ Compiler 17.0 User's Guide.
Some C++ Compiler Header Files Moved to a Subfolder
A list of compiler header files are moved to a subfolder of existing include folder. There is no change needed to source code that uses the C++ Compiler headers. The new subfolder will be searched during compilation automatically by the compiler driver.
- For C++ AOS layout, there is no existing language extensions for programmers to annotation the AOS->SOA conversion to minimize gather/scatter generation while vectorizing the SIMD loop/functions.
- SDLT primitive template V2 supports n-D Containers; it is designed and implemented by using C++11 feature which supports a set of primitives/methods to convert n-D AOS layout to n-D SOA layout.
Support for more new features from OpenMP* 4.0 or later
- Support for #pragma omp for linear (list [ : linear-step ])
- where list is either list or modifier(list)
- Support for ref, val, and uval modifiers for the linear clause
- Examples: linear(ref(p)), linear(val(i):1), linear(uval(j):1)
- Support for #pragma omp simd simdlen(n)
- Support for #pragma omp ordered [simd]
- Reductions over whole arrays: int x[n]; #pragma omp simd reduction(+:x)
- Intel® processor clause extension added to #pragma omp declare simd (proposed; not officially part of OpenMP* 4.5)
- support for clauses
SIMD
andNONMONOTONIC
modifiers for#pragma omp for schedule :
- The Intel® C++ Compiler 17.0 include
SIMD
andNONMONOTONIC
modifiers extenstion to schedule clause to enhance user control of how interations of the for loop are divided among threads of team. See the Intel® C++ Compiler User’s Guide for more details.
- The Intel® C++ Compiler 17.0 include
- support for array sections as list items in the reduction clause
reduction(reduction-identifier:list)
If a list item is an array section, it is treated as if reduction clause is applied to each seperate element of the section. The elements of the private array sections will be allocated contiguously
New Intel® Xeon Phi™ offload features
- OpenMP* 4.5 clause changes
- for combined or composite constructs, the if clause now supports a directive name modifier:
- if([directive-name-modifier :] scalar-expression) the if clause only applies to the semantics of the construct named by directive-name-modifier if specified; otherwise it applies to all constructs to which an if clause can apply. Example: #pragma omp target parallel for if(target : do_offload_compute)
- use_device_ptr(list) clause now implemented for #pragma omp target data
- is_device_ptr(list) clause now implemented for #pragma omp target
- for combined or composite constructs, the if clause now supports a directive name modifier:
- Support for combined target constructs:
- #pragma omp target parallel
- #pragma omp target parallel for
- #pragma omp target simd
- #pragma omp target parallel for simd
- Support for new device memory APIs:
- void* omp_target_alloc()
- void omp_target_free()
- int omp_target_is_present()
- This feature annotates source files with compiler optimization reports. The listing format may be specified as either text or html. The location where the listing appears can be specified as the caller site, the callee site, or both sites.
New attribute, pragma, and compiler options for code alignment
- New attribute __attribute__((code_align(n))) is provided to align functions to a power-of-two byte boundry n
- New pragma #pragma code_align [(n)] is provided to align the subsequent loop head to a power-of-two byte boundry n
- New compiler option /Qalign-loops[:n] is provided to align all loops to a power-of-two byte boundry n, or to provide no special alignment for loops /Qalign-loops- (the default).
The Intel® C++ Compiler 17.0 supports the following features under the /Qstd=c++14 (Windows*) or -std=c++14 (Linux*/OS X*) options:
- Support C++14 variable templates (N3651)
- Support C++14 relaxed (aka extended) constexpr (N3652)
- Support C++14 sized deallocation (N3663)
- Please see C++14 Features Supported by Intel® C++ Compiler for an up-to-date listing of all supported features, including comparisons to previous major versions of the compiler.
The Intel® C++ Compiler supports the C11 features under the /Qstd=c11 (Windows*) or -std=c11 (Linux*/OS X*) options:
- Support for all C11 features except C11 keyword _Atomic and __attribute((atomic))
- Please see C11 Support in Intel® C++ Compiler for an up-to-date listing of all supported features, including comparisons to previous major versions of the compiler.
New and Changed Compiler Options
For details on these and all compiler options, see the Compiler Options section of the Intel® C++ Compiler 17.0 User's Guide.
- /fp:consistent Enables consistent, reproducible results for different optimization levels or between different processors of the same architecture.
- /guard:keyword Enables the control flow protection mechanism.
- /MP-force Disables the default heuristics used when compiler option /MP is specified. This lets you control the number of processes spawned.
- /Qalign-loops[:n] Aligns loops to a power-of-two byte boundary.
- /Qopt-report-annotate Enables the annotated source listing feature and specifies its format.
- /Qopt-report-annotate-position Enables the annotated source listing feature and specifies the site where optimization messages appear in the annotated source in inlined cases of loop optimizations.
- /Zo[-] Enables generation of enhanced debugging information for optimized code.
For a list of deprecated compiler options, see the Compiler Options section of the Intel® C++ Compiler 17.0 User's Guide.
Change in defualt behatviour of offload DEFAULTMAP
DEFAULTMAP (TOFROM:SCALAR)
Local scalars do not offload by default, need “default map: scalar” clause
Causes a scalar variable to be treated as if it appeared in a MAP
clause with a map-type of TOFROM
. If this clause is not specified, a scalar variable is not mapped; instead it has an implicit attribute of FIRSTPRIVATE
. At most one DEFAULTMAP
clause can appear in the directive.
The OpenMP* monitor thread which was used for book-keeping during program execution has been removed. However, the thread itself is user-visible with Vtune or other tools.
You can tune the zmm code generation done by the compiler with the new additional option -qopt-zmm-usage:low|high. The argument value of low provides a smooth transition experience from - Intel® Advanced Vector Extensions 2 (Intel® AVX2) ISA to Intel® Advanced Vector Extensions 512 (Intel® AVX-512) ISA on a Intel® Xeon® Platinum processor (formerly code name Skylake), such as for enterprise applications. Tuning for ZMM instruction use via explicit vector syntax such as #pragma omp simd simdlen() is recommended. The argument value of high is recommended for applications, such as HPC codes, that are bounded by vector computation to achieve more compute per instruction through use of the wider vector operations. The default value is low for Skylake server microarchitecture-family compilation targets and high for Intel® Core™ /Intel® Many Integrated Core Architecture (Intel® MIC Architecture) Intel® AVX-512 combined compilation targets.
Support Deprecated
Microsoft Visual Studio 2012* support is deprecated
Support for Microsoft Visual Studio 2012* is deprecated in this release and will be removed in a future version.
Support Removed
GFX offload support for 3rd Generation Intel® Core™ Processors is not supported
GFX offload support to processor graphics for 3rd Generation Intel® Core™ Processors has been removed in Intel® C++ Compiler 17.0.
Support for Microsoft Visual Studio 2010* has been removed
Support for Microsoft Visual Studio 2010* has been removed
Support for installation on IA-32 hosts has been removed
Support for installation on IA-32 hosts has been removed. Support for generating code for 32-bit targets is supported on 64-bit hosts (only) via compiler option /Qm32
_GFX_enqueue has been removed and should be replaced with _GFX_offload
Known Limitations
Debugging offload code targeting the Intel® Xeon Phi™ coprocessor under Microsoft Visual Studio 2015*
known compiler defect with translating the /ZI
option inhibits generation of debug symbol information necessary for debugging offload code targeting the Intel® Xeon Phi™ coprocessor. The lack of debug symbol information can lead to unexpected debugger behavior for offloaded code, such as not stopping at breakpoints, or an inability to inspect details of certain program variables. Other debugger abnormalities may also occur in absence of this debug symbol information.
This issue only occurs with use of the /ZI
option on the compiler command-line or under Microsoft Visual Studio 2015* under the setting for Properties > C/C++ > General > Debug Information Format
. To avoid this issue use /Zi
for this property setting or on the compiler command-line. Other supported versions of Microsoft Visual Studio*are unaffected.
The warning message "warning #10373: option '
" /ZI
' does not match with a Linux option
The above warning message "warning #10373: option '
" is issued when compiling offload code targeting the Intel® Xeon Phi™ coprocessor using /ZI
' does not match with a Linux option/ZI
The compiler option /ZI
is not translated properly for compilation of offloaded code and generates a compile-time warning, icl: warning #10373: option '/ZI
' does not match with a Linux option
This warning should not be ignored due to impacts on debugging offloaded code. Use the /Zi
option as an alternative to avoid the warning and enable generating debug symbol information necessary for debugging offloaded code. Under Microsoft Visual Studio 2015*, refer to the setting under Properties > C/C++ > General > Debug Information Format
.
Pointer Checker requires a dynamic runtime library
When using the /Qcheck-pointers option, the runtime library libchkp.dll must be linked in. When using options like /MD with /Qcheck-pointers, be aware that this dynamic library will be linked in regardless of your settings. See the article at http://intel.ly/1jV0eWD for more information.
Intel® Compiler Help Documentation fails to launch from IDE when installed on Japanese version of Windows*
In some cases, custom installations of Intel(R) Parallel Studio XE 2017 on Japanese versions of Windows will cause Intel compiler Help documentation to fail to launch from the Microsoft Visual Studio* IDE. Details describing this issue can be found here.
Some multi-pane documents do not display correctly in the Visual Studio* internal browser
There is a limitation of Visual Studio* internal browser that some multi-pane documents do not display correctly, the table of contents appears in the left pane, but the right pane does not display any content.
Workaround: Access the same documentation from the Visual Studio Help menu.
Mixed Microsoft* / Intel compilation of 256 vector bit type parameters may generate code that causes an access violation at runtime
A general protection fault caused by an unaligned data access may occur when an application is built using two different compilers - the Microsoft Visual C++ 2013* compiler and the Intel® C++ Compiler 15.0 or above. The problem may arise when 256 vector bit type parameters are passed by reference in a call, when the caller is built with Visual C++*, and the parameters are accessed by functions built with the Intel C++ Compiler.
The problem arises due to a mismatch in the alignment of the 256 vector bit type parameters.
This problem will not occur when the /Qx<code> compiler option is used with <code> equal to AVX or with a newer code value, such as CORE-AVX-I, CORE-AVX2, etc., due to the fact that unaligned access instructions are used in these instances unless __mm256_stream_* (non-temporal data load/store intrinsics) are used explicitly in the application source code.
- Intel® C++ and Fortran compilers integration into Visual Studio 2017 for 17.0 update 4 .
- Base platform toolset functionality is limited in VS2017. Available base platform toolsets are v141 and v141_xp. If you want to use older build environment like v140, v140_xp, v120, v120_xp, install Intel® C++ compiler integration into corresponding version of Visual Studio and build project from it or use Base platform toolset functionality from older supported versions of Visual Studio.
- If Intel C++ Compiler platform toolset is used for Microsoft Visual Studio 2017 project but some files are selected to be compiled with Microsoft Visual C++ compiler, you can face the problem with missed include files. For example:” fatal error C1083: Cannot open include file: 'vcruntime.h': No such file or directory” To workaround this, please put “$(VCInstallDir)Tools\MSVC\$(VCToolsVersion)\include\;$(VCInstallDir)Tools\MSVC\$(VCToolsVersion)\atlmfc\include\” to Project->Properties->C/C++->General -> Additional Include Directories
- On Japanese system Fortran project categories are not localized in New Project wizard.
- Using Intel C++ Projects with a Source Control System
If your Microsoft Visual Studio* project is managed under a source control system, for example, Microsoft Visual Source Safe* or Microsoft Visual Studio Team Foundation Server*, there are additional steps you must follow in order to use the Intel C++ project system with your project. A detailed article on this topic is available at http://intel.ly/pImnpo
- MSVCP90D.dll (or other Microsoft runtime DLL) is missing
There are situations where the sample projects provided (or any Microsoft Visual C++* project potentially) could run into a runtime System Error where the application cannot find a Microsoft Visual Studio* runtime DLL. This is related to manifest files and SXS assemblies potentially missing. The simplest solution is to go to your redist directory for the version of Microsoft Visual Studio* you are using (default location would be c:\program files[ (x86)]\Microsoft Visual Studio X.X\VC\redist). There will be several subdirectories under this location, sorting files out by amd64, x86 or Debug_NonRedist (if you have D in the runtime name, this usually indicates a Debug library found in this folder). Find the appropriate folder that contains the runtime you are looking for, and then copy the entire contents of that folder (including a .manifest file) to the directory where the .exe you are trying to run is located. - Context sensitive (F1) Help issue with Microsoft* Edge*
- If Microsoft* Edge* is set as the default browser for Microsoft* Visual Studio*, context-sensitive (also known as F1) calls to a specific feature/function will open the title page of the corresponding document instead of the topic related to the feature/function description. Allow correct behavior by changing Microsoft* Visual Studio* settings to use a different default browser.
- The Intel® C++ Compiler IDE integration into Visual Studio 2015* update 1 has an issue with the link to the Code Coverage report in the output window. Only the part before the first space in the path is included in the link:
- Code Coverage log was saved at "file:\\C:\Users\Documents\Visual Studio 2015\Projects\ConsoleApplication6\ConsoleApplication1\x64\Release\CCovLog.html"
- To work around this issue, copy the link from the output window and open it on the file system.
Known Issues with Intel® Many Integrated Core Architecture (Intel® MIC Architecture)
- Limitations of _Cilk_shared
- A virtual base class may not have the _Cilk_shared attribute
- A class with the _Cilk_shared attribute may not be derived from multiple base classes (multiple inheritance is disallowed)
- A class with the _Cilk_shared attribute may not define a virtual destructor
- A class with the _Cilk_shared attribute, if used as a base class of another _Cilk_shared class, must be rounded up to be a multiple of 8 in size by the programmer (by adding dummy fields as needed)
- _Cilk_offload may not be used in a program that uses shared libraries (DLLs)
- Using offload code in shared libraries requires main program to be linked with /Qoffload=mandatory or /Qoffload=optional option
There is initialization required for offload that can only be done in the main program. For offload code in shared libraries, this means that the main program must also be linked for offload so that the initialization happens. This will happen automatically if the main code or code statically linked with the main program contains offload constructs. If that is not the case, you will need to link the main program with the /Qoffload=mandatory or /Qoffload=optional compiler options. - *MIC* tag added to compile-time diagnostics
The compiler diagnostics infrastructure is modified to add an additional offload *MIC* tag to the output message to allow differentiation from the target (Intel® MIC Architecture) and the host CPU compilations. The additional tag appears only in the target compilation diagnostics issued when compiling with offload extensions for Intel® MIC Architecture.
In the examples below the sample source programs trigger identical diagnostics during both the host CPU and Target Intel® MIC Architecture compilations; however, some programs will generate different diagnostics during these two compilations. The new tag permits easier association with either the CPU or Target compilation
$ icl -c sample.c
sample.c(1): warning #1079: *MIC* return type of function "main" must be "int;
void main()
^
sample.c(5): warning #120: *MIC* return value type does not match the function type
return 0;
^
sample.c(1): warning #1079: return type of function "main" must be "int"
void main()
^
sample.c(5): warning #120: return value type does not match the function type
return 0;
- Runtime Type Information (RTTI) not supported
Runtime Type Information (RTTI) is not supported under the Virtual-Shared memory programming method; specifically, use of dynamic_cast<> and typeid() is not supported.
- Direct (native) mode requires transferring runtime libraries like libiomp5.so to coprocessor
The Intel® Manycore Platform Software Stack (Intel® MPSS) no longer includes Intel compiler libraries under /lib, for example the OpenMP* library, libiomp5.so.
When running OpenMP* applications in direct mode (i.e. on the coprocessor card), users must first upload (via scp) a copy of the Intel® MIC Architecture OpenMP* library (<install_dir>\compilers_and_libraries_2017\windows\lib\mic\libiomp5.so) to the card (device names will be of the format micN, where the first card will be named mic0, the second mic1, and so on) before running their application.
Failure to make this library available will result in a run-time failure like:
/libexec/ld-elf.so.1: Shared object "libiomp5.so" not found, required by "sample"
This can also apply to other compiler runtimes like libimf.so. The required libraries will depend on the application and how it's built.
- Calling exit() from an offload region
When calling exit() from within an offload region, the application terminates with an error diagnostic "offload error: process on the device 0 unexpectedly exited with code 0"
Known issues for offload to Intel® Graphics Technology
- gfx_linker: : error : command 'ld.exe' exited with non-zero exit code -107374170
When offloading code to Intel® Graphics Technology in an x64 project, you may get a linker error with the ld.exe provided by binutils. To resolve this problem, add the binutils bin directory for the 64-bit linker to your PATH environment variable and then restart Microsoft Visual Studio*. - Host-side execution of offload code is not parallelized
The compiler will generate both a target and host version of the parallel loop under #pragma offload. The host version is executed when the offload cannot be performed (usually when the target system does not have a unit with Intel® Graphics Technology enabled).The parallel loop must be specified using the parallel syntax of cilk_for or an Array Notation statement, which has parallel semantics for offload. The target version of the loop will be parallelized for target execution, but there is a current limitation where the host-side back-up version of the parallel loop will not be parallelized. Please be aware this can affect the performance of the back-up code execution significantly when offload execution does not happen in the case of cilk_for use. Array notation does not currently generate parallel code on the host, so performance should not differ here in that case. This is a known issue that may be resolved in a future product release.
- Other known limitations with offload to Intel® Graphics Technology
-
- On Windows 7*, for offloading to happen, the display cannot be locked. An active display is required.
- In the offloaded code, the following are not allowed:
- Exception handling
- RTTI
- longjmp/setjmp
- VLA
- Variable parameter lists
- Virtual functions, function pointers, or other indirect calls or jumps
- Shared virtual memory
- Data structures containing pointers, such as arrays or structs
- Globals with pointer or reference type
- OpenMP*
- cilk_spawn or cilk_sync
- Intel® Cilk™ Plus reducers
- ANSI C runtime library calls (with the exception of SVML, math.h, and mathimf.h calls and a few others)
- 64-bit float and integer operations are inefficient
Intel® Cilk™ Plus Known Issues
- Microsoft C++ Structured Exception Handling (SEH) will fail if an SEH exception is thrown after a steal occurs and before the corresponding _Cilk_sync.
Guided Auto-Parallel Known Issues
- Guided Auto Parallel (GAP) analysis for single file, function name or specific range of source code does not work when Whole Program Interprocedural Optimization (/Qipo) is enabled
Spurious error when a call to a template dependent function is made in a decltype expression in an out-of-line definition for a late-specified return type
- This is a known regression in Intel® C++ Compiler 16.0 Update 2. An example is:
-
template <class T> struct C { int then(int*,int*); template <class T2> auto then(T2 arg) -> decltype(this->then(&arg, &arg)); }; template <class T> template <class T2> auto C<T>::then(T2 arg) -> decltype(this->then(&arg, &arg)) { return 0; } void foo() { C<int> f; f.then(99); }
Boost issue with c++14 relaxed constexpr
- If you are using Boost in -std=c++14 mode and you see compilation errors that seem to be related to the constexpr feature, try defining BOOST_NO_CXX14_CONSTEXPR in boost_1_59_0/boost/config/compiler/gcc.hpp. To do this you should change these lines (around line 256):
-
#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
# define BOOST_NO_CXX14_CONSTEXPR
#endifto:
//#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
# define BOOST_NO_CXX14_CONSTEXPR
//#endif
Viewing Intel Compiler Documentation in Microsoft Edge* browser on Japanese Windows 10 OS
-
There is an issue when viewing the Intel Compiler Documentation in Microsoft Edge* browser on Japanese Windows 10 OS. The upper left corner [Content][Index][Search] buttons does not work. When clicking on it, it results in blank screen.
-
This issue is being investigated. Please use Internet Explorer to view the Intel Compiler Documentation. To set the default browser to Internet Explorer, google search "how to make Internet Explorer default browser on Windows 10".
Disclaimer and Legal Information
Optimization Notice |
---|
Intel's compilers 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 SSE2, SSE3, and 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. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice. Notice revision #20110804 |
INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL(R) PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. UNLESS OTHERWISE AGREED IN WRITING BY INTEL, THE INTEL PRODUCTS ARE NOT DESIGNED NOR INTENDED FOR ANY APPLICATION IN WHICH THE FAILURE OF THE INTEL PRODUCT COULD CREATE A SITUATION WHERE PERSONAL INJURY OR DEATH MAY OCCUR.
Intel may make changes to specifications and product descriptions at any time, without notice. Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined." Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them. The information here is subject to change without notice. Do not finalize a design with this information.
The products described in this document may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request.
Contact your local Intel sales office or your distributor to obtain the latest specifications and before placing your product order.
Copies of documents which have an order number and are referenced in this document, or other Intel literature, may be obtained by calling 1-800-548-4725, or go to: http://www.intel.com/design/literature.htm
Intel processor numbers are not a measure of performance. Processor numbers differentiate features within each processor family, not across different processor families. Go to:
http://www.intel.com/products/processor%5Fnumber/
The Intel® C++ Compiler is provided under Intel's End User License Agreement (EULA).
Please consult the licenses included in the distribution for details.
Intel, Intel logo, Pentium, Core, Atom, Iris, Xeon, Xeon Phi, and Cilk 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 © 2016 Intel Corporation. All Rights Reserved.