問題タブ [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.
multithreading - Intel TBBがブーストのような条件変数を提供しなかったのはなぜですか?
条件付きシグナルメカニズムのように、あるシグナルが受信されるか、ある変数が真になるまで、1つのタスクを待機させたいと思います。Boost libはこのメカニズムを提供しますが、TBBは提供しませんでした。
このケースをTBBで実装するにはどうすればよいですか?
c++ - PythonスレッドでTBB'parallel_for'を呼び出す
関数を公開するPython用のカスタムc++モジュールがあり、その一部はTBB(tbb21_015oss)を使用して処理を高速化します。
これまで、Win32環境でPython(2.6.2)からTBBアクセラレーション関数を呼び出すときに問題はありませんでした。
しかし今、Pythonスレッド(threading.Thread
クラスを使用して作成された)からそのような関数を呼び出すときに問題が発生します-同じ関数を呼び出している間、メインのPythonスレッドからは正常に機能します。
関数を呼び出すと、アプリケーションがクラッシュし、次のメッセージが表示されます。
TBB.dllのベースアドレスは0x03510000であり、MSVC 2005デバッガーによると、クラッシュはTBBの「parallel_for.h」からのコードで発生しますstatic void start_for::run( const Range& range, const Body& body, const Partitioner& partitioner )
。
逆参照されているNULLポインターがあるようです。
FWIW、TBBは、遅延初期化メカニズムを使用して初期化されます。
これを機能させる方法はありますか?たとえば、TBBを「カスタム」スレッドから呼び出せるようにするには、特定の初期化が必要ですか?
c++ - ffmpeg(-mt) と TBB
ffmpeg-mt がマージされた ffmpeg の最新ビルドを使い始めました。
ただし、私のアプリケーションは TBB (Intel Threading Building Blocks) を使用しているため、新しいスレッドの作成と同期を伴う ffmpeg-mt の実装は、デコード関数を実行する TBB タスクを潜在的にブロックする可能性があるため、あまり適していません。また、キャッシュを不必要に破棄します。
ffmpeg がマルチスレッドを有効にするために使用するインターフェイスを実装しているように見える pthread.c を見回していました。
私の質問は、同じ関数を実装するが、明示的なスレッドの代わりに tbb タスクを使用する tbb.c を作成できるかどうかです。
私は C の経験がありませんが、tbb (C++) を簡単に ffmpeg にコンパイルすることはできないと思います。したがって、実行時にffmpeg関数ポインタを何らかの方法で上書きするのがよいでしょうか?
TBB を ffmpeg スレッド API に実装することに関する提案やコメントをいただければ幸いです。
c++ - 複数のコアを使用して大規模なシーケンシャル ファイルを C++ で処理する
大きなファイル (RAM より大きく、一度に全体を読み取ることができない) があり、行ごとに (C++ で) 処理する必要があります。できれば Intel TBBまたは Microsoft PPLを使用して、複数のコアを利用したいと考えています。このファイルの前処理 (4 つの部分に分割するなど) は避けたいと思います。
ファイル内の (0, n/4, 2*n/4 3*n/4) 位置に初期化された 4 つのイテレータを使用するようなことを考えていました。
それは良い解決策ですか、それを達成する簡単な方法はありますか?
または、ストリームの効率的な同時読み取りをサポートするいくつかのライブラリを知っていますか?
更新:
私はテストをしました。ボトルネックは IO ではなく、CPU です。そして、バッファ用のRAMがたくさんあります。
レコードを解析する必要があります (var サイズ、それぞれ約 2000 バイト、レコードは一意の '\0' 文字で区切られています)、検証し、計算を行い、結果を別のファイルに書き込む必要があります
c++ - tbb で連続する大きなデータの処理
私は大量の引用データを処理するためにC ++アプリに取り組んでいます. (MSFT、AMZN など) と tbb。そして、それをどのように構成するかを考えていました。私はparallel_forとpipelineとconcurrent_queueを見てきました。
プロセスは基本的にデータを解析し、処理してファイルに出力します。解析と処理は並行して実行できますが、出力はシンボルごとに順番に行う必要があります。
ロックフリーのソリューションまたは最小限のロックを使用したいのですが、順序を維持するためにconcurrent_queueを保持しているようです。
どんなアイデアでも役に立ちます
ありがとう、デビッド
c++ - C++ の tbb::tbb_thread について
C++ で TBB を使用しようとしており、tbb_thread に関するチュートリアルを探しています。インターフェイスとは何か、どのように使用されるかなど、tbb_threadに関するリンクまたはチュートリアルを提供できますか?tbb_threadはスレッドAPIに他ならず、移植可能です。
ありがとう!
c++ - boost::shared_ptr を提供する並行オブジェクト プール
shared_ptr が返され、明示的にプールに返す必要がない同時オブジェクト プールを実装したかったのです。私は基本的に、並列キューに配列を割り当て、shared_ptrs をプッシュし、カスタム deletor を実装しました。うまくいくようです。何か不足していますか?
c++ - スレッドのフォークのコスト: マルチスレッド化を正当化するための最小ベクトル サイズを決定するにはどうすればよいですか
多くのベクトル ペアの内積を計算しようとしています。各ドット積は複数のスレッドを使用できますが、データの依存性のため、2 つ以上のドット積を同時に実行することはできません。ここで、マルチスレッドを正当化する最小ベクトル サイズはどれくらいですか? 誰も正確な答えを出すことができないことはわかっているので、大まかな見積もりを探しているだけです.
問題にもう少しコンテキストを追加するには: 私のプログラムは多くの内積を計算する必要がありますが、一度に実行できる内積は 1 つだけです。
内積を書き直してマルチスレッド化したいと考えています。しかし、length
小さすぎると、複数のスレッドを使用しても何も得られません。
編集。ご意見をお寄せいただきありがとうございます。答えは、コンパイラ、CPU、メモリ、スレッド化ライブラリなど、あまりにも多くの要因に依存しているようです。
c++ - Qt Creator で TBB を使用する方法
Qt Creator で TBB を使用しようとしています。Qt 4.7 と TBB 3.0 を使用しています。以下は .pro での設定です。
私のサンプル コードは非常に単純です。
しかし、プログラムはコード -1073741515 で終了します
以前に Qt Creator で TBB を使用した人はいますか?
よろしくお願いします、
c++ - Intel TBBはAMDプロセッサで動作しますか?
重複の可能性:
AMDマルチコアプログラミング
Intel TBBプロセッサは依存していますか?それはamdまたはARMで動作しますか(たとえばmeeGoの下で?)