Enviando e recebendo matriz 2D por MPI

O problema que estou tentando resolver é o seguinte:

O código serial C ++ que eu tenho computado em uma grande matriz 2D. Para otimizar esse processo, desejo dividir essa matriz 2D grande e executar em 4 nós (digamos) usando MPI. A única comunicação que ocorre entre os nós é o compartilhamento de valores de borda no final de cada etapa do tempo. Cada nó compartilha os dados da matriz de borda, A [i] [j], com seu vizinh

om base na leitura sobre o MPI, tenho o seguinte esquema a ser implementad

if (myrank == 0)
{
 for (i= 0 to x)
 for (y= 0 to y)
 {
  C++ CODE IMPLEMENTATION 
  .... 
  MPI_SEND(A[x][0], A[x][1], A[x][2], Destination= 1.....)
  MPI_RECEIVE(B[0][0], B[0][1]......Sender = 1.....)
  MPI_BARRIER
}

if (myrank == 1)
{
for (i = x+1 to xx)
for (y = 0 to y)
{
 C++ CODE IMPLEMENTATION
 ....
 MPI_SEND(B[x][0], B[x][1], B[x][2], Destination= 0.....)
 MPI_RECEIVE(A[0][0], A[0][1]......Sender = 1.....)
 MPI BARRIER
}

Queria saber se minha abordagem está correta e também gostaria de receber orientações sobre outras funções do MPI para analisar a implementaçã

brigado, Ashwi

questionAnswers(2)

yourAnswerToTheQuestion