問題タブ [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.
c++ - tbb::concurrent_hash_map が SIGSEGV をスローする
mingw32を使用して、WindowsでTBBを使用して構築された小さなプログラムを実行しています。これは、parallel_for を実行します。オブジェクトの parallel_for 内で、concurrent_hash_map オブジェクトに変更を加えます。実行を開始しますが、後でアクセサーを使用しようとすると SIGSEGV がスローされます。どこに問題があるのかわからない。
私のオブジェクト:
pointMap_t は次のように定義されます。
誰かがこの問題に光を当てることができますか? 私はTBBが初めてです。apply メソッドが a->second を呼び出すと、シグナルがスローされます。
c++ - 大規模なデータ処理に推奨されるC++並列化ライブラリは何ですか
処理対象のデータが膨大な場合に、C++で並列化するアプローチを推奨できる人はいますか。私はC++での並列化のためのopenMPとIntelのTBBについて読んでいますが、まだ実験していません。これらのうち、並列データ処理に適しているのはどれですか?他のライブラリ/アプローチはありますか?
c++ - タスクスケジューラを使用したIOCP(スレッド化されたビルディングブロック)
私はTBBを使用していて、タスクスケジューラでIOCPをどのように使用できるのか疑問に思っていました。誰かがこれをしましたか?もしそうなら、いくつかの詳細をいただければ幸いです。
IOCPの経験はあまりありませんが、IOCPを使用してすべてのスレッドにメッセージを送信したいと思います。タスクスケジューラの外部では、IOCPにスレッドへのハンドルを与えることができます。ただし、TBBでは、スレッドへのハンドルを確実に取得する方法が完全にはわかりません。
ありがとう!
c++ - TBB アプリケーション (タスク スケジューラ) の終了
現在、タスク スケジューラを使用して、スレッド ビルディング ブロックを使用して最新のアプリケーションを起動しています。
私のタスクの 1 つがプログラムを終了する理由に遭遇した場合:
1.) 他のすべてのタスクに戻るように指示するにはどうすればよいですか?
2.) アプリケーションを安全に終了できるように、他のすべてのタスクが戻ったことをメイン スレッドで確認するにはどうすればよいですか?
ありがとう!
c++ - Intel TBB メモリ アロケータのパフォーマンス?
私が取り組んでいたプロジェクト (MMORPG クラスター、Linux 2.6、最近の gcc、8 コア Intel Xeon) で TBB メモリ アロケーターを試してみたところ、パフォーマンスが低下して驚きました。理由は何ですか?少なくともパフォーマンスは向上しないと予想していました (すべてのコアがロードされ、割り当てが定期的に行われます)。誰かがTBBとそのメモリアロケータで自分の経験を共有できますか? あなたの時間のためにtnx
tbb - インテル スレッド ビルディング ブロックを使用した並列マージソートに最適なコードが必要です
C++ で Intel スレッド ビルディング ブロックを使用した並列マージソートに最適なコードが必要です
optimization - TBBを使用した少数の命令(SSE2、SSE4)によるループの最適化
私は単純な画像処理関連のアルゴリズムを持っています。簡単に説明すると、float内の画像(平均)が8ビット画像によって減算され、結果がfloat画像(宛先)に保存されます。
この関数は主に組み込み関数によって書かれています。
TBB、parrallel_forを使用してこの関数を最適化しようとしましたが、速度は向上しませんでしたが、ペナルティが発生しました。
私は何をすべきか ?コードを最適化するために、TBBタスクなどのより低レベルのスキームを使用する必要がありますか?
c++ - new の代わりに malloc を使用し、オブジェクトの作成時にコピー コンストラクターを呼び出す
TBB のスケーラブルなアロケーターを試してみたかったのですが、コードの一部を置き換える必要があったので混乱しました。アロケータを使用して割り当てを行う方法は次のとおりです。
編集: 上に示されているのは、scalable_allocator で割り当てが行われる方法ではありません。ymettが正しく述べたように、割り当ては次のように行われます。
これは、malloc を使用するのとほとんど同じです。
これは私が置き換えたかったコードです:
それで、プログラムを試しました:
ここで、malloc を呼び出してもオブジェクトがインスタンス化されないことがわかりました (これまで malloc を使用したことがありません)。したがって、コピー ctor に渡す方法を理解する前に*this
、malloc を使用するときにオブジェクトをインスタンス化する方法を知りたいと思います。
pthreads - cnc/tbb で使用されるスレッドの制御数
Intel cnc ライブラリを使用していますが、コアと同じ数のスレッドが作成されます。目的に使用されるスレッドの数を制御し、場合によってはそれらの配置を制御する方法はありますか?
c++ - tbb::concurrent_vector が間違ったサイズを返す
私はTBB フォーラムでこの質問をしましたが、ここの誰かが追加の考えを持っていることを願っています. 発生している問題をデバッグしていたところ、 の奇妙な動作に気付きましたtbb::concurrent_vector
。
push_back()
肝心なのは、呼び出しが実際に完了した後、size()
の にconcurrent_vector
はこれが反映されないということです。capacity()
と をキャプチャするとsize()
、実際の要素数ではなく容量が返さsize() == capacity() => true
れると思われるため、容量に関連するように絞り込みました。size()
この問題を再現する簡単なプログラムを作成しました。この問題は、ベクターが空のときに最も頻繁にトリガーされます。簡単にするために、このプログラムは、呼び出しが返さsize() != 0
れた直後に単純にアサートします。push_back()
これが予想される動作なのか、それともバグなのか、誰かが教えてくれることを願っています。
彼らのリファレンスマニュアルによると:
push_back() "ベクターの末尾に値のコピーを追加します。"
と
size() は、「ベクター内の要素の数。結果には、いずれかの成長メソッド (5.6.3) への同時呼び出しによって割り当てられているが、まだ構築中の要素が含まれる場合があります。」
これに基づいて、少なくとも一度のリターンを反映するsize()
必要があると思います。push_back()
push_back()