2

我必须使用MPI构建分布式应用程序。 我必须做出的决定之一是如何将类的实例映射到进程(然后到机器),以便从分布式环境中获得最大的优势。使用消息传递进行性能评估

我的问题是:有一个模型,让我选择更好的映射?我的意思是,某些安排肯定是错误的(例如,将两个不同的机器放在两个对象中,这些对象应该按顺序处理相当大量的数据,而不需要处理令牌流),但是有系统的方法以确定由执行流程,消息复杂度,由算法组件完成的计算所花费的时间确定的这种错误安排?

+0

我想知道是否有形式化分布式计算的理论,如网络中的队列理论,而不是一个为我工作的程序;) – akappa 2009-05-03 17:54:33

回答

1

那么,有data flow diagrams。这些可以帮助识别并行机会和陷阱。维基百科页面上的参考可能会给您更多的理论依据。

当我在洛克希德马丁公司工作时,我遇到了CSIM,他们开发了一个工具,用于建模算法映射到处理块。

+0

在我看来,数据流图最适合作为工具对于软件工程来说,可以用来描述并行程序中的流程,但是用一个弱分析仪器。 我会给它更仔细一看,顺便说一句。 – akappa 2009-05-08 10:20:37

0

您可能会尝试的另一件事是Join Calculus。我发现用它编程的例子令人惊讶地直观,我认为它理论上很好。我不确定它为什么没有被更多的发现。

另一种方法是Pi Calculus,我认为这可能更受欢迎,尽管它似乎很难理解。

0

一个切实可行的解决方案是使用不同的分布式并行内存并行编程模型,直接解决您的问题。我使用编程系统Charm++,该系统的模型是单个对象将消息从一个发送到另一个的模型。运行时系统便于将这些对象自动映射到可用处理器,以解决负载平衡和通信局部性问题。