<<  6  >> インテル® C/C++ コンパイラー OpenMP* 活用ガイド デュアルコア・マルチコア対応アプリケーション開発A OpenMP* のもっとも基本的な考え方は、プログラム中の計算負荷が大きなループに対して、その並列処理のため の「指示」をコンパイラーに行うというものです。OpenMP* マルチスレッド・コンパイルをサポートするコンパイルシステ ムは、この指示に従って並列処理の適用をコードに対して行います。実際には OpenMP* の適用はループについてだ け行うものではありませんが以下の例では主に for ループを並列化する事例を中心に説明を行います。 図.5 OpenMP* プログラミングの概要 #pragma omp parallel if (n>limit) default (none)        shared (n,a,b,c,x,y,z) private(f,i,scale) {        f = 1.0; #pragma omp for nowait        for (i=0; i<n; i++)            z[i] = x[i] + y[i]; #pragma omp for nowait        for (i=0; i<n; i++)            a[i] = b[i] + c[i]; #pragma omp barrier          scale = sum(a, 0, n) + sum(z, 0, n) + f;                 } /** Enf of parallel region **/ すべてのスレッドが実行 並列ループ (ワークシェアリング) 並列ループ (ワークシェアリング) 同期処理 すべてのスレッドが実行 並列実行領域(Parallel Region)