【问题标题】:MPI convention for index of rows and columns行和列索引的 MPI 约定
【发布时间】:2018-02-15 16:22:34
【问题描述】:

我正在使用 MPI 解决 PDE。为此,我将 2D 域分解为不同的单元格(每个单元格的大小为“xcell,ycell”,xcell = size_x_domain/(number of X subdomains)ycell = size_y_domain/(number of Y subdomains)

所以,我正在使用number of processes = (number of X subdomains)*(number of Y subdomains) 运行代码

相对于顺序版本的好处是我在代表子域的每个进程之间进行通信。

下图说明了我对 8 个进程的细分(X 为 2 个子域,Y 为 4 个子域):

(xs,xe) 表示单元格的x_startx_end, (ys,ye) 代表单元格的y_starty_end

我想知道是否必须在x(i,j) 数组中设置i 作为行索引j 作为列索引

将第一个索引放在 row 上,将第二个索引放在 column 上是否是一般规则? (例如,在 C、Fortran 和 Matlab 语言或更多语言中)

感谢您的帮助。

【问题讨论】:

  • in x(i,j) i 始终是行,j 始终是列。 “Fortran 是主要列”意味着在内存中 x(1,0)x(0,0) 旁边。另一方面,C 是 row major,这意味着在real x[2][2] 中,x(0,1) 在内存中紧挨着x(0,0)
  • -@GillesGouaillardet 好的,那么我该怎么做才能解决我定义的 Fortran 和 row_type 问题?当您说“在 x(i,j) 中 i 始终是行而 j 始终是列”时,您是在谈论 C 和 Fortran 语言吗?
  • 正确,这里的“always”是指C和Fortran

标签: mpi ipc fortran90 contiguous


【解决方案1】:

我不确定,但也许可以尝试为所有 4 个通信设置不同的标志。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多