所以,问题是: 1.对于以下问题,mapreduce开销是否过高?有没有人知道每个地图/减少周期(例如迪斯科)需要多长时间才能完成一项非常轻松的工作? 2.对于这个问题,mapreduce是否有更好的替代方案?
在地图缩减术语中,我的程序包含60个地图阶段和60个减少阶段,所有这些阶段需要在1秒内完成。我需要解决这个问题的一个问题是使用大约64000个变量的最小搜索。用于搜索的粗糙矩阵是块矩阵,沿对角线的1000个块大小为64×64,并且在最右侧和底部具有一行块。最后一部分:block matrix inversion algorithm显示了如何完成此操作。可以在一个mapreduce步骤中计算Schur补码S_A和S_D中的每一个。逆向计算还需要一步。
从我的研究到目前为止,mpi4py似乎是一个不错的选择。每个流程都可以执行计算步骤,并在每个步骤之后向客户端报告,客户端可以使用新的状态变量向后报告,以便继续循环。这样,过程状态不会丢失,计算可以通过任何更新继续进行。 http://mpi4py.scipy.org/docs/usrman/index.html
这个wiki有一些建议,但有没有人对最发达的解决方案有所指导: http://wiki.python.org/moin/ParallelProcessing
谢谢!
答案 0 :(得分:5)
MPI是一种通信协议,允许通过在群集节点之间传递消息来实现并行处理。使用MPI实现的并行处理模型取决于程序员。
我对MapReduce没有任何经验,但在我看来,它是一个特定的并行处理模型,设计简单易用。这种抽象应该可以节省您的编程时间,可能会也可能不会为您的问题提供合适的解决方案。这一切都取决于你想要做的事情的性质。
并行处理的技巧是最合适的解决方案通常是特定于问题的,如果不了解有关您的问题的更多细节,则很难提出建议。
如果您可以告诉我们有关您正在执行工作的环境以及您的计划适合Flynn's taxonomy的更多信息,我可能会提供更多有用的建议。