Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
159 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
Highlighted
151 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

0 Kudos
Highlighted
138 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?

 

0 Kudos
Highlighted
134 Views

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

Why not simply try it?

Jim Dempsey

0 Kudos
Highlighted
Valued Contributor III
131 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.  

0 Kudos
Highlighted
124 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?

0 Kudos
Highlighted
Black Belt Retired Employee
114 Views

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

Highlighted
108 Views

Thanks Steve.

0 Kudos
Highlighted
Moderator
99 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

0 Kudos
Highlighted
85 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.

 

0 Kudos