internal threshold was exceeded


Reference Number : Q511410 / Q459928

Version : Intel C++ and Fortran Compiler  versions 11 and later

Operating System : Windows, Linux, Mac OS X
Architectures:   IA-32, Intel 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. Optimizer messages may not be seen for such loops, even if the optimization report is enabled. Some compilers may emit a remark such as "An internal threshold was exceeded".

Resolution Status : From 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 (-qoverride-limits for version 15.0 and later on Linux or Mac OS X). 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. 
Some debugging features cause additional code to be generated and may increase the likelihood that internal limits are exceeded. If a "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 and later compilers, and for actions that may be taken, see the article at 

Возможность комментирования русскоязычного контента была отключена. Узнать подробнее.