pętla
Określa, jak kod pętli jest używany przez auto-parallelizer, i/lub wyklucza pętle z rozpatrzenia przez auto-vectorizer.
#pragma loop( hint_parallel(n) )
#pragma loop( no_vector )
#pragma loop( ivdep )
Parametry
hint_parallel( n )
Wskazówki dla kompilatora, że ta pętla powinna odbywać się równolegle przez n wątków, gdzie n jest dodatnim literałem liczby całkowitej lub zerem.Jeśli n wynosi zero, maksymalna liczba wątków jest używana w czasie wykonywania.To jest wskazówka dotycząca kompilatora, nie polecenia i nie ma żadnej gwarancji, że pętla będzie odbywać się równolegle.Jeżeli pętla ma zależności danych lub strukturalne problemy — na przykład, pętla przechowuje wartość skalarną, używaną poza ciałem pętli — następnie pętli nie będzie równoległa.Kompilator ignoruje tę opcję, jeśli przełącznik /Qpar nie jest określony.
no_vector
Domyślnie auto-vectorizer jest włączony i spróbuje wektoryzować wszystkie pętle, które ocenia jako korzystające z niego.Określ tą pragmę, aby wyłączyć auto-vectorizer dla pętli, następującej po niej.ivdep
Wskazówki w kompilatorze do ignorowania wektorowych zależności dla tej pętli.Wykorzystaj tę usterkę w połączeniu z hint_parallel.
Uwagi
Aby użyć pragmy loop, umieść ją bezpośrednio przed — nie w — definicja pętli.Pragma staje się skuteczna dla następującego po niej zakresu pętli.Można stosować pragmy wielokrotne do pętli, w dowolnej kolejności, ale muszą one określać każdą z nich w oddzielnych instrukcji pragmy.