my previous question私はMicrosoftから提供されたppl.hからparallel_for件名に触れました。
すぐに私はそれを使って自分のアプリケーションを移植不可能にすることに気が付きました(私が正しいとすれば、Microsoft(ppl.hヘッダー)に固有です)。
私の意見では、これはC++プログラミングの非常に重要な側面を壊してしまいます。
だから私の質問は以下のとおりです。私は右の私が
2(移植不可能で、私はそれがMSから1以外のコンパイラでコンパイルすることができないという意味で)皆さんからのparallel_forを使用すると、コードが移植不可能になるというにおける
1.アム私がコードでparallel_forを使用しているアプリケーションで、後の段階でUI(Qtで実行)を提供したいのであれば、parallel_forを他のいくつかの(ポータブル)代替または私はVSのQtとコアのUIを行うことができません?
3. pplの(ポータブル)代替手段は何ですか?pplに代わるもの
答えて
インテルのThread Building Blocksを検討してください。 OpenMPとは違って、実際には C++を使用します。単純にC++コンパイラでコンパイルするのではなく(つまり、C++としてコンパイルできるCライブラリです)。それはあなたがPPLで見るものの多くを持っていますが、クロスプラットフォームです。
またBoost.Threadもありますが、これはC++です(TBBと同じくらい直接的ではありませんが)、クロスプラットフォームです。
移植不可能は私が右(移植不可能で、私はそれがMSから1以外の コンパイラでコンパイルすることはできません という意味)
皆さんから のparallel_forを使用すると、あなたのコード が移植不可能になるという中でアムプラットフォーム自体を切り替えると他のコンパイラを使いたいならば、Windows上で移植可能かもしれません。しかし、PPLは同時実行ランタイムの一部であり、MSVCRT100.DLLに配置されており、これにリンクする(または実行時にDLLを必要とせずに静的にリンクする)必要があることに注意してください。私はこれが他のコンパイラ/リンカでどのようにできるのかよくわかりませんが、それは実行可能だと思います。
は右の私のコードがなる でのparallel_forを使用して、私はmommentで に取り組んでいるアプリケーションのために、後 ステージ上で、私はUIを提供する場合( Qtの中で行われる)という中で私をアムどちらか私はいくつかの他の (ポータブル)の代替と のparallel_forを交換するだろうか、私はならないことを意味するだろう 閉塞 VS にQtとコアに
あなたは、あなたのコア - を書くことができますがUIを行うことができますPPL/VC++、oを使用したフレームワークQT /その他のコンパイラのGUI対応です。このためには、PPLを使用するDLLを作成し、GUIアプリケーションはDLLを使用します。私はあなたが私がここで何を意味するのか理解していると信じていますこれにより、移植性(Windows上での)に関する頭の負担も軽減されます。
- pplの(ポータブル)代替手段は何ですか?
多くの場合でも、Windows/VC++ではPPLを使用することをお勧めします。インテルのTBBの使用を検討することができます。OpenMPはTBB/ConcRTに比べて面倒であり、利点はありません
Casablancaプロジェクトで働く人々は、PPLXという移植可能なバージョンのPPLXを作っています。ライセンスはApache 2.0ライセンスの下でライセンスされています。
以前は、PPLチームと緊密に協力して、両方のバージョンを同期させ、バグ修正を賢明にしていると言いました(最後の投稿はthis thread参照)。
PPLXはタスクのサポートに重点を置いています。 parallel_forやparallel_ *にマッチしたものはサポートしていません。 –
PPLかTBB(またはHPX)のどちらを使用していても、非常に類似したものが標準化されます。たとえば、参照:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4411.pdf
- 1. SwaggerHubに代わるもの
- 2. JqueryUIに代わるもの?
- 3. ツリービューに代わるもの
- 4. QGLViewerに代わるもの
- 5. setAttributeに代わるもの
- 6. UITabBarControllerに代わるものを作る
- 7. ZF2のZendレジストリに代わるもの
- 8. AndroidのJUnitに代わるもの
- 9. jQueryUI themerollerのテーマに代わるもの
- 10. TThreadの代わりになるもの
- 11. メモリデータベースのTimesTenに代わるもの
- 12. UIAccessibilityVoiceOverStatusChangedの代わりになるもの
- 13. AndroidのReplacementSpanに代わるもの
- 14. XHTMLの非スクリプトタグに代わるもの
- 15. EPIServer 10のユニファイドファイルに代わるもの
- 16. http.request()の代わりになるもの
- 17. ASP.NETコアのServer.Transferに代わるもの
- 18. thread.sleepの代わりになるもの
- 19. mod_pythonのCGIハンドラに代わるもの
- 20. VimのNERDTreeに代わるもの
- 21. SilverlightのHttpWebRequest.ProtocolVersionに代わるもの
- 22. 要素のオンロードに代わるもの
- 23. MysqlのLIKE句に代わるもの
- 24. iOS用のffmpegに代わるもの
- 25. MySQLのMEMORYストレージエンジンに代わるもの
- 26. VBScriptのMsgboxに代わるもの
- 27. 各BeanのHandlerMethodArgumentResolverに代わるもの
- 28. angualr2のsketch.jsに代わるもの
- 29. デフォルトのdjangoテンプレートシステムに代わるもの
- 30. emacsのflyspell-modeに代わるもの
ありがとうございます。 Nicol、それを移植することを犠牲にしてTBBを使用するようにしたpplには本当に特別なものがありますか? – smallB
OpenMPはライブラリではありませんが、これは主にコンパイラ拡張です。これは言語*で並列処理*を追加します。 –
@smallB、VC10はい、デバッグに役立ちます。 VC10は、ConcurTとよく統合された並列タスクと並列スタックを示しています。 – Ajay