internal threshold was exceeded


Reference Number : Q511410 / Q459928

Version : Intel C++ and Fortran Compiler  versions 10.1 and 11.0

Operating System : Windows, Linux, Mac OS X
Architectures:   IA-32, Intel 64, IA-64

Problem Description : The compiler contains certain internal limits intended to prevent excessive memory usage or compile times for very large compilation units. When such a limit is exceeded, some optimizations are skipped to reduce the memory footprint and compile time. For example, loops preceded by OpenMP directives may not be threaded. No optimizer message will be seen for such loops, even if the OpenMP report is enabled. The 10.1 compiler may emit a remark such as "An internal threshold was exceeded: loops may not be vectorized or parallelized. Try to reduce routine size."

Resolution Status : In the 11.0 compiler, the switch /Qoverride-limits (Windows) or -override-limits (Linux or Mac OS X) may be used to disable the internal limits and continue optimizing. This is likely to increase memory usage and compile time; in some cases, especially on 32 bit operating systems, there is a risk that the compilation may fail due to insufficient memory. In the 10.1 compiler, this switch is enabled for the Itanium architecture only.
Some debugging features cause additional code to be generated and may increase the likelihood that internal limits are exceeded. If the "threshold exceeded" message is encountered, consider temporarily disabling such features as array bounds checking. (Note that bounds checking is enabled by default for debug builds within Intel Visual Fortran).
In some cases, reducing the optimization level for the affected function may help. For very large, complex functions, it may be preferable to split them into smaller components.

For diagnostic messages emitted when compiler internal limits are exceeded in the version 15 compiler, and for actions that may be taken, see the article at 

[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.]
For more complete information about compiler optimizations, see our Optimization Notice.