Closed Fettpet closed 7 years ago
Zu 3. und 4: Collectiv bedeutet, dass ich eine Operation mit allen Recheneinheiten gleichzeitig durchführen muss. Für unseren Iterator bedeutet dies, dass die Operationen operator++, it = begin(offset) und operator!= von allen Prozessen collectiv durchgeführt werden müssen. Damit nicht alle Arbeiter das gleich tun, benötigen wir einen Offset und eine Sprungweite. Die Sprungweite ist implementiert, der Offset nicht.
Aus den Beobachtungen können wir folgende Schlüsse ziehen.
Um Collectiv einzubauen muss folgendes getan werden:
Das Collectiv scheint eine Implementierungseigenschaft zu sein.
Eine Kollective Policy muss mehrere Funktionen Implementieren. Die erste ist eine Synchronisationsfunktion. Nach dem Weiterrücken müssen alle Teilnehmer synchronisieren, damit sie auf den selben Daten arbeiten. Falls sie sich die daten teilen, darf auch nur ein Arbeiter weiterrücken. Dafür benötigen wir eine zweite Funktion.
Mir fehlt noch das Offset. Falls eine Ebene Collectiv war, benötigt die Ebene darinter ein Offset, damit die Arbeiter nicht auf dem selben Datum rechnen. Das Offset wird in der begin Funktion des darunterliegenden virtuellen Containers benötigt. In der begin Funktion wird der Construktor des Iterators aufgerufen.
Folgende Probleme sind zum jetzigen Zeitpunkt ungelöst:
Ich habe das Collectiv falsch verstanden. Die Arbeiter sind von anfang an da. Das bedeutet
nicht mehr relevant
Verschiedene Ebenen können kollektiv und nicht kollektiv sein. Offene Fragen: