0

たとえば、マシンに 2 つのプロセッサがあり、各プロセッサに 2 つのコアがあるとします。OpenMP を使用して並列プログラムを作成し、3 つのスレッドで実行します。ハードウェアではどうなりますか? プログラムを処理するプロセッサは 1 つだけだと思いますが (そうですか?)、3 つのスレッドが 2 つのコアにどのように分散されているかイメージできません。助けてください。ありがとう。

4

1 に答える 1

0

SO「回答」の範囲で質問に回答することはほとんど不可能です。「実際の」回答が必要な場合は、マシンの特定のアーキテクチャの並列処理の実装について読む必要があります。短い答えは「場合による」です。ただし、プログラムは、4 つのコアのいずれかまたはすべてで、両方のプロセッサで実行される可能性があります。ここで理解するための鍵は、プログラムの構造である程度制御できるということですが、OMP の優れた点は、通常は「気にする必要がない」ということです。スレッドが同時に動作している場合、通常はそれぞれがコアを取得します。ただし、同じメモリ空間にアクセスする必要がある場合は、「短期データ」がプロセッサの (コアの) キャッシュに存在することを好むため、速度が低下する可能性があります。これは、大量のデータのシャッフルが行われていることを意味します。

于 2013-08-04T13:36:12.157 に答える