J'utilise la fonction MPI MPI_Sendrecv
pour communiquer des tableaux de données entre les processus. Je le fais en Python en utilisant mpi4py, mais je suis sûr que ma question est indépendante de la langue utilisée.MPI_Sendrecv avec opération sur recvbuf?
Ce que je veux vraiment, c'est ajouter un tableau résidant sur un autre processus à un tableau local existant. Cela devrait être fait pour tous les processus, donc j'utilise la fonction MPI_Sendrecv
pour envoyer et recevoir les tableaux en une seule fois. Je peux ensuite ajouter le tableau reçu dans le recvbuf
à la matrice locale et j'ai terminé.
Ce serait bien si je pouvais sauver l'étape d'avoir un tableau recvbuf
séparé, et recevoir simplement les données directement dans le tableau local sans écraser les données existantes, mais la mise à jour plutôt à l'aide d'une opération (addition dans mon cas). Je suppose que ce que je cherche est une fonction combinée MPI_Sendrecv
/MPI_Reduce
. Est-ce que certaines fonctions comme celle-ci existent dans MPI?
Est-ce une opération par paire - par exemple, chaque rang a un seul voisin cela doit se produire? Pouvez-vous nous en dire un peu plus sur le modèle de communication? –