【问题标题】:MPI Parallelization time consumptionMPI 并行化时间消耗
【发布时间】:2014-11-06 09:19:57
【问题描述】:

我有两段代码,每段耗时 2 秒, 在经典结构中,它们在 4 秒内按顺序运行

在 mpi 格式中,它应该消耗 2 秒,但需要 5 秒

为什么?

int main ( int argc, char *argv[] )  
{  
    MPI_Init( &argc, &argv );  
    MPI_Comm_size(MPI_COMM_WORLD,&p );  
    MPI_Comm_rank(MPI_COMM_WORLD,&id);  

    if(id==0)
    {
        // 2 seconds Block
    }
    if(id==1)
    {
        // 2 seconds Block
    }
    MPI_Finalize();  
}

【问题讨论】:

  • 你测量了不同的块吗?你是否也测量了 MPI 初始化和终结? MPI 并非无价之宝,尤其是初始化需要“一些”时间,这因每台机器和每个 MPI 实现而异。
  • 欢迎来到 Stack Overflow;请提供good example。此问题中提供的信息不足,我们无法为您提供帮助。例如,如果您以sleep(2) 为块运行上面的程序,您会发现程序运行的时间仅比 2 秒长几十毫秒。

标签: parallel-processing mpi


【解决方案1】:

什么需要 5 秒? 如果你测量了整个程序的时间,问题是MPI_Init()MPI_Finalize()非常耗时。 为了看到加速,你可以增加你的“块”。

【讨论】:

  • 是的,你是对的,但是当我将一个 4 的块分成两个 2 的块时。我希望在 2 秒内运行,但它在 5 秒内运行
  • 在这种情况下,您需要发布“块”的代码。您的“块”(2 秒)在一个核心上表现如何?你有足够的处理器吗?他们忙于其他事情吗?
猜你喜欢
  • 1970-01-01
  • 2019-10-01
  • 1970-01-01
  • 2013-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-27
相关资源
最近更新 更多