Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Sigolaev__Yuriy
Beginner
268 Views

maximum number of nested loops

What is the maximum number of nested loops in the 19 version of Intel Fortran?

0 Kudos
9 Replies
jimdempseyatthecove
Black Belt
260 Views

This would be a stack size limitation. Larger stack size == more nest levels.

Note, the above is for runtime. At compile time, of a single procedure, the compiler may have an internal limit, possibly limited by its stack size and/or internal structure design for tracking tokens (variables).

If you are running into a problem, please state the particulars.

Jim Dempsey

Sigolaev__Yuriy
Beginner
247 Views

>>At compile time, of a single procedure, the compiler may have an internal limit,

I have to use about two hundred nested loops. I'm wondering if the translator can cope with this task?

 

jimdempseyatthecove
Black Belt
243 Views

Is this in the same procedure? (same subroutine or function)

Why not simply try it?

Jim Dempsey

FortranFan
Honored Contributor I
240 Views

Considering the high-level of nesting in your loops, have you looked into recursive algorithm(s) and evaluated whether they can help you with your computing needs?

Starting Fortran 2018, unless marked as NON_RECURSIVE or dictated by some compiler option(s) to override the standard, every procedure is recursive.  And one can thus hope a Fortran 2018-compliant compiler will be reasonably good (and striving toward being highly adept) at optimizing the program with respect to recursion, both in terms of run-time (e.g., stack usage) as well as compile-time processing.

Thus investment in recursive algorithms toward one's computing needs can prove valuable in the long-term.  

Sigolaev__Yuriy
Beginner
233 Views

Binary tree traversal with nested loops is much more efficient than any other algorithm. Don't the developers of the translator indicate the maximum nesting of loops?

Steve_Lionel
Black Belt Retired Employee
223 Views

The Intel documentation, under Compiler Limits, says "DO, CASE, FORALL, WHERE, and block IF statement nesting (combined): 512"

Sigolaev__Yuriy
Beginner
217 Views

Thanks Steve.

Ronald_G_Intel
Moderator
208 Views

Steve beat me to it - 512 is correct.

Error Message if you exceed this:

/* 370 */

"The IF, DO, CASE, FORALL, and/or WHERE constructs are nested too deeply. The current limit is 512."

Speaking of limits, array ranks limit = 31

Sigolaev__Yuriy
Beginner
194 Views

>>The... DO... constructs are nested too deeply. ..

I would not say this: in advanced algorithms, the initial and final values of the loop parameter are variables, and if they match, the transition to the inner loops is linear in time.