5

PPLとOpenMPのパフォーマンスを比較したいのですが、Web上で詳細な調査を見つけることができません。PPLの経験者は少ないと思います。

Visual Studio 2010を使用してWindowsでソフトウェアを開発していますが、短期的には他の場所に移植したくありません。

移植性が問題ではなく、パフォーマンスだけが問題である場合、これら2つの方法についてどう思いますか?

4

3 に答える 3

5

MSDN には、プロパティ OpenMP と ConcRT (PPL のコア) の優れた比較があります。

OpenMP モデルは、非常に大きな計算問題が 1 台のコンピューターの処理リソース全体に分散されるハイ パフォーマンス コンピューティングに特に適しています。このシナリオでは、ハードウェア環境が既知であり、開発者は、アルゴリズムの実行時にコンピューティング リソースに排他的にアクセスできることを合理的に期待できます。

ただし、制約の少ないその他のコンピューティング環境は、OpenMP に適していない場合があります。たとえば、再帰的な問題 (クイックソート アルゴリズムやデータ ツリーの検索など) は、OpenMP を使用して実装するのがより困難です。コンカレンシー ランタイムは、並列パターン ライブラリ (PPL) と非同期エージェント ライブラリを提供することで、OpenMP の機能を補完します。OpenMP とは異なり、コンカレンシー ランタイムは、使用可能なリソースに適応し、ワークロードの変化に応じて並列度を調整する動的スケジューラを提供します。

したがって、OpenMP の主な欠点:

  • 静的スケジューリング モデル。
  • キャンセルメカニズムが含まれていません (非常に大きな欠点であり、多くの同時実行アルゴリズムでキャンセルが必要です)。
  • 同時実行エージェントのアプローチは含まれていません。
  • 並列コードの例外に関する問題。
于 2012-11-14T10:50:24.160 に答える
2

おそらくアルゴリズムによって異なりますが、この調査によると、PPLはOpenMPよりも高速である可能性があります。

http://www.codeproject.com/Articles/373305/Visual-Cplusplus-11-Beta-Benchmark-of-Parallel-Loo

Serial : 72ms
OpenMP : 16ms
PPL    : 12ms
于 2012-09-17T11:15:20.417 に答える
1

唯一の関心事がパフォーマンスである場合、2 つのアプローチについて私が考えることはまったく関係ありません。これは、議論ではなく、経験的なアプローチによって解決できる問題です。

于 2012-03-14T10:43:38.790 に答える