マルチスレッドプログラミングの場合、HPCアプリケーション(MPI)との組み合わせの方が優れていますが、機能面ではインテル®TBB(スレッド構築ブロック)はpthreadに似ていますか?私はオープンmpでの経験があるだけですが、TBBとPthreadの両方がオープンmpに比べて細かいスレッド制御を提供していると聞きましたが、TBBやTBB + OpenMPはpthreadと似た機能を提供できますか?pthreadとintel TBBとOpenMPとの関係は?
答えて
pthreadは、OSインフラストラクチャの上にある薄いラッパーです。それは与えられたスレッドの主な機能といくつかの同期プリミティブ(mutexes semaphoresなど)を持つスレッドを作成することを可能にします。 Linuxでは、pthreadはclone(2)
システムコールの上に実装されています。 Windows環境下のファイルはCreateThread
となります。他の全てのスレッドは、このベースの上に構築されています。
インテルTBBは、より高いレベルであり、parallel_for
とparallel_reduce
と同様の上位レベルの構造をOpenMPに似ていますが、言語拡張ではなくライブラリとして実装しています。
OpenMPIは、マルチマシンの分散インフラストラクチャではさらに高いレベルですが、非常に古くてちょっとしたものです。
あなたが完全に理解できるようになるまで、pthreadライブラリを最初に習得し、その後、より高いレベルのライブラリを見てください。
TBBを使用すると、ネイティブスレッド機能の上に移植可能なコードを書くことができるため、異なるOSアーキテクチャでコードを移植しやすくなります。私はそれがpthreadよりも "効率的"だとは思わない。
私は個人的にはOpen MPを使用していませんでしたが、以前はオープンMPを使用していた開発者(使用していたプロセッサの技術者)として働いていましたが、他の人は自分のコードを書くよりもオープンmpで使うのが難しいです。それはあなたが何をしているのかによって異なります。もちろんopenmpの利点の1つは、openmpオプションなしでいつでもコードを再コンパイルすることができ、コードはあなたが期待するとおりに直接動作することです。
プログラムのスレッド化アプローチを使用すると、どのスレッドで何が起こるかをはるかに制御できます。しかし、それはもっと多くの作業を意味します...
- 1. intel tbbコンパイルとテスト
- 2. Intelのコアi *とコアの数の関係は何ですか?
- 3. Pthreadと関数ポインタ
- 4. -pthread、-lpthreadと最小動的リンク時の依存関係
- 5. C++ intel TBB内部ループの最適化
- 6. OpenMPからTBBへの変換
- 7. インテルTBBとブースト
- 8. tbb :: task_arenaとtbb :: task_scheduler_observerとのリンク中のエラー
- 9. Intel xdkデーモンとintel galileo gen2
- 10. インテル®TBBのリンクとRPATH
- 11. gfortranとIntel MKL
- 12. 明示的にリンクするintel icpc openmp
- 13. EXTJSとJSONとの関係
- 14. log4jとapache.commons.loggingとの関係
- 15. Prestoとリレーショナルデータベースとの関係
- 16. custinvoiceTransとGeneralJournalAccountEntryとの関係
- 17. ejs.coとembeddedjs.comとの関係
- 18. FHIRとopenEHRとの関係
- 19. pthreadコードをコンパイルするときの-lpthreadと-pthreadオプション
- 20. ウィジェットとメインアプリの関係は?
- 21. カピストラーノとレイクの関係は?
- 22. GEFとGMFの関係は?
- 23. selectとsp_executesqlの関係は?
- 24. ステータスレジスタとコントロールレジスタの関係は?
- 25. loadとforの関係は?
- 26. time.time()とfile.getmtime()の関係は?
- 27. パラメータセットコンテキストとモデルモードの関係は?
- 28. 関係とキー?
- 29. 関係とMVC3
- 30. MPI_Comm_splitとMPI_Send関数/ MPI_RECVとの関係
OpenMPIは、メッセージパッシングインターフェイスの特定の実装です。 –