Parallel processing MPI并行化时间消耗
我有两段代码,每段代码消耗2秒, 在经典结构中,它们在4秒内按顺序运行 在mpi格式中,它应该消耗2秒,但需要5秒 为什么? 什么需要5秒钟? 如果您已经测量了整个程序的时间,那么问题是MPI_Init和MPI_Finalize非常耗时。Parallel processing MPI并行化时间消耗,parallel-processing,mpi,Parallel Processing,Mpi,我有两段代码,每段代码消耗2秒, 在经典结构中,它们在4秒内按顺序运行 在mpi格式中,它应该消耗2秒,但需要5秒 为什么? 什么需要5秒钟? 如果您已经测量了整个程序的时间,那么问题是MPI_Init和MPI_Finalize非常耗时。 为了看到加速,你可以增加你的积木 你测量过不同的积木吗?您是否也测量了MPI的初始化和终结?MPI并不是无价的,尤其是初始化需要一些时间,这对于每台机器和每种MPI实现都是不同的;请提供一份报告。在这个问题上,我们没有提供足够的信息来帮助您。例如,如果您以sl
为了看到加速,你可以增加你的积木 你测量过不同的积木吗?您是否也测量了MPI的初始化和终结?MPI并不是无价的,尤其是初始化需要一些时间,这对于每台机器和每种MPI实现都是不同的;请提供一份报告。在这个问题上,我们没有提供足够的信息来帮助您。例如,如果您以sleep2为块运行上面的程序,您会发现该程序的运行时间仅比2s长几十毫秒。是的,您是对的,但是当我将一个4的块拆分为两个2的块时。我希望在2秒钟内运行,但它在5秒钟内运行。在这种情况下,您需要发布块的代码。你的block 2秒在一个核心上表现如何?你们有足够的处理器吗?他们在忙别的事情吗?
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();
}