問題タブ [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 投票する
3 に答える
366 参照

c++ - IntelスレッドCAPI

Intel Threading Building BlocksC ++ではなく、プレーンCから使用したいと思います。C APIもありますか?

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

linux - Linux11.04にTBBをインストールする

私はTBBをインストールする方法についてグーグルとtbbsフォーラムを検索してきました。

Linuxとソースの両方を http://threadingbuildingblocks.org/ver.php?fid=175からダウンロードしました。

tar -xvfを使用してそれらを抽出し、makeファイルを実行しました。それから私は行ってtbb/build/linux_intel64_gcc_cc4.5.2_libc,13_kernel2.6.38_debug/走りましたtbbvars.sh

私も走ってみtbb/build/generate_tbbvars.shましtbbvars.shtbbvars.csh

でプログラムをコンパイルしようとすると、何を結んでも-ltbb/usr/bin/ld: skipping incompatible /usr/lib/libtbb.so when searching for -ltbb /usr/bin/ld: cannot find -ltbb

誰かがこれを修正する方法を知っていますか?

Linux damian-HP-Z600-Workstation 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03:31:24 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

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

tbb - UbuntuにTBBをインストールするにはどうすればいいですか?

http://threadingbuildingblocks.org/ver.php?fid=174からtbb40_233oss_lin.tgzファイルをダウンロードしました

「TBBROOT」変数をbash_proflieのディレクトリに設定し、tarファイルを解凍して、binフォルダーに移動し、tbbvars.shファイルを実行しました。

入力しました

例を実行しようとしましたが、以下のように文句を言います

ライブラリパスを手動で設定しようとしましたが、次のように入力しました

しかし、それでも文句を言います。

Ubuntuでサンプルコードをコンパイルするにはどうすればよいですか?

前もって感謝します。

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

c++ - TBB タスク割り当てアサーション

TBB タスクと継続を介してツリーをトラバースしようとしています。コードは以下です。コードを実行すると、次のエラーで中断し続けます (常にではありませんが、頻繁に)。

アサーション t_next->state()==task::allocated がファイル ../../src/tbb/custom_scheduler.h の 334 行目で失敗しました割り当てられた

この問題の原因は何ですか?

0 投票する
7 に答える
16000 参照

opencv - TBB で OpenCV をビルドするにはどうすればよいですか?

opencv_traincascade複数のスレッドを使用しようとして失敗しています。私が見つけた唯一のドキュメントには、「TBB で OpenCV をビルドする」と書かれています。TBB を使用して OpenCV を正常にビルドできていないのか、または に設定する必要があるフラグがあるのか​​どうかはわかりませんopencv_traincascade

OpenCV バージョン 2.3.1 Windows スーパーパックと をダウンロードし、tbb40_20111003oss_win.zip解凍してC:\tbb40_20111003oss. 次に、CMakeを使用してVC8.sln.projファイルを生成し、設定

WITH_TBB: ON

TBB_INCLUDE_DIR:PATH=C:\tbb40_20111003oss\include

TBB_LIB_DIR:PATH=C:/tbb40_20111003oss/lib/intel64/vc8

その後、OpenCV はエラーなしでビルドされますが、実行するとシングルスレッドにopencv_traincascadeなります。私が間違っていることを誰かが知っていますか?

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

c++ - 2次元配列のconcurrent_vector

現在、 を使用して 2D 配列を表現しようとしていtbb::concurrent_vector<T>ます。この 2 次元配列は、多くの異なるスレッドによってアクセスされるため、並列アクセスを可能な限り効率的に処理する必要があります。

私は2つの解決策を思いつきました:

  • を使用しtbb::concurrent_vector<tbb::concurrent_vector<T> >て保管してください。

  • すべてを a に格納し、tbb::concurrent_vector<T>w/ で要素にアクセスします。x * width + y

1 つの要素にアクセスするために行全体をロックしたくないため、2 番目の要素を好みました (要素にアクセスするためarray[x][y]に tbb 実装はxth 行をロックし、次にyth 要素をロックすると想定しているため)。

どの解決策があなたにとってより良いと思われるか知りたいです。

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

c++ - TBB: parallel_for のローカルおよびグローバル結果

並列ループのローカル値とグローバル変数の更新に関して質問があります。

疑似コードの例: 非常に長いベクトルの最大値を検索しています。次のように、ループで実行できます。

OpenMP で簡単に並列化できます。

TBB で同じことを行うにはどうすればよいparallel_forですか? 正確なコードは要求しません。反復ごとではなく、ループの最後にグローバル結果を更新する方法を知りたいだけです...

(TBB初心者です)

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

visual-c++ - 同じプロセスで異なるバージョンのVisualStudioに対してコンパイルされたDLLがスレッドビルディングブロックを使用できるようにする方法

私のDirectShowアプリケーションには、32ビットWindowsバージョンのIntel Threading Building Blocks(tbb.dll)に対するリンクのソースがないサードパーティのDLL(32ビットDirectShowフィルター)があります。

同じプロセスで自分のDLLでスレッドビルディングブロックを使用したい場合(たとえば、別の32ビットDirectShowフィルター)、このサードパーティのDLLの作成者が使用したのと同じバージョンのVisual Studioを使用する必要がありますか?

編集-バージョンに依存しない_mtライブラリが、このシナリオで使用するのにおそらく最適なライブラリであることに気づきました。サードパーティベンダーがこの_mtdll用にビルドしていない場合はどうなりますか?

私自身のスレッディングビルディングブロックのインストールでは、Visual Studioのバージョン(2005、2008、2010、および「MT」)ごとにtbb.dllのバージョンが異なることに気付きました(まだ何であるかはわかりません)。これの明らかな理由の1つは、異なるバージョンのtbb.dllが異なるバージョンのVisualStudioランタイムライブラリDLLに対してリンクしていることです。検査によってどのバージョンのtbb.dllが必要かを判断することは可能ですか、それとも使用されているコンパイラのバージョンを示すバイナリ内の文字列を探す必要がありますか(サードパーティのDLLはVisual Studioランタイムを静的にリンクしているようです)?

私が知る限り、tbb.dllはマニフェストを使用せず、バージョン管理を並べて使用し、コンパイラのバージョンごとに同じ名前が付けられています。最後の手段は、別のtbb.dllの名前を変更し、インポートライブラリをハックするか、名前を変更したdllを参照するようにインポートすることですが、実際にはこれを避けたいと思います。リンカーオプションを使用してインポートをリダイレクトするクリーンな方法はありますか?

これらのDLLは正常に動作するDirectShowフィルターであるため、VisualStudioランタイムまたはTBBオブジェクトをそれらの間で受け渡すことはありません。これは明らかに危険です。それらの相互作用は、標準のCOMDirectShow呼び出しを介した相互の呼び出しに制限されます。

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

c++ - TBB と自作のワークキュー

(スレッドビルディングブロック)が洗練されたエンジンを持っていると主張していることは知っTBBていますが、アルゴリズムの観点からは:

(Linux などで)N作業スレッド (POSIX スレッド、Nコアの数) とミューテックスで同期されたタスクのキューを持つワークキューがあった場合、各作業スレッドはアイドル時にキューからタスクを取得し、同期も行います。TBB素晴らしいC++構文を除いて、他に何が提供できるでしょうか? コアへのタスクの貪欲な割り当てよりも優れたアルゴリズムはありません。

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

c++ - スタックを使用したタスクの共有と分割に使用するスレッドパラレルインターフェイスはどれですか?

分割可能なタスクを使用して作業を共有したいコードを作成することを計画しています。シリアルバージョンでは、ルートタスクで初期化されたスタックを使用します。スタックは、タスクを繰り返しポップすることによって空になります。その後、タスクが実行または分割され、サブタスクがスタックにプッシュバックされます。これを並行して実装するための最良の(最も効率的で簡単な)方法とインターフェース(tbb、openmpなど)は何ですか?このようなパラレルスタックは、スレッドパラレルインターフェイスによって明示的にサポートされていますか(またはスタックのより良い代替手段がありますか)?