原点 MPI_Win_create 的运行时间随着目标窗口大小的增加而增加

问题描述

我刚刚开始研究 MPI,正在做一个实验,我正在测量 MPI_Win_create 的运行时间。我正在使用 .odc 库。在这个实验中,我有两个进程——origin 和 target。我有以下几行代码来测量运行时:

mpich 3.4.1

在我的实验中,原始进程的 bufferSize (rank==0) 始终为零。但是,在目标进程(等级== 1)中,我将缓冲区大小增加到大约 2GB。我在源进程和目标进程的运行时 MPI_Win_create 中看到以下趋势:

目标进程的 bufferSize 约为 100MB, double startTime,endTime; startTime = MPI_Wtime(); MPI_Win_create(buffer,bufferSize,sizeof(char),MPI_INFO_NULL,MPI_COMM_WORLD,win); endTime = MPI_Wtime(); double winCreateTime = endTime - startTime; 在源进程中,MPI_Win_create time = 2.21 在目标进程中。目标进程的缓冲区大小约为 1GB,源进程0.001071,目标进程MPI_Win_create time = 25.21。在大约 2GB 时,我在源进程 0.000894 和目标进程 MPI_Win_create time = 41.580131 中看到了这一点。对于我尝试过的各种数据大小,这种趋势是相同的。也就是说,源进程的 MPI_Win_create 时间始终高于目标进程(并随着数据大小的增加而增加)。在目标进程中,它要低得多。

据我了解,在调用 MPI_Win_create 时,相应的进程会创建一个 RMA 窗口,该窗口在相应进程的地址空间公开内存区域,从 MPI_Win_create time = 0.000999 指向的位置开始,该区域的大小为 { {1}}。当目标进程的 bufferSize 增加时,我无法理解为什么 MPI_Win_create 的运行时间在原始进程中增加。以及为什么在目标进程端,即使增加 buffer,MPI_Win_create 的运行时或多或少是恒定的并且非常小。源端发生了什么而目标端没有发生?

解决方法

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

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

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