Матрица транспонировать в MPI в Python - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь выполнить 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 каждая строка разделена между четырьмя различными процессами, как показано на рисунке ниже,

enter image description here Но я хочу разделить свою матрицу между четырьмя процессами типа

Process 0: [1,2
            5,6]
Process 1: [3,4
            7,8]
Process 2: [9,10
            13,14]
Process 3: [11,12
            15,16]

Как мне этого добиться?

...