code:Pourquoi Gather() échoue si la racine de chaque processus est elle-même?
#mpiexec -n 2 python3 gather.py
from mpi4py import MPI
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
a = 1
comm.barrier()
b = comm.gather(a, root=rank)
print("b:", b, rank)
comm.barrier()
sortie doit être:
b: [1, 1], 0
b: [1, 1], 1
Cependant , le programme n'imprime rien et ne se termine pas. Quelle est la raison de cela et comment puis-je obtenir la sortie désirée?
Je pense que le processus _every_ devrait spécifier la même racine (afin qu'ils sachent tous où envoyer les données). À l'heure actuelle, chaque processus se spécifie comme étant la racine, alors ils pensent tous qu'ils sont les receveurs et attendent juste que quelqu'un d'autre leur envoie des données. – mgilson
@mgilson Cela semble logique. Savez-vous comment je peux atteindre le résultat souhaité? Je ne veux pas utiliser AllGather() btw. – SpiderRico
Je pense que cela dépend de ce que le résultat souhaité _is_. Normalement, l'idée est de rassembler toutes les données sur les autres processus à un processus spécifié. Savez-vous sur quel processus vous souhaitez collecter les données? – mgilson