Что такое код MPI для извлечения 2D субматрицы из более крупной 2D матрицы? - PullRequest
0 голосов
/ 05 марта 2010

Я ищу лучший способ извлечения 2D-подматрицы из большой 2-D подматрицы. То есть. Если у меня есть матрица с 1 побочной точкой на каждом ребре, я хочу извлечь внутреннюю матрицу. Поэтому, если матрица определена как матрица [NX + 2] [NY + 2], как мне извлечь подматрицу, начиная с матрицы [1] [1] и перейти к матрице [NX + 1] [NY + 1]

Я хочу сделать это с MPI_Type_vector, я думаю, но я не совсем уверен, как определить его с правильным шагом, длиной блока и т. Д. Я хочу отправить этот новый MPI_Datatype другому процессору, используя MPI_Send и MPI_Recv. Размер буфера на получающем процессоре будет размером [NX] [NY] Спасибо

1 Ответ

0 голосов
/ 06 марта 2010

В Фортране это будет

call mpi_type_vector(ny,nx,nx+2,mpi_double_precision,my_new_type,ierr)
call mpi_type_commit(my_new_type,ierr)

Я бы сделал больше ошибок, переводя это на C, чем вы. Не забывайте, что Fortran хранит массивы в мажорном порядке.

...