Я пытаюсь выполнить Matrix Transpose в Python, используя MPI. Я хочу использовать разделение на шахматной доске для разделения матрицы на другой процесс.
Я написал следующий код,
import numpy as np
from mpi4py import MPI
import sys
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
size = comm.Get_size()
A = np.zeros((4,4))
if rank==0:
A[:,:] = (np.matrix([[1.,2.,3.,4],[5.,6.,7.,8.],[9.,10.,11.,12.],[13.,14.,15.,16.]]))
local_a = (np.zeros(4))
comm.Scatter(A, local_a, root=0)
print("process", rank, "has", local_a)
В настоящее время в local_a каждая строка разделена между четырьмя различными процессами, как показано на рисунке ниже,
Но я хочу разделить свою матрицу между четырьмя процессами типа
Process 0: [1,2
5,6]
Process 1: [3,4
7,8]
Process 2: [9,10
13,14]
Process 3: [11,12
15,16]
Как мне этого добиться?