質問

私は彼らのパフォーマンスに関してPPLとOpenMPを比較したいが、ウェブ上で詳細な調査を見つけることができない。私はPPLで経験している人がたくさんないと思います。

Visual Studio 2010を使用して、Windows上でソフトウェアを開発しており、短期間に他の場所に移植したくない。

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

役に立ちましたか?

解決

おそらくあなたのアルゴリズムに依存しているが、この研究はPPLがopenmp:

である可能性があることを示している。

href="http://www.codeproject.com/articles/373305/visual-cplusplus-11-beta-benchmark-of-parallel-1u" rel="nofollow"> http:// www。codeProject.com/articles/373305/Visual-Cplusplus-11-beta-benchMark-of-parallel-loo

Serial : 72ms
OpenMP : 16ms
PPL    : 12ms
.

他のヒント

MSDN プロパティの素晴らしい比較 OpenMPとConcrt(PPLの中心):

OpenMPモデルは、非常に大きな計算上の問題が単一のコンピュータの処理リソースに分散されている、高性能コンピューティングにとって特に良い一致です。このシナリオでは、ハードウェア環境が知られており、開発者はアルゴリズムが実行されたときにコンピューティングリソースへの排他的アクセスを推測することができます。

しかし、他の制約の少ないコンピューティング環境は、OpenMPにとって良い一致ではないかもしれません。たとえば、再帰的な問題(クイックソートアルゴリズムやデータのツリーの検索など)は、OpenMPを使用して実装するのが難しいです。同時実行時間は、Parallel Parttersライブラリ(PPL)と非同期エージェントライブラリを提供することによってOpenMPの機能を補完します。 OpenMPとは異なり、並行性ランタイムは、利用可能なリソースに適応し、ワークロードの変化として並列度を調整する動的スケジューラを提供します。

だから、OpenMPの主な欠点:

  • スタティックシューティングモデル
  • キャンセルメカニズムに含まれていません(非常に大きな欠点、多くの同時にアルゴリズムのキャンセルが必要です)。
  • コンサウンエージェントアプローチを含みません。
  • 麻痺コードの例外のトラブル。

あなたの唯一の懸念がパフォーマンスであるならば、私は2つのアプローチについてを考えるものは完全に無関係です。これは、議論によるものではなく、経験的アプローチによって解決可能な質問です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top