我知道一些机器学习算法就像随机森林,它们本质上应该并行实现。我做家务并发现有这三个并行编程框架,所以我有兴趣知道这三种并行性之间的主要区别是什么?
特别是,如果有人可以指点我一些研究比较它们之间的差异,那将是完美的!
请列出每个并行度的优缺点,谢谢
答案 0 :(得分:36)
MPI是一种传递并行性范式的消息。在这里,您有一台根机器,可以在其MPI WORLD中的所有机器上生成程序。系统中的所有线程都是独立的,因此它们之间唯一的通信方式是通过网络上的消息。网络带宽和吞吐量是MPI实施性能中最关键的因素之一。想法:如果每台计算机只有一个线程,并且您有多个内核,则可以使用OpenMP共享内存范例在一台计算机上解决问题的子集。
CUDA是一种并行的SMT范例。它使用最先进的GPU架构来提供parallelisim。 GPU包含(锁定(核心集合)的块)以锁步方式处理相同的指令(这类似于SIMD模型)。因此,如果系统中的所有线程都执行了大量相同的工作,则可以使用CUDA。但是GPU中共享内存和全局内存的数量是有限的,因此您不应该只使用一个GPU来解决一个大问题。
Hadoop用于使用Map Reduce范例解决商品硬件上的大问题。因此,您不必担心分发数据或管理极端情况。 Hadoop还提供了一个文件系统HDFS,用于在计算节点上存储数据。
Hadoop,MPI和CUDA彼此完全正交。因此,比较它们可能不公平。
尽管如此,你总是可以使用(CUDA + MPI)来解决使用GPU集群的问题。您仍然需要一个简单的核心来执行问题的通信部分。