今更ながらだけど gcc4.2 で OpenMP 使えるのを試してみた.使うにはふつうに OpenMP のディレクティブ書いて -fopenmp つけてコンパイルするだけ.あとは OMP_NUM_THREADS 環境変数にスレッド数をぶち込んで動かす.
で,parallel for とか reduction(+:r) とかで並列実行されるのを確認.ただ,reduction で本来の計算以外に結構時間取られてるっぽいので要調査かな.
あと,OpenMP 2.5 の仕様をみると reduction のオペレータはオーバーロード禁止かついわゆる C or C++ の演算子しか使えないとあるのでgccでもそうなのか試してみよう.オーバーロードくらい許してくれないと何にも出来ん.
- Newer: AWK - はじめ