2012-12-29 5 views
7

マルチスレッドプログラミングの場合、HPCアプリケーション(MPI)との組み合わせの方が優れていますが、機能面ではインテル®TBB(スレッド構築ブロック)はpthreadに似ていますか?私はオープンmpでの経験があるだけですが、TBBとPthreadの両方がオープンmpに比べて細かいスレッド制御を提供していると聞きましたが、TBBやTBB + OpenMPはpthreadと似た機能を提供できますか?pthreadとintel TBBとOpenMPとの関係は?

答えて

4

pthreadは、OSインフラストラクチャの上にある薄いラッパーです。それは与えられたスレッドの主な機能といくつかの同期プリミティブ(mutexes semaphoresなど)を持つスレッドを作成することを可能にします。 Linuxでは、pthreadはclone(2)システムコールの上に実装されています。 Windows環境下のファイルはCreateThreadとなります。他の全てのスレッドは、このベースの上に構築されています。

インテルTBBは、より高いレベルであり、parallel_forparallel_reduceと同様の上位レベルの構造をOpenMPに似ていますが、言語拡張ではなくライブラリとして実装しています。

OpenMPIは、マルチマシンの分散インフラストラクチャではさらに高いレベルですが、非常に古くてちょっとしたものです。

あなたが完全に理解できるようになるまで、pthreadライブラリを最初に習得し、その後、より高いレベルのライブラリを見てください。

+0

OpenMPIは、メッセージパッシングインターフェイスの特定の実装です。 –

2

TBBを使用すると、ネイティブスレッド機能の上に移植可能なコードを書くことができるため、異なるOSアーキテクチャでコードを移植しやすくなります。私はそれがpthreadよりも "効率的"だとは思わない。

私は個人的にはOpen MPを使用していませんでしたが、以前はオープンMPを使用していた開発者(使用していたプロセッサの技術者)として働いていましたが、他の人は自分のコードを書くよりもオープンmpで使うのが難しいです。それはあなたが何をしているのかによって異なります。もちろんopenmpの利点の1つは、openmpオプションなしでいつでもコードを再コンパイルすることができ、コードはあなたが期待するとおりに直接動作することです。

プログラムのスレッド化アプローチを使用すると、どのスレッドで何が起こるかをはるかに制御できます。しかし、それはもっと多くの作業を意味します...

関連する問題