0

スレッドの 1 つが実行を終了したらすぐに実行を継続する必要があります。並列セクション内のロジックにより、すべてが正常に完了したことが保証されます。私は並列化を入れ子にしたので、計算能力を消費しないようにデータを処理する準備ができていないときは、いくつかの最上位スレッドをスリープ状態にします。そのため、最上位のスレッドの 1 つが終了しても、他のスレッドが起動して自然に戻るのを待たずに、実行を継続したいと考えています。

私が使う

#pragma omp parallel for num_threads(wanted_thread_no)
4

1 に答える 1

0

どのように並列化しますか?タスク、セクション、またはを使用しますか?

私が正しく理解していて、タスクプリミティブを使用している場合は#pragma omp parallel nowait、最後のタスクの後に使用できます。

(pdfの)13ページのこのpdfを確認してください。

http://openmp.org/wp/presos/omp-in-action-SC05.pdf

それは明確に言っています:

デフォルトでは、「ompfor」の最後にバリアがあります。「nowait」句を使用して、バリアをオフにします。 #pragma omp for nowait「nowait」は、2つの連続する独立したompforループの間で役立ちます。

これは、あなたの望むことですか?

同じことを言っていても、これも見てください。

http://openmp.org/mp-documents/omp-hands-on-SC08.pdf

于 2012-12-13T00:20:50.610 に答える