2016-04-24 2 views
0

Ich muss einen Prozessor von meinem Comm auswählen, um einige Arbeiten auszuführen (ich will nicht, dass andere Prozessoren die Arbeit machen). Da ich meine Comm in die Gruppen aufgeteilt habe, kann ich nicht immer einen bestimmten Rang (zB 0) als meinen Master auswählen. Ich muss es aus meiner aktuellen Kommunikation wählen. Irgendein Vorschlag?Wie wählt man zufällig einen Master-Prozessor in der MPI-Programmierung?

Vielen Dank.

Antwort

3

Der Rang eines Prozesses ist immer relativ zu einem Kommunikator. Nachdem Sie Ihre Prozesse aufgeteilt haben, können Sie einfach den Prozess 0 im neuen Communicator ausführen, um die gewünschte Arbeit auszuführen.

0

Die angenommene Antwort von Suszterpatt ist korrekt und das ist normalerweise das, was Sie tun sollten. Dennoch möchte ich den Titel der Frage von zufällig einen Master-Prozess auswählen. Um das zu tun

  1. Jeder Rang im Kommunikator erzeugt eine Zufallszahl
  2. Verteilen Sie die Zufallszahl und die Rangnummer mit MPI_Allreduce mit MPI_MAXLOC.
  3. Jetzt kann jeder Rang im Communicator den Rang als Master verwenden.
Verwandte Themen