Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何减少Barnes-Hut N-Body编码为C++;和MPI并行实现_C++_Parallel Processing_Ipc - Fatal编程技术网

C++ 如何减少Barnes-Hut N-Body编码为C++;和MPI并行实现

C++ 如何减少Barnes-Hut N-Body编码为C++;和MPI并行实现,c++,parallel-processing,ipc,C++,Parallel Processing,Ipc,为了用Barnes-Hut算法模拟N体问题进行并行实现,我如何减少进程间通信(IPC)时间来构建高效的代码 目前,对于我的C++和MPI实现,使用的处理器越多,进程间的通信时间也越多,这就大大降低了并行执行的执行时间。 我是否可以减少进程间通信(IPC)时间来构建高效代码? 简短回答:是的,但它不会使代码变得更好,就像您优化了任何其他部分一样 为了更好地阐明这一结论,让我们添加更多的细节,对于这些细节,让我们再次使用Barnes-Hut算法运行时分析,如TU Delft发布的: 通过发送消息访问

为了用Barnes-Hut算法模拟N体问题进行并行实现,我如何减少进程间通信(IPC)时间来构建高效的代码

目前,对于我的C++和MPI实现,使用的处理器越多,进程间的通信时间也越多,这就大大降低了并行执行的执行时间。 我是否可以减少进程间通信(IPC)时间来构建高效代码?

简短回答:是的,但它不会使代码变得更好,就像您优化了任何其他部分一样 为了更好地阐明这一结论,让我们添加更多的细节,对于这些细节,让我们再次使用Barnes-Hut算法运行时分析,如TU Delft发布的:

通过发送消息访问哈希表的远程部分来遍历Barnes Hut树。有许多标准技术可以降低所需的通信量,包括重叠通信和计算、预取树的部分、按树节点可用的顺序(而不是按它们在树中出现的顺序)处理树节点以及缓存。

以下是从文献中获得的天体物理计算的一些性能结果,同样是在512处理器Intel Delta上。模拟涉及880万个粒子,这些粒子最初是均匀分布的。巴恩斯小屋一步的时间为114秒,或5.8千兆次。时间的划分是

分解域7秒
建树7秒
树遍历33秒

穿越6秒期间的通信欢迎来到StackOverflow,@Martin您可能已经知道,StackOveflow社区采用了所谓的MCVE格式的问题定义。请随意重新阅读社区实践,并查看/更新您的帖子,以符合此最佳实践。(+在大学里,你的教授不想看到一个带有轴图例的图表,其中2.5体问题似乎被提升为一个可预期的实验装置……最好回顾一下图表,以便停留在物理现实的范围内
:o)
)@uers366197谢谢你的评论。我的图表有什么问题?对不起,我不太明白。欢迎,@Martin,在第一轮中,我没有看到刚才出现在我眼前的
x1E4
。我有罪。。。然而,在轴文本中的缩放应该是正确的,比如“体的数量[1]x1e4”。接下来,几乎可以肯定的是,在实际运行的几个离散数量的实验之间,计算时间不是线性的——如果没有其他原因,主要是由于缩放的逐步不利影响、不断增长的缓存线未命中效应等。因此,它应该是实验的“曲线图”,而不是外推曲线图(然而,错误)提出了每一部分的线性模型,不是吗?最后一点,您是否介意发布实际代码执行平台的NUMA拓扑细节?至少是
lscpu
+hwloc/
lstopo
输出?感谢您的帮助。也许我应该把我的问题重新表述如下:你有论文或源代码的链接吗?谢谢
   Decomposing the domain           7 seconds
   Building the tree                7 seconds
   Tree traversal                  33 seconds
   Communication during traversal   6 seconds <------- 6 / 114 ~ < 5 %
   Force evaluation                54 seconds
   Load Imbalance                   7 seconds
   Total                          114 seconds