Я хочу создать топологию без 0 процессора в ней. Моя идея - сделать процессор 0 ведущим и создать топологию как подчиненную. После определенной топологии вычисления sin, я пошлю данные на мастер. Вот мой код:использовать mpi_cart_create с мастером и ведомым
include "mpif.h"
integer maxn
integer myid,Root,numprocs,numtasks,taskid
integer comm2d, ierr
integer dims(2)
logical periods(2)
data periods/2*.false./
Root = 0
CALL MPI_INIT(ierr)
CALL MPI_COMM_RANK(MPI_COMM_WORLD, myid, ierr)
CALL MPI_COMM_SIZE(MPI_COMM_WORLD, numprocs, ierr)
numtasks = numprocs-1
if(myid .eq. Root) then
print *, 'Hello I am master'
endif
c Get a new communicator for a decomposition of the domain.
c Let MPI find a "good" decomposition
dims(1) = 0
dims(2) = 0
CALL MPI_DIMS_CREATE(numtasks,2,dims,ierr)
CALL MPI_CART_CREATE(MPI_COMM_WORLD,2,dims,periods,.true.,
* comm2d,ierr)
c Get my position in this communicator
CALL MPI_COMM_RANK(comm2d, taskid, ierr)
c
print *, 'task ID= ',taskid
if (myid .eq. master) then
print *,dims(1),dims(2)
endif
CALL MPI_Comm_free(comm2d, ierr)
30 CALL MPI_FINALIZE(ierr)
STOP
END
Но, когда я пробегаю над кодом; Я получаю следующую ошибку.
Фатальная ошибка в PMPI_Comm_rank: Invalid коммуникатор, стек ошибка: PMPI_Comm_rank (121): MPI_Comm_rank (MPI_COMM_NULL, ранг = 0x7fff08bf960c) не удалось PMPI_Comm_rank (73) .: Null коммуникатор
Как я могу устранить ошибку? Что я делаю неправильно.
Я думаю, я редактировал его сейчас .. –
Любую причину для разработки нового кода в 2016 году с использованием стандартных Fortran77? – Gilles
@ Gilles не совсем учит MPI, он выбран из учебника. –