Answers:
有各种各样的算法;Barnes Hut是一种流行的方法,而Fast Multipole方法是一种更为复杂的替代方法。O(N )
两种方法都利用树数据结构,其中节点实际上仅与树的每个级别上与其最近的邻居进行交互。您可以考虑将树以足够的深度在一组进程之间进行拆分,然后让它们仅在最高级别上进行协作。
您可以在此处找到有关在petascale机器上讨论FMM的最新论文。
看一下快速多极方法。它具有高度可扩展性和。它允许在精度和成本之间进行权衡。 这是一个在GPU集群上以42 Tflops运行的示例。
如果您需要一种在渐近意义上不是最佳的简单实现方法,则可能需要考虑使用全聚集通信操作。由于每个N体都需要了解其他物体的引力效应,因此对于每个处理器来说,了解整个数据集都是很重要的。这就是所有聚集操作的作用。有一本很好的书:Michael J. Quinn(2004)撰写的《使用MPI和OPENMP的C并行编程》,在第82页上讨论了这个主题。也许值得一开始。