問題タブ [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.
parallel-processing - タスクを書くにはどうすればよいですか?(並列コード)
Intelスレッドビルディングブロックに感銘を受けました。私はスレッドコードではなくタスクを書く方法が好きで、私の限られた理解でそれが内部でどのように機能するかが好きです(タスクはプールにあり、4コアには100スレッドはありません、タスクはオンになっていないため実行が保証されていません独自のスレッドであり、プールの奥深くにある可能性がありますが、別の関連タスクで実行される可能性があるため、通常のスレッドセーフでないコードなどの悪いことを行うことはできません。
ライティングタスクについてもっと知りたいと思いました。私は「タスクベースのマルチスレッド-100コアをプログラムする方法」のビデオが好きですhttp://www.gdcvault.com/sponsor.php?sponsor_id=1(現在最後から2番目のリンク。警告は「素晴らしい」ではありません)。私のお気に入りの部分は、「迷路の解決は並行して行う方がよい」というものでした。これは、48分マーク付近です(左側のリンクをクリックできます。この部分は、実際に見る必要があるすべてです)。
ただし、タスクの記述方法に関するコード例とAPIをもっと見たいと思います。誰かが良いリソースを持っていますか?クラスまたはコードの一部がプールにプッシュされた後にどのように見えるか、またはすべてのコピーを作成する必要があるときに奇妙なコードがどのように見えるか、すべてのどれだけがプールにプッシュされるかはわかりません。
multicore - マルチコア プログラミング。Boost の MPI、OpenMP、TBB、またはその他の何か?
私はマルチコア プログラミングの初心者ですが、C++ のプログラミング方法は知っています。
現在、マルチコア プログラミング ライブラリを探しています。楽しみのためだけに試してみたいと思います。現在、3 つの API を見つけましたが、どの API を使用すればよいかわかりません。現在、Boost の MPI、OpenMP、および TBB が表示されます。
これら 3 つの API (またはその他の API) のいずれかを使用したことがある方は、これらの違いを教えてください。AMD や Intel のアーキテクチャなど、考慮すべき要素はありますか?
multithreading - メッセージの並列処理にアプローチするには?
インテル スレッディング ビルディング ブロックを使用するようにアプリのメッセージング システムを再設計しており、2 つの可能なアプローチのどちらかを決定しようとして困惑しています。
基本的に、一連のメッセージ オブジェクトと、メッセージの種類ごとに一連のハンドラーがあります。メッセージ オブジェクトごとに、そのメッセージ オブジェクトの種類に登録されている各ハンドラーを適用します。
順次バージョンは次のようになります (疑似コード):
私が検討している最初のアプローチは、メッセージ オブジェクトを順番に (順次) 処理し、ハンドラーを同時に適用します。
長所:
- メッセージの予測可能な順序付け (つまり、FIFO 処理順序が保証されます)
- (潜在的に) 各メッセージの処理の待ち時間が短くなる
短所:
- 単一のメッセージ タイプのハンドラーよりも多くの処理リソースを使用できる (不適切な並列化)
- 使用するハンドラごとにメッセージ オブジェクトをコピーする必要があるため、プロセッサ キャッシュの不適切な使用
- 小さなハンドラーの大きなオーバーヘッド
このアプローチの疑似コードは次のようになります。
2 番目のアプローチは、メッセージを並行して処理し、ハンドラーを各メッセージに順番に適用することです。
長所:
- プロセッサー・キャッシュのより良い使用 (メッセージ・オブジェクトを、それを使用するすべてのハンドラーに対してローカルに保ちます)
- 小さなハンドラーは、それほど多くのオーバーヘッドを課しません (実行する他のハンドラーがある限り)
- ハンドラーよりも多くのメッセージが予想されるため、並列処理の可能性が高くなります
短所:
- 予測不可能な順序 - メッセージ A がメッセージ B の前に送信された場合、両方が同時に処理されるか、A のすべてのハンドラーが終了する前に B が処理を終了する可能性があります (順序は非決定論的です)。
擬似コードは次のとおりです。
2 番目のアプローチには、最初のアプローチよりも多くの利点がありますが、非決定論的な順序付けは大きな欠点です。
どのアプローチを選択しますか、またその理由は何ですか? 考慮すべき他のアプローチはありますか (明らかな 3 番目のアプローチ: 並列メッセージと並列ハンドラーのほかに、両方の欠点があり、実際の償還要因がないことがわかります)?
ありがとう!
編集:
私がやろうとしていることは、デフォルトで #2 を使用することだと思いますが、「会話タグ」を各メッセージに添付できるようにします。同じタグを持つすべてのメッセージは、会話に関連して順番に並べ替えられ、処理されます。ハンドラーにはメッセージと一緒に会話タグが渡されるため、必要に応じて会話を続けることができます。このようなもの:
a は b の前に処理され、b は z の前に処理されます。x は、a、b、z と並行して処理できます。会話内のすべてのメッセージが処理されると、会話は破棄されます。
macos - OS X に Intel TBB をインストールするにはどうすればよいですか?
OS X 10.6 にインテル スレッド ビルディング ブロック (TBB) のオープン ソース バージョンを正しくインストールするにはどうすればよいですか? オープン ソース バージョンには、適切なインストール スクリプトがないようです。
c++ - スレッドビルディングブロックに関するタスク
サンプルコードは次のとおりです。
ここでは、ノンブロッキング計算をシミュレートするためだけに大きなフィボナッチ数列を計算しています。このコードが3つ以上のスレッドを生成することを期待していました(私のコンピューターはCore2Duoです)が、最初と2番目のタスクのみが呼び出されます。これは見物ですか?
tbb - マルチコアアプリケーションでのパフォーマンス向上の問題
Cで記述されたシリアル(非並列)アプリケーションがあります。インテルスレッディングビルディングブロックを使用して変更および再記述しました。クアッドコアマシンであるAMDPhenomIIマシンでこの並列バージョンを実行すると、4倍以上のパフォーマンスが向上し、アムダールの法則と矛盾します。誰かが私にこれが起こっている理由を教えてもらえますか?
ありがとう、Rakesh。
architecture - Intel Threading Building にどのアーキテクチャを指定するか
今日、本屋で O'Reilly の TBB に関する新しい本に出会いました。TBB がスレッドをタスクに抽象化する方法が本当に気に入りました。しかし、チュートリアルの 12 ページの Linux* システムへのインストールで、ia32、intel64、および ia64 の 3 つしか使用できないことに気付きました。私たちのサーバーの dmesg はこれを示しています: [ 0.132804] CPU0: Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz stepping 0a
. どれを選べばいいの?
ありがとう、アレックス
frameworks - Intel の TBB 3.0 フレームワークを MacOS 10.6 (Snow Leopard) にインストールする
Intel の Threading Building Blocks (TBB) 3.0 をフレームワークとして MacOS システムにインストールするのに少し問題があります。誰かが良いチュートリアルを知っていますか? TBB 2.2 を含む MacPorts を使用してみました。必要なすべてのライブラリがインストールされますが、フレームワークがありません。また、Intel のサイトには、このフレームワークを提供できる .dmg インストール ファイルがないようです。すべてのダウンロード ファイルは、src コードまたはバイナリを含む zip ファイルです。
何か案は?
ありがとう!
sorting - TBBのconcurrent_vectorまたはconcurrent_queueをソートする方法は?
これで、concurrent_vector または queue に一連の自己定義データ型オブジェクトを保持する必要があるソルバーができました。オブジェクトは異なるスレッドから取得されるため、並行処理する必要があります。この並行コンテナーを使用して、これらのオブジェクトを並べ替え、重複を排除し、他のスレッドがそれらを必要とするときにそれらを送り返したいと考えています。
ただし、TBB が、異なるスレッドから同時に読み書きできる concurrent_vector と concurrent_queue を提供していることは知っています。しかし、コンテナ内のオブジェクトをソートするにはどうすればよいでしょうか? 誰もがそれを行う方法を知っていますか? ありがとう。
multithreading - IntelTBBによって使用されるスレッドの数
Intel TBBは、並列セクションに使用するスレッドの数をどのように選択しますか?
ある種の仕様はありますか?