loop pragma

Steuert, wie Schleifencode vom automatischen Parallelisierer berücksichtigt werden soll, oder schließt eine Schleife von der Vektorisierung aus.

Syntax

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

Parameter

hint_parallel( n )
Ein Hinweis auf den Compiler, dass diese Schleife über n Threads parallelisiert werden soll, wobei n ein positives ganzzahliges Literal oder null ist. Wenn n null ist, wird die maximale Anzahl von Threads zur Laufzeit verwendet. Es ist ein Hinweis auf den Compiler, nicht ein Befehl. Es gibt keine Garantie dafür, dass die Schleife parallelisiert wird. Wenn die Schleife Datenabhängigkeiten oder strukturelle Probleme aufweist, wird sie nicht parallelisiert. Beispielsweise wird sie nicht parallelisiert, wenn sie in einem Skalar gespeichert wird, der über den Schleifentext hinaus verwendet wird.

Der Compiler ignoriert diese Option, es sei denn, der /Qpar Compilerschalter ist angegeben.

no_vector
Standardmäßig versucht der automatische Vektorizer, alle von ihr ausgewerteten Schleifen zu vektorisieren. Geben Sie dies pragma an, um den automatischen Vektorizer für die folgende Schleife zu deaktivieren.

ivdep
Ein Hinweis auf den Compiler, um Vektorabhängigkeiten für diese Schleife zu ignorieren.

Hinweise

Wenn Sie den looppragmaWert verwenden möchten, platzieren Sie ihn unmittelbar vor einer Schleifendefinition, nicht in einer Schleifendefinition. Der pragma Gültigkeitsbereich der Schleife, die darauf folgt, wird wirksam. Sie können mehrere pragma Direktiven auf eine Schleife in beliebiger Reihenfolge anwenden, aber Sie müssen jedes in einer separaten pragma Anweisung angeben.

Siehe auch

Automatische Parallelisierung und automatische Vektorisierung
PragmaDirektiven und Schlüsselwörter __pragma _Pragma