Estoy agregando una carga de elementos de matriz de cada proceso:
double rho[1024];
//Some operation to calculate rho for each process;
MPI_Allreduce(rho,rho,1024,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
¿Funcionará tener rho como sendbuf y recvbuf?
Te fijaste MPI_IN_PLACE
? De acuerdo a MPI_AllReduce página del manual y documento MPI se puede usar para especificar el mismo búfer para sendbuf y recvbuf siempre que esté trabajando dentro del mismo grupo.
La llamada se vería así:
MPI_Allreduce(MPI_IN_PLACE,rho,1024,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
-
+1: las reducciones en el lugar pueden ser útiles, y la anterior es la forma correcta de hacerlo.
– Jonathan Dursi
12 mayo 2013 a las 17:30
-
esta es una forma elegante de hacer esto … su respuesta necesita aprobación lo antes posible.
– Semih Ozmen
18 de noviembre de 2014 a las 20:27
-
¿Qué hay de MPI_Reduce?
– Taitai
13/09/2018 a las 23:56
-
lea la página de manual de MPI_Reduce, está bien usar MPI_IN_PLACE
– Tokubara
18 de abril de 2021 a las 4:11