Соглашение MPI для индекса строк и столбцов

Я использую 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 процессами (2 поддомена для X и 4 для Y):

введите здесь описание изображения

(xs,xe) представляют x_start и x_end ячейки, (ys,ye) представляют y_start и y_end ячейки

Я хотел бы знать, нужно ли мне устанавливать в массив x(i,j) i индекс как индекс строки и j как индекс столбца?

Является ли общим правилом ставить первый индекс для строки, а второй - для столбца? (например, на языке C, Fortran и Matlab или, может быть, больше)

Спасибо за вашу помощь.


person youpilat13    schedule 07.09.2017    source источник
comment
in x(i,j) i - всегда строка, а j - всегда столбец. Фортран является главным столбцом, что означает, что в памяти x(1,0) находится рядом с x(0,0). С другой стороны, C является основной строкой, что означает, что в real x[2][2] x(0,1) находится в памяти рядом с x(0,0).   -  person Gilles Gouaillardet    schedule 08.09.2017
comment
- @ GillesGouaillardet хорошо, так что мне делать, чтобы исправить мою проблему с Fortran и row_type, которые я определил? Когда вы говорите, что в x (i, j) i всегда строка, а j всегда столбец, вы говорите как о языках C, так и о языках Fortran?   -  person youpilat13    schedule 08.09.2017
comment
правильно, здесь всегда означает как C, так и Fortran   -  person Gilles Gouaillardet    schedule 08.09.2017


Ответы (1)


Я не уверен, но, возможно, попробуйте установить другой флаг для всех 4 сообщений.

person user2982762    schedule 07.09.2017