共用方式為


迴圈

控制 auto-parallelizer 考量迴圈程式碼的方式,及/或從 auto-vectorizer 排除迴圈的考量。

#pragma loop( hint_parallel(n) )

#pragma loop( no_vector )

#pragma loop( ivdep )

參數

  • hint_parallel( n )
    編譯器提示此迴圈應在 n 個執行緒之間進行平行處理,其中 n 為正整數或零。 如果 n 是零,則會在執行階段使用最大數目的執行緒。 這是提供給編譯器的提示,而不是一個命令,因此,並不保證迴圈會進行平行處理。 如果迴圈具有資料相依性或結構問題 (例如,在迴圈主體之外使用純量的迴圈存放區),則不會對迴圈進行平行處理。

    除非已指定 /Qpar 編譯器參數,否則編譯器會忽略這個選項。

  • no_vector
    預設會開啟 auto-vectorizer 並嘗試向量化其評估為可從中受益的所有迴圈。 指定這個 pragma 可針對後方的迴圈停用 auto-vectorizer。

  • ivdep
    編譯器的提示,忽略此迴圈的向量相依性。 請將它與 hint_parallel 搭配使用。

備註

若要使用 loop pragma,請將它放在迴圈定義的前方 (而不是內部)。 pragma 生效範圍為其後方迴圈的範圍。 您可以任何順序對迴圈套用多個 pragma,不過,您必須在個別的 pragma 陳述式中加以說明。

請參閱

參考

自動平行處理錯誤和警告

Pragma 指示詞和 __Pragma 關鍵字