Je veux créer une topologie sans processeur 0 dedans. Mon idée est de faire du processeur 0 un maître et de créer une topologie en tant qu'esclave. Après certains calculs de topologie sin, je vais envoyer des données au maître. Voici mon code:utilise mpi_cart_create avec master et slave
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
Mais, quand je cours au-dessus du code; Je reçois l'erreur suivante.
Erreur fatale PMPI_Comm_rank: communicateur non valide, la pile d'erreur: PMPI_Comm_rank (121): MPI_Comm_rank (MPI_COMM_NULL, rang = 0x7fff08bf960c) n'a pas PMPI_Comm_rank (73) .: communicateur nul
Comment puis-je éliminer l'erreur? Qu'est ce que je fais mal.
Je pense, je l'ai modifié maintenant .. –
Quel est le motif de développer un nouveau code en 2016 en utilisant la norme Fortran77? – Gilles
@ Gilles n'apprenant pas exactement MPI il est choisi dans un tutoriel. –