loop

Controla cómo el paralelizador automático debe considerar el código del bucle y/o excluye un bucle de la consideración del vectorizador automático.

#pragma loop( hint_parallel(n) )

#pragma loop( no_vector )

#pragma loop( ivdep )

Parámetros

  • hint_parallel( n )
    Sugiere al compilador que este bucle se ejecute en paralelo en n subprocesos, donde n es un literal entero positivo o cero. Si n es cero, se usa el número máximo de subprocesos en tiempo de ejecución. Esta es una sugerencia que se hace al compilador, no una orden y, por tanto, no existen garantías de que el bucle se ejecute en paralelo. Si el bucle tiene dependencias de datos o problemas estructurales (por ejemplo, el bucle se almacena en un valor escalar que se usa más allá del cuerpo del bucle), el bucle no se ejecuta en paralelo.

    El compilador omite esta opción a menos que se especifique el modificador del compilador /Qpar.

  • no_vector
    De forma predeterminada, el vectorizador automático está activado e intentará vectorizar todos los bucles que evalúe de modo que se beneficien de él. Especifique esta directiva pragma para deshabilitar el vectorizador automático para el bucle que aparece detrás.

  • ivdep
    Sugiere al compilador que omita las dependencias de vector de este bucle. Se utiliza junto con hint_parallel.

Comentarios

Para utilizar la directiva pragma loop, colóquela inmediatamente antes de una definición de bucle, no dentro de ella. La directiva pragma surte efecto para el ámbito del bucle que aparece detrás. Puede aplicar varias directivas pragma a un bucle, en cualquier orden, pero debe establecer cada una de ellas en una instrucción pragma diferente.

Vea también

Referencia

Paralelización y vectorización automáticas

Directives pragma y la palabra clave __pragma