我必须使用MPI构建分布式应用程序。 我必须做出的决定之一是如何将类的实例映射到进程(然后进入机器),以便从分布式环境中获得最大的优势。
我的问题是:有一个模型让我选择更好的映射?我的意思是,一些安排肯定是错误的(例如,在两个不同的机器中放入两个对象,这些对象应该以顺序的方式处理相当大量的数据,而不需要处理令牌流),但是有一种系统的方式确定这样的错误安排,由执行流程,消息复杂性,算法组件计算所花费的时间决定?
答案 0 :(得分:1)
嗯,有data flow diagrams。这些可以帮助确定并行性的机会和陷阱。维基百科页面上的参考文献可能会为您提供更多的理论基础。
当我在洛克希德马丁公司工作时,我接触到了CSIM,这是他们开发的用于建模算法映射到处理块的工具。
答案 1 :(得分:0)
您可能尝试的另一件事是Join Calculus。我发现用它编程的例子非常直观,而且我认为它在理论上有很好的基础。我不确定为什么它没有流行起来。
另一种方法是Pi Calculus,我认为这可能更受欢迎,但似乎更难理解。
答案 2 :(得分:0)
实际的解决方案是使用不同的分布式内存并行编程模型,直接解决您的问题。我在Charm++编程系统上工作,该系统的模型是将消息从一个发送到另一个的单个对象。运行时系统有助于将这些对象自动映射到可用的处理器,以解决负载平衡和通信局部性问题。