Quelle est la structure de données utilisée pour stocker la valeur de retour de MPI_MAXLOC en fonction MPI_Reduce() pour un tableau de doubles valeursMPI_MAXLOC pour un tableau de valeurs doubles
0
A
Répondre
1
dans C
, le type MPI vous devez utiliser est MPI_DOUBLE_INT
, et il n'y a pas de structure C prédéfinie pour que (par exemple, il faut créer manuellement) comme ceci
struct {
double val;
int rank;
};
FWIW, le MPI_DOUBLE_INT
type de données prédéfini est défini comme ceci
type[0] = MPI_DOUBLE
type[1] = MPI_INT
disp[0] = 0
disp[1] = sizeof(double)
block[0] = 1
block[1] = 1
MPI_TYPE_CREATE_STRUCT(2, block, disp, type, MPI_DOUBLE_INT)
Notez que dans Fortran
, vous devez utiliser MPI_2DOUBLE_PRECISION
(et oui, l'indice est une double précision en Fortran!)
cela est expliqué dans http://mpi-forum.org/docs/mpi-3.1/mpi31-report/node114.htm#Node114 et il y a même un exemple avec double pour les deux C
et Fortran
Bienvenue sur stackoverflow! Il y a un exemple d'utilisation de MPI_MAXLOC dans c dans les [normes mpi, à la page 181] (http://mpi-forum.org/docs/mpi-3.1/mpi31-report.pdf). Pourriez-vous décrire votre problème d'une façon plus précise, en fournissant ce que vous avez essayé, ou un code indiquant la structure à réduire? – francis