HPCC-stream performance loss with the 11.0 and 12.0 compilers


Reference Number : dpd200111097

Version : Intel® C++ Compiler Version 11.0  and   Version 12.0

Operating System : Windows*, Linux*, Mac OS* X

Problem Description : When the STREAM component of the HPCC benchmark suite is built with with version 11 of the Intel C++ compiler, the performance may be about 20% less than when it is built using version 10.1, for some choices of command line options. Typical options on Linux might be:

-O3 -xsse4.1 -ansi-alias -ip -opt-streaming-stores always      for 11.0, or
-O3 -xS -ansi-alias -ip -opt-streaming-stores always              for 10.1.

This is because streaming store instructions (non-temporal stores that bypass the cache) are not generated for certain inlined functions with the 11.0 compiler.

In the 12.0 compiler, from the release through update 3, a similar slowdown may be seen for just the COPY component of STREAM, including for the standalone version.

Resolution Status : This is a known issue that is resolved in compiler update 11.0.081 and later. Directions on how to download a specific release are described here.
The issue with the COPY component of stream is fixed in update 4 to the 12.0 compiler.

The original issue may be worked around for 11.0 versions before 11.0.081 by disabling inlining for this benchmark. On Linux, for example, this may be done with -fno-inline.
The issue with early versions of the 12.0 compiler may be worked around in a similar way. For example, for the C compiler, use -ffreestanding (Linux or Mac OS X) or /Qfreestanding (Windows), or for the Fortran compiler, use -nolib-inline (Linux or Mac OS) or /Oi- (Windows).

Note that the use of -opt-streaming-stores always (Linux or Mac OS X)  or /Qopt-streaming-stores:always (Windows)  is recommended for building all versions of the STREAM benchmark.

[DISCLAIMER: The information on this web site is intended for hardware system manufacturers and software developers. Intel does not warrant the accuracy, completeness or utility of any information on this site. Intel may make changes to the information or the site at any time without notice. Intel makes no commitment to update the information at this site. ALL INFORMATION PROVIDED ON THIS WEBSITE IS PROVIDED "as is" without any express, implied, or statutory warranty of any kind including but not limited to warranties of merchantability, non-infringement of intellectual property, or fitness for any particular purpose. Independent companies manufacture the third-party products that are mentioned on this site. Intel is not responsible for the quality or performance of third-party products and makes no representation or warranty regarding such products. The third-party supplier remains solely responsible for the design, manufacture, sale and functionality of its products. Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands may be claimed as the property of others.]

Optimization Notice in English

For more complete information about compiler optimizations, see our Optimization Notice.