主题:并行计算遇到的问题
最近遇到一个问题无法解决,来论坛求助。
我在用多个CPU运行一个CFD程序, 其中需要用一个CPU单独调用一个子程序, 于是我就写了大体如下的代码:
.......................
if (rank == 0) then
call subroutineA(...)
end if
call MPI_BARRIER(MPI_COMM_WORLD, ierr)
........................
但是编译完成后运行结果很奇怪,有时程序会卡在subroutineA那里,而这个子程序是可靠,没有错误的。我试着在subroutineA里面加一些print语句,然后发现卡住的地方根据我加入语句的不同而改变。更费解的是同一个编译好的可执行文件,在改变一些input的时候有时卡有时不卡,当然这里排除了算法和逻辑错误。这个到底是什么原因,是内存,MPI,还是其他??
我在用多个CPU运行一个CFD程序, 其中需要用一个CPU单独调用一个子程序, 于是我就写了大体如下的代码:
.......................
if (rank == 0) then
call subroutineA(...)
end if
call MPI_BARRIER(MPI_COMM_WORLD, ierr)
........................
但是编译完成后运行结果很奇怪,有时程序会卡在subroutineA那里,而这个子程序是可靠,没有错误的。我试着在subroutineA里面加一些print语句,然后发现卡住的地方根据我加入语句的不同而改变。更费解的是同一个编译好的可执行文件,在改变一些input的时候有时卡有时不卡,当然这里排除了算法和逻辑错误。这个到底是什么原因,是内存,MPI,还是其他??