3

Intel x86_64 マシンを対象とする C++ で、時間のかかるシミュレーションを開発しています。少し調べたところ、並列化を可能にする興味深いライブラリが 2 つ見つかりました。

ドキュメントに記載されているように、どちらもマルチコア プロセッサでの並列処理を対象としていますが、どちらが最適かはまだわかっていません。私の知る限り、Cilkplus は並列処理を容易にするために 3 つのキーワードを実装するだけです (これにより、これらのキーワードをサポートするために GCC が再コンパイルされます)。一方、TBB は、より優れた並列開発を促進するための単なるライブラリです。

どちらをお勧めしますか?

CilkPlus のインストールで多くの問題が発生していることを考慮してください (まだ試していて、まだ悲鳴を上げています)。それで、最初にTBBをチェックする必要があるのではないかと考えていました。Cilkplus は TBB より優れていますか? あなたは何をお勧めします?

それらは互換性がありますか?

CilkPlus のインストールを完了する必要があります (まだこれを祈っています)。TBB を一緒に使用することは可能でしょうか? 彼らは一緒に働くことができますか?CiclkPlus と TBB の両方で SW 開発を経験した人はいますか? 彼らと一緒に働くことをお勧めしますか?

ありがとうございました

4

5 に答える 5

5

以下は、元の投稿の質問に対する FAQ タイプの情報です。

Cilk Plus 対 TBB 対 Intel OpenMP

つまり、実装しようとしている並列化のタイプと、アプリケーションのコーディング方法によって異なります。

于 2013-10-08T15:27:45.550 に答える
3

この質問には、TBB の文脈で答えることができます。TBB を使用する利点は次のとおりです。

  • コードを実行するために必要なコンパイラ サポートはありません。
  • TBB の汎用 C++ アルゴリズムにより、ユーザーは独自のオブジェクトを作成し、それらをタスクとしてスレッドにマップできます。
  • ユーザーはスレッド管理について心配する必要はありません。組み込みのタスク スケジューラは、可能なハードウェア スレッドの数を自動的に検出します。ただし、ユーザーはパフォーマンス調査のためにスレッド数を固定することを選択できます。
  • 依存関係を尊重するタスクを作成するためのフロー グラフにより、ユーザーは関数並列処理とデータ並列処理を簡単に活用できます。
  • TBB は本来スケーラブルであるため、大規模なシステムに移行する際にコードを変更する必要がありません。
  • 活発なフォーラムとドキュメントが継続的に更新されています。
  • Intel コンパイラでは、最新バージョンの tbb が非常にうまく機能します。

短所は

  • オープン ソース コミュニティのユーザー ベースが少なく、例を見つけるのが難しい

  • ドキュメントの例は非常に基本的なものであり、古いバージョンでは間違っています。ただし、Intel フォーラムでは、問題を解決するためのサポートをいつでも延長できます。

  • テンプレート クラスの抽象度が非常に高いため、学習曲線が非常に急勾配になります。

  • タスクを作成するオーバーヘッドが高くなります。ユーザーは、パーティショナーが最適な粒度のタスクを作成するのに十分な大きさであることを確認する必要があります。

    私も cilk を使用したことはありませんが、2 つのドメインにユーザーがいるとすれば、大多数が TBB のユーザーであることは明らかです。Intel が更新されたドキュメントと無料サポートによって TBB を推進する場合、TBB のユーザー コミュニティは成長する可能性があります。

于 2017-07-14T08:22:07.047 に答える
0

したがって、OPからのリクエストとして:

以前から使ってTBBいて満足しています。優れたドキュメントがあり、フォーラムは活発です。ライブラリ開発者が質問に答えるのを見るのは珍しいことではありません。試してみる。(使っcilkplusたことがないので語れませんが。)

Ubuntu と Windows の両方で使用しました。Ubuntu のパッケージ マネージャーを介してパッケージをダウンロードするか、自分でソースをビルドすることができます。その場合、問題はないはずです。Windowsでは、環境下でビルドTBBしました。MinGWcygwin

互換性の問題に関しては、何もないはずです。たとえば、またはでTBB正常に動作します。他のスレッド ソリューションと組み合わせて使用​​できるように設計されています。Boost.ThreadOpenMP

于 2013-10-08T14:42:45.237 に答える