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