OpenMP 是一組編譯器指令以及用於用 C、C 或 FORTRAN 編寫的程式的 API,為共享記憶體環境中的平行程式設計提供支援。 OpenMP 將平行區域識別為可以並行運行的程式碼區塊。應用程式開發人員將編譯器指令插入到平行區域的程式碼中,這些指令指示 OpenMP 執行時間程式庫並行執行該區域。以下C 程式說明了包含printf() 語句的平行區域之上的編譯器指令-
#include <omp.h> #include <stdio.h> int main(int argc, char *argv[]){ /* sequential code */ #pragma omp parallel{ printf("I am a parallel region."); } /* sequential code */ return 0; }
當OpenMP 遇到該指令時
#pragma omp parallel
它建立與系統中的處理核心一樣多的線程。因此,對於雙核心系統,創建兩個線程,對於四核系統,創建四個線程;等等。然後所有執行緒同時執行並行區域。當每個執行緒退出並行區域時,它就會終止。 OpenMP 提供了幾個用於平行運行程式碼區域的附加指令,包括平行化循環。
除了提供平行化指令之外,OpenMP 還允許開發人員在多個並行層級之間進行選擇。例如,他們可以手動設定線程數。它還允許開發人員識別資料是在線程之間共享還是線程私有。 OpenMP 可在 Linux、Windows 和 Mac OS X 系統的多個開源和商業編譯器上使用。
以上是OpenMP是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!