Quantcast
Channel: Intel Developer Zone Articles
Viewing all articles
Browse latest Browse all 3384

Diagnostic 15522: Loop was not vectorized: loop control flow is too complex.

$
0
0

Product Version: Intel(R) Visual Fortran Compiler XE 15.0.0.070

Cause:

The vectorization report generated when using Visual Fortran Compiler's optimization options ( -O3  -Qopt-report:2 ) states that loop was not vectorized since loop control flow is too complex.

Example:

An example below will generate the following remark in optimization report:

subroutine foo(a, n)
    implicit none
    integer, intent(in) :: n
    double precision, intent(inout) :: a(n,n)
       integer :: bar
       integer :: i
       integer :: j

200   CONTINUE
       i=0
100   CONTINUE

       a(i,j)= 0
       i=i+1
       if (i .lt. bar()) goto 100
       j=j+1
       goto 200

end subroutine foo 

Report from: Loop nest, Vector & Auto-parallelization optimizations [loop, vec, par]

  LOOP BEGIN

     remark #15522: loop was not vectorized: loop control flow is too complex. Simplify control flow.
 
  LOOP END

Resolution:

 -goto statements prevent vectorization, rewriting the code to simplify flow control will get this loop vectorized.

See also:

Requirements for Vectorizable Loops

Vectorization Essentials

Vectorization and Optimization Reports

Back to the list of vectorization diagnostics for Intel Fortran


Viewing all articles
Browse latest Browse all 3384

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>