1

との同時実行を実現しようとしているときに、パフォーマンスの問題に関して多くの質問があったと思いますparallel_forfor. _ parallel_for_ 私が取り組んでいる応用分野は画像処理です。

驚くべきことに、このパフォーマンスの低下は、処理する単一の反復でループを作成しても見られますparallel_for!!

つまり、並列化なしで 7 秒で実行されるコード ブロックがあるということです。

<code block without parallelisation>   //(Executes in 7 seconds)

上記のコードをparallel_for以下のようにループで囲むと、パフォーマンスは 18 秒に向上します。

parallel_for(0,1,[&](int random_var){   //(Executes in 18 seconds)
<code block without parallelisation> 
});

私はそのような行動を完全に理解できません。処理にこのような巨大なオーバーヘッドを引き起こす可能性があるのは何ですか。そのような場合、メモリ帯域幅に関連する問題はないと思いますか?

私が直面しているこの特定の問題について、さらに詳しい情報が必要な場合はお知らせください。

4

1 に答える 1

0

parallel_for 内の 1 回の繰り返しでも、スレッドでコードが実行されるためです。そのため、メインスレッドでプリエンプションが発生します。他にもスレッド関係の簿記作業があり、時間がかかります。

于 2013-05-14T06:31:50.607 に答える