Können MPI sendbuf und recvbuf dasselbe sein?

Lesezeit: 1 Minute

Ich füge eine Menge Array-Elemente aus jedem Prozess zusammen:

double rho[1024];
//Some operation to calculate rho for each process;
MPI_Allreduce(rho,rho,1024,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);

Wird rho sowohl als sendbuf als auch als recvbuf funktionieren?

Hast du kontrolliert MPI_IN_PLACE? Entsprechend Manpage MPI_AllReduce Und MPI-Dok Es kann verwendet werden, um denselben Puffer für sendbuf und recvbuf anzugeben, solange Sie innerhalb derselben Gruppe arbeiten.

Der Aufruf sähe so aus:

MPI_Allreduce(MPI_IN_PLACE,rho,1024,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);

  • +1 – In-Place-Reduktionen können nützlich sein, und das oben Gesagte ist der richtige Weg, dies zu tun.

    – Jonathan Dursi

    12. Mai 2013 um 17:30 Uhr

  • Dies ist ein eleganter Weg, dies zu tun. Seine Antwort muss so schnell wie möglich genehmigt werden.

    – Semih Özmen

    18. November 2014 um 20:27 Uhr

  • Wie wäre es mit MPI_Reduce?

    – Taitai

    13. September 2018 um 23:56 Uhr

  • Lesen Sie die Manpage von MPI_Reduce, es ist in Ordnung, MPI_IN_PLACE zu verwenden

    – Tokubara

    18. April 2021 um 4:11 Uhr

1443760cookie-checkKönnen MPI sendbuf und recvbuf dasselbe sein?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy