Нужна ли транспонирование для 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)