是否可以看到 MPI_ISEND 不立即返回

问题描述

我最近意识到,在我的模拟的第一次迭代中,我经历了特别缓慢的步骤,归结为以下部分

 do I= 1,hpc_nodes 
     call mpi_isend(cnt(i),1,mpi_integer,whoisrootInNode(i),10000,comm,req(i),mpierr) 
 enddo 

我意识到第 i 个 mpi_isend 中的一个在大约 2 秒后返回,而其余的将在几分之一秒内返回。这最终会逐渐消失,并且所有 mpi_isend 调用的成本都将降至最低。但是,我试图理解为什么会发生这种情况。

为什么有时 mpi_isend 会在 2 秒后返回同一等级内的某个 I 而紧跟在 I+1 之后的速度快 10 倍 - 为什么它只在开始时发生,即代码部分在一个大的时间循环内,在 2-3 个时间步之后这个问题似乎消失了

这是否与以下article

有关

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)