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