gpt4 book ai didi

c++ - MPI 使用更多的 CPU 花费更多的时间

转载 作者:行者123 更新时间:2023-11-30 02:05:10 24 4
gpt4 key购买 nike

我的并行程序是用c++和OpenMPI实现的。当我测试它时,我发现如果我使用更多的 cpu,它会花费更多的时间。怎么会这样?

我的代码结构如下:

开始

MPI::Init

if (rank == 0)
{ Read files }

MPI::Bcast
MPI::Scatter

for (i=0; i<N;i++)
{
do something here
MPI::Gather
if(rank ==0)
{ save result}
}

MPI::Finallize()

结束

我对此很困惑。

最佳答案

扩展评论,不回答:

@111111 的评论是正确的,除非工作负载足够大,否则并行化实际上会减慢计算速度。由于您只发布了代码的大纲,我们无法明确地将其诊断为问题的根源,但这并不是一个不合理的结论。

一般来说,您不能指望串行程序的并行版本在所有情况下都更快。并行化是有代价的(有时称为“并行开销”)。例如,在您的代码中,广播和分散操作会导致这种开销,您只能在并行代码中执行它们,如果它们很耗时,它们可能会抵消(或更糟)在多个 CPU 上进行更快计算的好处。

我将继续并猜测您是并行编程的新手,并建议并行化的成本和 yield 这个问题是您应该针对您的代码和问题进行研究的问题。您的目标绝对应该是深入了解程序的性能在您增加作业规模和处理器数量时如何扩展,并得到实验数据的支持。

编辑

还有一点要点:确保您使用正确的例程来为您的程序计时。我建议您使用 mph_wtime()。我曾见过天真的程序员调用 utime 之类的东西,最终将所有 N 个处理器使用的时间加在一起;您应该感兴趣的只是从开始到结束(或两个兴趣点之间)的挂钟时间。

关于c++ - MPI 使用更多的 CPU 花费更多的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9793154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com