OpenMP (Open Multi-Processing)は並列計算環境での並列プログラミングをサポートするために標準化されたAPI.C/C++,Fortranで利用可能.
OpenMP自身はコンパイラではなく,コンパイラに対する 並列処理の機能拡張を規定したものであり,コンパイラから 呼び出されるライブラリによって構成される
#pragma omp 指示句 [指示節] [指示節]
使用例
#include <stdio.h>
int main() {
#pragma omp parallel private(i)
{
//--並列実行部分--
#pragma omp for
for (int i=0; i<8; i++)
printf (“[i=%d] Hello ! ¥n, i);
//--並列実行部分--
}
return 0;
}
コンパイル時に-fopenmp
をつけることでOpenMPを使用できる
g++ -Wall -fopenmp main.cpp
複数スレッドによる並列処理
並列領域は構造ブロック(構造ブロック:入り口が1つで,出口が1つの実行コードのブロック)
並列実行領域外からのブロック内への分岐や,ブロック内から領域外への分岐はあってはならない(return文もダメ.exit文は良い)
構造ブロックが1行のシングルステートメントやC/C++言語上のブロック構造であれば,中括弧は省略できる
#pragma omp parallel [指示節..]
{
並列実行領域
}