loop

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at loop. Controls how loop code is to be considered by the auto-parallelizer, and/or excludes a loop from consideration by the auto-vectorizer.

Syntax

  
#pragma loop
( hint_parallel(n) )  
  
#pragma loop
( no_vector )  
  
#pragma loop
( ivdep )  

Parameters

hint_parallel( n )
Hints to the compiler that this loop should be parallelized across n threads, where n is a positive integer literal or zero. If n is zero, the maximum number of threads is used at run time. This is a hint to the compiler, not a command, and there is no guarantee that the loop will be parallelized. If the loop has data dependencies, or structural issues—for example, the loop stores to a scalar that's used beyond the loop body—then the loop will not be parallelized.

The compiler ignores this option unless the /Qpar compiler switch is specified.

no_vector
By default, the auto-vectorizer is on and will attempt to vectorize all loops that it evaluates as benefitting from it. Specify this pragma to disable the auto-vectorizer for the loop that follows it.

ivdep
Hints to the compiler to ignore vector dependencies for this loop. Use this in conjunction with hint_parallel.

Remarks

To use the loop pragma, place it immediately before—not in—a loop definition. The pragma takes effect for the scope of the loop that follows it. You can apply multiple pragmas to a loop, in any order, but you must state each one in a separate pragma statement.

See Also

Auto-Parallelization and Auto-Vectorization
Pragma Directives and the __Pragma Keyword