共有メモリと分散メモリ、およびマルチスレッドとマルチプロセス
-
06-07-2019 - |
質問
私は自分で並列プログラミングを学んでいます。分散メモリは常にマルチプロセスであり、マルチスレッドは常に共有メモリであるのだろうか?マルチプロセスが分散メモリと共有メモリの両方に対応できる場合 よろしくお願いします!
解決
はい、はい、および「はい、ある意味で」
分散メモリシステムでは、異なるCPUユニットに独自のメモリシステムがあります。実際に可能であれば、別のCPUからのアクセスは遅くなるか、コヒーレンシモデルが制限されます。これは、メッセージパッシングマルチプロセッサの典型的なものです。
並列プログラミングに複数のスレッドを使用することは、ハードウェアの問題というよりもソフトウェアのパラダイムですが、あなたは正しいです。スレッドという用語の使用は、本質的に単一の共有メモリが使用されていることを示し、実際の複数のプロセッサを含む場合と含まない場合があります。複数のカーネルスレッドを含めることもできません。その場合、スレッドは並列実行されません。
最後の質問の意味については完全に明確ではありません。確かに、「分散メモリ」と言うことで;または「共有メモリ」 「プロセッサに分散」という意味です。と「プロセッサで共有」というように、用語はマルチプロセッサシステムまたは潜在的にマルチプロセッサシステムにのみ合理的に適用されると思います。ソフトウェアの意味で複数のプロセスについて話している場合、分散メモリシステムの要件であり、本質的には共有メモリシステムの要件(呼び出されるスレッドかもしれません)であると思います。
distributed-memory-but-cache-coherentシステムが存在し、 NUMA。 ほんの数年前、これらのマシンはパラレルコンピューティングの狂気のフリンジでしたが、現在はIntel Core i7プロセッサがNUMAが主流になりました。