Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 有没有可能看到MPI立即返回_Fortran_Mpi_Openmpi - Fatal编程技术网

Fortran 有没有可能看到MPI立即返回

Fortran 有没有可能看到MPI立即返回,fortran,mpi,openmpi,Fortran,Mpi,Openmpi,我最近意识到,在我的模拟的第一次迭代中,我经历了特别慢的步骤,这可以归结为以下部分 do I= 1, hpc_nodes call mpi_isend(cnt(i), 1, mpi_integer, whoisrootInNode(i), 10000, comm, req(i), mpierr) enddo 我意识到第I个mpi\u isend中的一个在大约2秒后返回,而其余的将是秒的一小部分。这种情况最终会消失,所有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\u isend
中的一个在大约2秒后返回,而其余的将是秒的一小部分。这种情况最终会消失,所有mpi_isend调用的成本都将降至最低。然而,我试图理解为什么会发生这种情况

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


这是否与以下内容有关?这似乎是一个实施问题。您能否共享一个和状态,说明您使用的是哪个
打开MPI
版本和互连?我只是尝试制作一个较小的程序示例,不幸的是,它没有显示问题。我们将openmpi 4.1.0与ucx结合使用最新版本(最近发布的软件包)您是否对本文进行了scim,
(…)阻止/取消阻止任务的成本有时是不可忽略的。通常,任务的暂停操作会产生一个上下文切换,要求运行时系统保持暂停任务堆栈的活动状态(例如,8 MB的堆栈大小),并增加调度开销。(……
这在今天仍然相关吗@GillesGouaillardetcontext switch比2s快几个数量级。我更愿意认为
MPI_Isend()
尝试一个在内部阻止等待资源的急切发送。但这只是一个猜测,因为我并没有在复制机上看到过。你们有什么关于我如何使用实际生产代码调试它的提示吗?到目前为止,我只是对
mpi\u isend
进行计时,它在前2-3次迭代中大约需要2秒时间-当然也很奇怪为什么返回
mpi\u isend
所需的时间不一致,因为我得到了与API完全相同的输入