clang/llvmにはいつでもOpenMPをサポートする予定がないため、IntelはTBBライブラリの道をはるか遠ざけています。 OpenMPの上にマルチスレッド科学ライブラリを実装する価値はありますか(私はccv:http://github.com/liuliu/ccvで作業しています)?すべての批判にもかかわらず、OpenMPでの私の経験はとても幸せです(使用するのが簡単で、パフォーマンスの向上は妥当です)。しかし、それが瀕死の技術であれば、Cのマルチスレッドの方が簡単ですか? (pthreadではなく、TBBはC++のものです)。ありがとう!OpenMPの実装に時間を費やすことはまだ価値がありますか?
答えて
新しいC標準のC11は、スレッドを独自にサポートしています。これは、pthreadsの細分化されたモデルに従います。 (C++ 11は同じですが、BTW)これはOpenMPを置き換えることはできませんが、並列ループに取り組み、削減などを行うことは簡単です。_Atomic
。古典的なスレッドライブラリはレースを避けるためにmutexを提供しますが、データによっては輻輳が発生することがあります。 _Atomic
は最終的に、プロセッサがほとんどの場合持っている機能に低レベルの言語インタフェースを提供します。これにより、競合のないスレッド間のカウンタやものを素早く更新できます。
_Atomic
とOpenMPは問題なく協力してください。
OpenMPは生きていて、いくつかの努力をして、それをmanycore accelleratorタイプのものにまで拡張することにもなります。悲しいことにOpenMPを組み込むことはClangの優先順位リストでは高くありませんが、既存のすべてのコンパイラベンダー(Intel、gcc、pgiなど)は既存の実装だけでなく、標準の継続的な開発にも取り組んでいます。私はそれについて心配しません。結局clang/llvmが来るでしょう。
+1 OpenMPは、まだ多くの実行可能な選択肢がないので、FortranとCのために、特に死ぬ技術ではないと私は考える。 – Francesco
C++11 feature support in clang listを見ると、同時性のサポートが完全に存在しないことがわかります。
新しいC++標準は実際に並行性とマルチスレッド化に優れた機能を提供していますが、プラットフォーム非依存のままにしたい場合は現在使用できません。
既存のOpenMPコードがある場合は、それを汗ばむことはありません。 clangは単純にサポートされておらず、残念ながら、それだけで別のテクノロジーに切り替えるのは意味がありません。もちろんはでTBBを使用できますが、C++ 11の並行性に照らして、TBBはちょっと過渡的な技術だと言えます。
個人的には、私はOpenMPの最後を見て嬉しく思っていますが、現時点ではまだありません。
- 1. ASP.net Model View Presenterは時間の価値がありますか?
- 2. は、Webアプリケーション/ WebアプリケーションでP3Pを実装する価値がありますか?
- 3. WIFソリューションを実装する価値はいつありますか?
- 4. ここにプライベートメンバーの価値はありますか?
- 5. guavaにカスタムハッシュ/等価関数をとるMap実装がありますか?
- 6. HTML5 - それだけの価値はありますか?
- 7. build vnextビルドエージェントの実行時間を増やす方法はありますか?
- 8. SQL Serverに費やす時間はどのように監視しますか?
- 9. C#とSQL Serverでオートコンプリートを実装する方法とその価値はありますか?
- 10. JSの評価に多くの時間がかかります
- 11. SQLストアドプロシージャを実行するには時間がかかりますが、レコードを増やすには時間がかかります。
- 12. コンパイラは、解析中にどこでほとんどの時間を費やしますか?
- 13. Visual Studioのクラスデザイナ - それはそれだけの価値がありますか?
- 14. OpenMPとC:この操作をアトミックにする必要がありますか?
- 15. 特定のコード行に `gprof`時間を費やしました
- 16. テストに費やす時間を削減するには?
- 17. GWTとSpring MVC、それだけの価値はありますか?
- 18. MPIとOpenMP。私には選択肢がありますか?
- 19. jQuery:Ajax Postをやり直すには時間がかかりすぎますか?
- 20. ジャンゴセロリ:私は5分ごとに実行する必要があります長時間実行プロセスを持っていますが、プロセスの複数のインスタンスを同時に実行することはありません長時間実行プロセス
- 21. Hibernateはデータベースへの接続に多くの時間を費やします
- 22. corbaの実装はどこにありますか
- 23. Java EL 3.0の実装はどこにありますか
- 24. ISO SchematronバリデータのJava実装はどこにありますか?
- 25. このOpenMPの使用には何らかの問題がありますか?
- 26. IHttpHandlerFactoryの実装時にGetHandlerがnullを返すことはできますか?
- 27. IDEは本当に価値がありますか?
- 28. SqlGeometryBuilderの実装はありますか?
- 29. 時間のリストはどこにありますか?
- 30. VisualVMの時間(CPU)列はどこにありますか?
「かなり満足していますか? OpenMPのクリティカルセクションから時期尚早に抜け出そうとしたことがありますか?あるいは、OpenMPが完全に理にかなっていてもサポートしていない他の多くの言語機能を使用していますか? –
あなたは常に以下のようなものをプログラムしているとは限りません:for(i = 0; i <1000; i ++){a [i] = h [b [i]]; } :) – liuliu