問題タブ [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.
asynchronous - 非並列タスクに TBB を使用する
TBB を使用してスレッドプールの動作を取得したいと考えています。しかし、TBB に関するドキュメントを読むときは常に、parallel-for、parallel-dowhile などについて話します。対照的に、必要なのはタスクをスレッド プールに割り当てて、それらのタスクが「独自に」実行されるようにするためのメイン スレッドです。非同期的に。ここでのタスクは、GUI のイベント処理です。
TBB タスク スケジューラはそのような動作に適していますか? タスクスケジューラーから得た印象は、分解して互いに並行して実行できるタスクがある場合にのみ有益であるということです。
c++ - 自作のワークキューと Intel TBB の比較
どの並列フレームワークを使用するかを検討していC/C++
ます。いくつかの非常に特殊な条件があり、100% 確実ではありません。たとえば、TBB
「さらに」何かを追加することができます。
N
実行中のスレッドと 1 つの同期されたワークキュー (pthread
ミューテックスを使用)があります。- 私たちの仕事は優先されます (
int
)。 - ジョブはキューに入れられ、アイドル スレッドが最も優先度の高いジョブを取得します。
これは、キューが空になるまで繰り返されます。
TBB
さて、そして今、 (スレッド ビルディング ブロック)のようなフレームワークが、アルゴリズムの観点から、この特別なシナリオにさらに多くを提供できるかどうか知りたいです?? (だから、内部...)
block - TBB がテスト例をコンパイルしない
TBBが機能しません。「はじめに」ドキュメントの手順に従っています。
次の手順を実行しています。
- Linux ファイル + ソース ファイルをダウンロードします。
- それらを1つのディレクトリに抽出する
- 通話する
- tbb.../bin に移動し、ソース tbbvars.sh intel64 を呼び出します
- examples/Getting_started/sub_string_finder に移動
- 通話する
次に、エラーが発生します。
私は本当にたくさんグーグルで検索しましたが、関連するものは見つかりません。
-I ステートメントをいくつか追加しようとしましたが、役に立ちませんでした
インクルード/リンクの問題のようなものだと思いますが、修正方法がわかりません。
これはすべて、fedora 16 64 ビットで行われます。(カーネル 3.1.4) // TBB バージョン 4.0
c++ - tbb::cache_aligned_allocator: __m128i で「非クラス タイプのメンバのリクエスト」を取得しています。ユーザーエラーまたはバグ?
GCC で __m128i をキャッシュ整列ベクトルの値の型として使用しようとしていますが、次のエラーが発生します。
/usr/include/tbb/cache_aligned_allocator.h:105:32: エラー: '* p' のメンバー '~tbb::cache_aligned_allocator<__vector(2) long long int>::value_type' の要求。クラス型 'tbb::cache_aligned_allocator<__vector(2) long long int>::value_type {aka __vector(2) long long int}'</p>
コンパイラは、tbb/cache_aligned_allocator.h の次の行までトレースします。
コンパイラ エラーをトリガーするコードは次のとおりです。
Debian のバージョン管理によると、私の GCC バージョンは 4.6.1-2 で、TBB バージョンは 3.0+r147-1 です。これは Threading Building Blocks のバグですか、それとも何かを間違って使用していますか?
c++ - 共有ポインタとマルチスレッド
現在、かなりの数のテストに次のコードを使用しており、問題は発生していませんが、コードがスレッドセーフではなく、競合状態につながる可能性があることに気付きました。
私の質問は、マークされた行に関するものです。共有ポインターのコピー構築中に、参照カウントの増加により競合状態が発生する可能性があると思います。
ポインターを参照でキャプチャして直接使用することで回避できましたが、それでも解決策に興味があります。
c++ - TBBを使用した非常に基本的なforループ
私は非常に新しいプログラマーであり、Intelの例に問題があります。最も基本的な可能なループがtbbでどのように実装されているかを見ることができれば役立つと思います。
これは、オーディオデータのインターリーブを解除するために使用しているループです。このループはtbbの恩恵を受けますか?どのように実装しますか?
c++ - ブーストまたは C++11 には、tbb::queuing_mutex および tbb::spin_mutex と同一のミューテックスがありますか?
boost または C++11 が and と同一のミューテックスを持っているかどうか疑問に思っていtbb::queuing_mutex
ますtbb::spin_mutex
か?
tbb - MinGWでのTBBの構築/リンク
MinGW32(Windows 7 64ビット)でTBBを構築し、単純なプログラムを正常にリンクしています。残念ながら、私の同僚は正常にリンクできません。どちらも同じバージョンのWindows、同じバージョンのMinGW(mingw-get-inst-20110802)を実行しており、まったく同じコードをコンパイルしようとしています。PATH環境変数はまったく同じです(.:/usr/local/bin:/mingw/bin:/bin)。それでも、すべてが同じであるにもかかわらず(私が知る限り)、プログラムを正常にビルドして実行できますが、リンクステップでの同僚の試みは失敗しました。私が彼に私のtbb.dllを与えると、彼は彼のプログラムを正常にリンクすることができます。したがって、私は彼のtbb.dllのビルドに何か問題があると信じさせられます。すべてのオブジェクトファイルとライブラリに対して32ビットバイナリを生成していることを(ファイルを使用して)確認しました
TBBのビルドに使用しているコマンドラインは次のとおりです。
コンパイルしている簡単なテストプログラムは次のとおりです。
簡単なテストプログラムを作成するために使用しているコマンドライン
私の場合、それは完璧に構築され、リンクされます。彼の場合、彼はエラーメッセージを受け取ります:
このメッセージは、リンカがシンボルtbb :: task_scheduler_init :: initialize()およびtbb_task_schedule_init :: terminate()を見つけるのに問題があることを示しているようです。ただし、これらのシンボルは両方ともtbb.dllに存在します(以下のnm出力は、彼とIの両方で同じです)。
同じツール、バイナリ、ソースコード、オペレーティングシステムなどを使用しているにもかかわらず、同僚がリンクできない場合に、なぜこの単純な例を作成してリンクできるのかについて、誰かが提案できますか?
c++ - tbb::concurrent_hash_map - 始めにヘルプが必要
私はTBBを始めようとしています。
同時ハッシュ マップを実装したい (concurrent_hash_map)
long int でキーを設定し、char* を返す必要があります...
ここに私が持っているコードがあります:
私は C++ にまったく慣れていないことを覚えておいてください... 私はこれに 1 時間以上苦労してきました。次のリンクを読みました。
http://www.devx.com/cplus/Article/33334/1763/page/2
誰かが私を正しい方向に向けてもらえますか?
ドキュメントからこの例を取得しました:
[編集: 著者の解決策は、コミュニティ wiki の回答として移動されました]
c++ - TBBとの同時ファクトリ/フライ級
std::map
工場で作成されたオブジェクトを保存してアクセスを提供するために使用するフライウェイトパターンがシリアルで機能しています。ファクトリはiterator
、マップ内のオブジェクトを指すを返します。ファクトリ内のオブジェクトは定数であるため、一度挿入すると、消去されない限り更新されません。
を使用してファクトリを同時に作成したいのtbb::concurrent_hash_map
ですが、返品がどうあるべきかわかりません。を使用することもできますがiterator
(そうする必要がありますconst_iterator
か?)、ドキュメントには、何かがfind
またはinsert
で実行されると、すべてのイテレータが無効になると記載されていconcurrent_hash_map
ます。したがって、読み取り専用アクセスのみが必要なため、を使用できますが、これはシリアル実装( vs )const_accessor
とは異なります。iterator
accessor
どちらを使用するのが良いですか?タイプ(つまり、両方のイテレータ)の一貫性が重要ですか?シリアルとスレッドの両方のコンパイル時オプションが存在する必要があります。