MPI vs GPU vs Hadoop,这三种并行性的主要区别是什么?



我知道对于一些机器学习算法,比如随机森林,本质上应该是并行实现的。我做了一个功课,发现有这三种并行编程框架,所以我有兴趣知道这三种并行性之间的主要区别是什么?

特别是,如果有人能指出我一些研究比较它们之间的差异,那将是完美的!

请列出每种并行性的优缺点,谢谢

  1. MPI 是并行性的消息传递范例。在这里,您有一个根机器,它在其 MPI WORLD 中的所有机器上生成程序。系统中的所有线程都是独立的,因此它们之间的唯一通信方式是通过网络消息。网络带宽和吞吐量是影响 MPI 实现性能的最关键因素之一。想法 : 如果每台机器只有一个线程,并且上面有很多内核,则可以使用 OpenMP 共享内存范例在一台机器上解决问题的子集。

  2. CUDA 是并行性的 SMT 范式。它使用最先进的 GPU 架构来提供并行性。GPU 包含((内核集)块)以锁步方式处理相同的指令(这类似于 SIMD 模型)。因此,如果系统中的所有线程都执行许多相同的工作,则可以使用 CUDA。但是 GPU 中的共享内存和全局内存量是有限的,因此您不应该只使用一个 GPU 来解决一个巨大的问题。

  3. Hadoop用于使用Map Reduce范式解决商品硬件上的大问题。因此,您不必担心分发数据或管理极端情况。Hadoop还提供了文件系统HDFS,用于在计算节点上存储数据。




Hadoop,MPI和CUDA彼此完全正交。因此,比较它们可能不公平。

但是,您始终可以使用(CUDA + MPI)来使用GPU集群解决问题。您仍然需要一个简单的内核来执行问题的通信部分。