¿Pueden MPI sendbuf y recvbuf ser lo mismo?

1 minuto de lectura

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

¿Ha sido útil esta solución?