問題タブ [tbb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1504 参照

c++ - IntelTBBを使用した同時c++コードのブロック/フリーズ

以下に示すように、Intel TBBを使用して、ファイル読み取り、ソート、ファイル書き込みの各ステージを使用して、パイプラインバージョンのBitonicSortを作成してみました。コードはwhile(!outQueue.try_pop(line));のスピンロックでフリーズします。FileWriterフィルターで。誰かがこれがなぜかもしれないのか説明できますか?

更新:さらにテストを行ったところ、ヘッダーファイル_concurrent_queue_internal.hからtry_popによって呼び出されるinternal_try_popに、この特定のtry_popに対して永久に失敗するcompare_and_swap操作があることがわかりました。以下は、internal_try_popから抽出した値です。

テールカウンターの値はゴミだと思います。この状況で私が考えることができる唯一の理由は、ソーターによってキューに追加された値が、それによって暗黙的に変更され、使用できなくなる可能性があることです。

何か案は?

ありがとう :)

0 投票する
3 に答える
1574 参照

c++ - task_groupを使用してBitonicソートを実行するIntelTBB

IntelTBBを使用してバイトニックソートを実装しています。parallel_invokeメソッドを使用すると、すべてうまくいきます。ただし、task_groupを(waitメソッドを呼び出さずに)使用すると、出力はソートされません。以下のようにtask_groupを使用すると、プログラムは終了しません。

誰かが何が悪いのかわかりますか?parallel_invokeとtask_groupの使用の違いは何ですか?また、そのような状況で使用するのに良いものは何ですか?parallel_invokeまたはtask_group?_ または、他の方法を使用する必要がありますか?

前もって感謝します

0 投票する
1 に答える
3246 参照

visual-studio - Visual Studio の TBB (スレッド ビルディング ブロック)

Visual Studio 2008 で TBB を使い始める簡単な方法を誰か教えてもらえますか? このチュートリアルを実行しましたが、少し古いようでした (リンク)

0 投票する
0 に答える
234 参照

c++ - インテル TBB のスケーラブル_アロケーターでブロック サイズを変更するにはどうすればよいですか?

一部の HPC 作業には、インテル スレッディング ビルディング ブロック ライブラリのスケーラブル_アロケーターを使用しています。私の使用例では、scale_allocator は mmap を頻繁に呼び出すようです。アロケーターが使用するブロックのサイズを変更するにはどうすればよいですか?

tbbmalloc_internal.h には blockSize 定数がありますが、それを変更するとシステムに奇妙な影響があり、1 つの変数を切り替えるだけでは簡単ではないのではないかと思いました。

0 投票する
2 に答える
967 参照

algorithm - スレッドビルディングブロックでのネストされたループの並列化

私はビルディングブロックをスレッド化し、TBBでFFTアルゴリズムをエンコードして経験を積もうとするのは初めてです。このアルゴリズムの場合、最も内側のループのみを並列化できます。しかし、そうすることで、パフォーマンスが許容できない程度 (1,000 倍以上) まで低下しました。2^20 までの配列サイズを試してみましたが、同じ結果です。私のコードは以下のとおりです

そして、parallel_loop の本体は

通常のループに置き換えると、問題はなくなります。

0 投票する
1 に答える
2756 参照

opencv - TBBを使用したOpenCVコードの並列化

TBBを使用してOpenCVで記述された画像マッチングコードを並列化しようとしています。問題は、私によると、マッチング(左の画像に5x5ウィンドウを作成し、右のピクセルごとにマッチを探す)は本質的に読み取り専用の操作であり、現在、内側のループを(つまり、指定された高さで)並列化しようとしていることです。異なるピクセルから異なるスレッドへ)。驚いたことに、cvSetImageROIコマンドは並行して実行すると壊れます。これがコードです。

画像を読み取っているだけなので、これはすべてスレッドセーフに見えますが、コードがクラッシュします。動作しますが、最初にロックをかけると。誰かが助けることができますか?

0 投票する
2 に答える
5363 参照

c++ - gcc を使用して Linux で実行されるスレッド ビルディング ブロック (Intel TBB) を取得する

ビルディングブロックをスレッド化するためのいくつかのテストを構築しようとしています。残念ながら、tbb ライブラリを構成できません。リンカがライブラリ tbb を見つけられません。bin ディレクトリでスクリプトを実行しようとしましたが、役に立ちませんでした。ライブラリ ファイルを /usr/local/lib/ に移動しようとしましたが、これも失敗に終わりました。どんな提案も役に立ちます。

0 投票する
2 に答える
112 参照

multithreading - 並列化の可能性を検索するには?

Intel の TBB を使用して並列化を開始したシリアル コードがいくつかあります。私の最初の目的は、コード内のほぼすべての for ループを並列化することでした (for ループ内で for を並列化することさえありました)。現在、それを実行してスピードアップを実現しています。並列化する場所/アイデア/オプションをさらに探しています...問題についてあまり言及していないと、これは少し曖昧に聞こえるかもしれませんが、コードで調査できる一般的なアイデアをここで探しています。

アルゴの概要 (次のアルゴは、画像のすべてのレベルで実行され、最短から始まり、実際の高さと幅に達するまで、幅と高さが 2 ずつ増加します)。

0 投票する
2 に答える
864 参照

multithreading - 異なるプロセッサ間で負荷を分割する方法

4 つの Intel プロセッサとそれぞれに 8 つのコアを搭載したマシンで並列コードを実行しています。TBB を使用しています。特定のループ (並列化する) に X 回の反復があるとします。負荷が均等に分割されるように、粒度を選択するにはどうすればよいですか?

0 投票する
1 に答える
153 参照

visual-studio-2010 - Intel Parallel Studio のタイミングの不一致

Intel TBB を使用するコードがいくつかあり、32 コアのマシンで実行しています。コードでは、私は使用します

parallel_for(blocked_range (2,left_image_width-2, left_image_width /32) ...

並行作業を行うスレッドに 32 を生成する場合、競合状態はなく、各スレッドに同じ量の作業が与えられることが期待されます。プログラムの所要時間を測定するために clock_t を使用しています。特定の画像の場合、完了するまでに約 19 秒かかります。

次に、インテル® Parallel Studio でコードを実行したところ、コードは 2 秒で実行されました。これは私が期待していた結果ですが、なぜこの 2 つに大きな違いがあるのか​​ わかりません。time_t はすべてのコアのクロック サイクルを合計しますか? それでも意味がありません。以下は、問題のスニペットです。

アドバイスをいただければ幸いです。