2012-04-08 2 views
0

Ich bemerke, dass alle MPI-Aufrufe ein gewisses Maß an Symmetrie benötigen, oder sie hängen und/oder produzieren unerwartete Ergebnisse. Wie greifen Sie ein dynamisches Problem oder einen Datensatz an?MPI - Wie nähert man sich einer dynamischen Arbeitslast, die nicht durch die Anzahl der Threads teilbar ist?

Jedes Beispiel, das ich online finde, bricht immer das Problem in gleichmäßig teilbare Stücke oder verwendet die Wiederholung von Codeblöcken in ihrer Berechnung.

Sagen sie, ich 8 Threads zur Verfügung, aber die Arbeit, die ich tun mag kommt in Einheiten von 57, 80, 99, 64, 13, etc ...

Gibt es einen bevorzugten Ansatz zur Bekämpfung solch ein Problem? Reduktion scheint gleiche Aufrufe an die Funktion zwischen Threads zu erfordern? (d. h. 57 würde 8 Aufrufe von jedem Thread erfordern, obwohl die letzten 7 sinnlos wären) Scatter scheint ähnlich zu sein. Gibt es etwas wie Scatter, das auf nicht gleichmäßig teilbaren Problemmengen funktioniert?

Antwort

0

Wenn Sie die Schreib-/Sendefunktion im Vergleich zu Scatter verwenden, haben Sie viel Kontrolle darüber, wie Sie Daten verteilen, obwohl es ein wenig mehr Last ist. Im Idealfall teilen Sie die Daten so gleichmäßig wie möglich und lassen Sie den Master-Prozess die zusätzliche Arbeit erledigen.

Verwandte Themen