是否有针对稀疏向量的MPI_AllReduce实现



我需要在多个工作处理器上同步分布式解决的优化问题的中间解决方案。已知解向量是稀疏的。

我注意到,如果我使用MPI_AllReduce,与我自己的AllReduce实现相比,性能是很好的。

然而,我相信,如果AllReduce可以只与解向量中的非零条目通信,那么性能可以进一步提高。我找不到任何这样的AllReduce实现。

有什么想法吗?

MPI_type_indexed似乎无法使用,因为事先不知道非零项的索引。

MPI中没有稀疏的集体。这是MPI论坛过去讨论过的事情(我不知道讨论的目的是什么),但也有这方面的研究。不过,通常情况下,当在论坛上讨论这类事情时,我相信它们更多地与不涉及所有流程而非所有数据的集体有关。

正如Hristo在评论中所说,MPI的目标(根据一些人的说法)一直是在MPI之上实现更优化的技巧,并将其用作抽象通信调用的低级库。显然,MPI在大多数情况下并不是这样使用的,但您仍然可以编写自己的稀疏集体。听起来像是一篇不错的论文。

这里也有类似的问题。很可能您需要实现自定义MPI_Allreduce()。

这里有一个优化的实现。你很可能已经找到了这个链接:https://fs.hlrs.de/projects/par/mpi//myreduce.html

如果你想要更好的性能实现,这里有一些:

https://dl.acm.org/citation.cfm?id=2642791
https://dl.acm.org/citation.cfm?id=2642773

请注意,它们没有提供实现,您可能需要支付少量费用。

祝好运

相关内容

  • 没有找到相关文章

最新更新