【发布时间】:2011-01-21 16:24:04
【问题描述】:
我希望在 Beowulf 集群中并行化一些代码,这样所涉及的 CPU 就不会共享地址空间。我想在外循环中并行化一个函数调用。函数调用没有任何“重要”的副作用(尽管它们确实使用随机数生成器、分配内存等)。
我查看了像 MPI 这样的库,我看到的问题是它们似乎使得在节点之间传递复杂的对象图变得非常重要。我的函数的输入是指向一个非常复杂的对象图的 this 指针。我的函数的返回类型是另一个复杂的对象图。
在与语言无关的级别(我正在使用 D 编程语言,我几乎可以肯定这里没有可用的罐装解决方案,但我愿意创建一个),是否有一种“典型”的方式处理跨节点传递复杂状态的问题?理想情况下,我希望完全抽象出如何复制状态的详细信息,并使调用看起来几乎像正常的函数调用。我不在乎通过网络复制这么多状态不是特别有效,因为所讨论的并行级别是如此粗粒度,以至于它可能无关紧要。
编辑:如果没有简单的方法来传递复杂的状态,那么通常如何使用消息传递?在我看来,任何涉及通过网络复制数据的事情都需要粗粒度的并行性,但粗粒度的并行性通常需要传递复杂的状态,以便可以在一个工作单元中完成大量工作。
【问题讨论】:
标签: multithreading language-agnostic networking parallel-processing mpi