1、数组内存顺序对于数组的传递和接收非常重要。(http://micro.ustc.edu.cn/Linux/MPI/)
(http://fcode.cn/guide-45-1.html)常用的声明:real*8 Rho_k(3,Lx,Ly)的元素从(1,1,1)开始,紧接着是(2,1,1)因而第二维并不连续。因此考虑重新定义为real*8 Rho_k(Lx,Ly,3)。这样Lx个元素Rho_k(i,1,1)之间是连续内存。方便传递。
又考虑,在进行区域划分时,最简单是将x=1,Ly,分成num_procs份,这样,y=j个数据经常需要传递,为了让y=j个数据方便传递,对定义再次修改定义:real*8 Rho_k(Ly,Lx,3)。
2、在MPI并行程序中,那些涉及到局部相邻操作的变量,需要提前提前初始化他们的值!
3、天河二号上的操作:windows上,WinSCP+
网友评论