Отправка раздела 3D-массива с использованием MPI

У меня есть следующий 3D-массив.

U[Timesteps][X][Y]

С диапазонами

Timesteps ( 0 to 100)
X ( 0 to 480)
Y ( 0 to 480)

Мне нужно разделить массив, отправляемый по узлам для обработки с использованием MPI.

Я хочу разделить следующим образом

Процесс (узел 0) должен получить

U[Timesteps][X][Y]

С диапазонами

Timesteps ( 0 to 100)
X ( 0 to 200)
Y ( 0 to 200)

и процесс (узел 1) должен получить

U[Timesteps][X][Y]

С диапазонами

Timesteps ( 0 to 100)
X ( 201 to 480)
Y ( 201 to 480)

Точно так же я могу разделить столько узлов, сколько станет доступно во время выполнения. (т.е. разделение на x и Y с полными временными шагами)

Может ли кто-нибудь помочь с образцом кода MPI. Я запутался в использовании производного типа данных MPI для моего требования.

Спасибо


person Anup Buchke    schedule 26.02.2013    source источник
comment
Чего-то здесь не хватает. А как насчет X(0 to 200) / Y(201 to 408) и X(201 to 408) / Y(0 to 200)?   -  person Hristo Iliev    schedule 27.02.2013


Ответы (1)


Пройдя несколько руководств по MPI, я научился отправлять 3D-массивы. Нам нужно использовать производный тип данных MPI_TYPE_INDEXED.

person Anup Buchke    schedule 27.02.2013