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 がこのディレクティブを検出すると、システム内と同じ処理コアが作成されます。多数のスレッドが作成されます。 。したがって、デュアルコア システムの場合は 2 つのスレッドが作成され、クアッドコア システムの場合は 4 つのスレッドが作成されます。その後、すべてのスレッドが並列領域を同時に実行します。各スレッドは、並列領域を出ると終了します。 OpenMP には、ループの並列化など、コード領域を並列実行するための追加のディレクティブがいくつか用意されています。
OpenMP では、並列化ディレクティブを提供するだけでなく、開発者が複数の並列化レベルから選択することもできます。たとえば、スレッド数を手動で設定できます。また、開発者は、データがスレッド間で共有されているか、スレッドプライベートであるかを識別することもできます。 OpenMP は、Linux、Windows、および Mac OS X システム用のいくつかのオープン ソースおよび商用コンパイラで利用できます。
以上がOpenMPとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。