3

画像をピクセルごとに反復処理し、ピクセルごとに 1000 回の浮動小数点演算を実行したいと考えています。これには、マルチスレッドまたはマルチプロセッシング、つまりboost::threadまたはOpenMPを使用する必要があると思いますか? これら2つの中から選択する経験則はありますか(最速の速度のため)? スレッドの作成またはスレッド間の切り替えは、プロセスの作成/切り替えよりも数倍高速であることを理解しました。一方、OpenMP コードの実装ははるかに簡単です。

今の私の解決策:

#pragma omp parallel for
for(size_t i=0; i<640; ++i) {
    for(size_t j=0; j<480; ++j) {
        // do 1000 float operations
    }
} 
4

1 に答える 1

3

これには OpenMP で十分です。実際、boost には組み込みの並列ループ構造がありません。

マルチスレッドまたはマルチプロセッシングを使用する必要があると思いますか

OpenMP は Open MultiProcessing の略ですが、実際にはマルチスレッド ライブラリです。

注目に値する代替ライブラリは Intel TBB です。

于 2013-01-08T14:00:01.717 に答える