Programmiermodell

Abgeschlossen

Bei der Beschreibung des Datenmodells von GraphLab wurde erläutert, dass Graphen auf mehrere Computer aufgeteilt werden. Während der Ausführung der GAS-Funktionen für jeden Scheitelpunkt kann es zu Lese-/Schreib- und Schreib-/Schreibkonflikten zwischen Scheitelpunkten kommen, die sich einen Bereich teilen. Die GraphLab-Engine synchronisiert Zugriffe auf freigegebene Daten und stellt eine konsistente parallele Ausführung sicher. GraphLab unterstützt insbesondere verschiedene Engines für die Graphenausführung mit einem jeweils unterschiedlichen Maß an Konsistenz, sodass Benutzer eine Engine auswählen können, die sich hinsichtlich der Korrektheit und Leistung für ihre Anwendungen eignet. Die verschiedenen Konsistenzkonzepte, die GraphLab mithilfe seiner unterschiedlichen Engines bietet, sind: volle Konsistenz, Kantenkonsistenz und Scheitelpunktkonsistenz. Wie in Abbildung 8 gezeigt wird, hat die Aktualisierungsfunktion bei voller Konsistenz an jedem Scheitelpunkt (Scheitelpunkt 3) einen exklusiven Lese- und Schreibzugriff auf ihren eigenen Scheitelpunkt, benachbarte Kanten und benachbarte Scheitelpunkte (d. h. ihren gesamten Bereich). Diese Anordnung gewährleistet zwar eine hohe Konsistenz und volle Korrektheit, schränkt jedoch die Parallelität und somit die Leistung ein. In vielen MLDM-Algorithmen benötigen Scheitelpunkte jedoch keinen exklusiven Lese-/Schreibzugriff auf ihren gesamten Bereich. Der PageRank-Algorithmus erfordert beispielsweise nur Lesezugriff auf benachbarte Kanten und Scheitelpunkte.

Um die Parallelität zu erhöhen und eine größere Anzahl von Konsistenzeinstellungen zu unterstützen, die sich für unterschiedliche MLDM-Anwendungen eignen, bietet GraphLab daher das Konzept der Kantenkonsistenz und der Scheitelpunktkonsistenz. Bei der Kantenkonsistenz hat die Aktualisierungsfunktion an einem Scheitelpunkt einen exklusiven Lese-/Schreibzugriff auf ihren Scheitelpunkt und die benachbarten Kanten, aber nur einen schreibgeschützten Zugriff auf benachbarte Scheitelpunkte. Dieses Protokoll reduziert naturgemäß die Konsistenz und ermöglicht eine bessere Nutzung der Parallelität. Bei der Scheitelpunktkonsistenz hat die Aktualisierungsfunktion an einem Scheitelpunkt nur für ihren eigenen Scheitelpunkt einen exklusiven Schreibzugriff, sodass alle Aktualisierungsfunktionen gleichzeitig ausgeführt werden können. Diese Funktion bietet größtmögliche Parallelität, im Gegenzug aber auch die geringste Konsistenz. GraphLab-Benutzer können eine Engine auswählen, welche die gewünschte Leistung mithilfe des erforderlichen Konsistenzmodells, das sie für ihre Anwendungen für geeignet halten, bereitstellt.

The full consistency, the edge consistency, and the vertex consistency models guaranteed by GraphLab. The full consistency model is the strongest, and the vertex consistency is the most relaxed one. As consistency is relaxed, parallelism is increased and vice versa.

Abbildung 8: Die von GraphLab bereitgestellten Modelle für vollständige Konsistenz, Kantenkonsistenz und Scheitelpunktkonsistenz. Das Modell für volle Konsistenz weist die stärkste Konsistenz auf, das Modell für Scheitelpunktkonsistenz hingegen die geringste Konsistenz. Wenn die Konsistenz reduziert wird, wird die Parallelität erhöht und umgekehrt.

Im Rahmen seiner Shared-Memory-Ansicht speichert GraphLab Ghosts in lokalen Speichern. „Ghosts“ bezeichnet die Adjazenzinformationen und -daten der einzelnen Scheitelpunkte. Ein Scheitelpunkt-Ghost stellt sicher, dass die Aktualisierungsfunktion des Scheitelpunkts direkten Speicherzugriff auf alle Daten innerhalb seines Bereichs hat.

Überprüfen Sie Ihr Wissen

1.

Wie hoch ist im folgenden Graphen beim Modell für volle Konsistenz die maximale Anzahl von Scheitelpunkten, die zu einem beliebigen Zeitpunkt Daten parallel lesen oder schreiben können?

Diagram of graph showing vertex V1 connected to V2, V3, and V6; then vertex V2 connected to V4 and V3 connected to V4 and V5.