Нужна ли транспонирование для MPI SCATTER 3D-массива правильным образом?

У меня есть вопрос о рассеянии данных с использованием функции рассеяния MPI.

Я хотел бы точно разбросать данные, но я не знаю, возможно ли это с помощью рассеяния MPI или нужно ли преобразовывать данные, а затем разбрасывать.

Например, у меня есть размер массива (x,y,z) 4,8,2 (так что есть два 2D-массива). Теперь я хочу разбить его на 4 процесса, каждый размер будет 4,2,2.

Данные разбросаны следующим образом:

Тем не менее, мне нужно разброс данных таким образом:

Программа написана на фортране.

Функция разброса в моей программе выглядит следующим образом:

CALL MPI_Scatter(TRANSPONSE_LOCAL_YZ(:,:,:), x_proc*y*z_proc, MPI_INT, TRANSPONSE_YZ(:,s:f,:), x_proc*y*z_proc, MPI_INT, 0, MPI_COMM_WORLD, MPI_STATUS, MPI_err)

0 ответов

Другие вопросы по тегам