ランダムフォレストのようないくつかの機械学習アルゴリズムは、本質的に並行して実装する必要があることを知っています。宿題をしていると、これら 3 つの並列プログラミング フレームワークがあることがわかりました。これら 3 つのタイプの並列処理の主な違いは何ですか?
特に、誰かがそれらの違いを比較する研究を教えてくれるなら、それは完璧です!
各並列処理の長所と短所を挙げてください、ありがとう
MPIは、並列処理のメッセージパッシングパラダイムです。ここには、MPIWORLD内のすべてのマシンでプログラムを生成するルートマシンがあります。システム内のすべてのスレッドは独立しているため、スレッド間の通信の唯一の方法は、ネットワークを介したメッセージを介することです。ネットワーク帯域幅とスループットは、MPI実装のパフォーマンスにおいて最も重要な要素の1つです。アイデア:マシンごとにスレッドが1つだけで、コアが多数ある場合は、OpenMP共有メモリパラダイムを使用して、1台のマシンで問題のサブセットを解決できます。
CUDAは並列処理のSMTパラダイムです。最先端のGPUアーキテクチャを使用して、並列処理を提供します。GPUには、ロックステップ方式で同じ命令を処理する((コアのセット)のブロック)が含まれています(これはSIMDモデルに似ています)。したがって、システム内のすべてのスレッドが多くの同じ作業を行う場合は、CUDAを使用できます。ただし、GPUの共有メモリとグローバルメモリの量には制限があるため、大きな問題を解決するために1つのGPUだけを使用するべきではありません。
Hadoopは、MapReduceパラダイムを使用してコモディティハードウェアの大きな問題を解決するために使用されます。したがって、データの配布やコーナーケースの管理について心配する必要はありません。Hadoopは、計算ノードにデータを保存するためのファイルシステムHDFSも提供します。
Hadoop、MPI、およびCUDAは互いに完全に直交しています。したがって、それらを比較することは公平ではないかもしれません。
ただし、GPUのクラスターを使用して問題を解決するには、いつでも(CUDA + MPI)を使用できます。問題の通信部分を実行するには、まだ単純なコアが必要です。