Boost Graph Library und LEMON
Wie Daniel in seiner umfassenden Antwort erwähnt , ist die Boost Graph Library die umfassendste allgemeine C ++ - Bibliothek . Es gibt eine neue Erweiterung für verteilten Speicher, die einige grundlegende Algorithmen ausführen kann, z. B. Breitensuche und Tiefensuche, minimale Spannbäume und Suche nach verbundenen Komponenten, aber ich bin mit dem neuen Projekt nicht sehr vertraut. Die Boost Graph Library selbst ist bekannt und wird in vielen Projekten auf der ganzen Welt verwendet.
Wenn Sie grundlegende HPC-Diagrammarbeiten ausführen, möchten Sie möglicherweise mit der Boost-Diagrammbibliothek beginnen. Beachten Sie jedoch, dass viele HPC C ++ - Compiler Probleme mit Boost haben (trotz der recht strengen Einhaltung der C ++ - Standards) und möglicherweise eine verwenden müssen ältere Version von Boost oder ein Compiler eines anderen Anbieters wie GCC, damit es auf HPC-Systemen funktioniert.
Ein kurzer Blick in die LEMON-Repositorys zeigt, dass das IBM BlueGene-Supercomputing-Team beteiligt ist, ich sehe jedoch keine Abhängigkeiten oder Konfigurationen für MPI, sodass es sich derzeit wahrscheinlich nur um eine serielle Diagrammbibliothek handelt.
Lastausgleich und dynamische (Neu-) Partitionierung von Graphen
Wenn Sie an Lastausgleich und dynamischer Diagrammpartitionierung interessiert sind, haben Sie mehrere weitere Optionen. Die vielleicht bekannteste Bibliothek ist ParMETIS , die letztes Jahr auf Version 4 aktualisiert wurde. ParMETIS bietet eine vertexbasierte Gewichtung, die für Multi-Physik-Simulationen wichtig ist.
Der europäische Konkurrent von ParMETIS ist PT-Scotch , das bei bestimmten Arten von Problemen eine bessere Leistung erzielt hat, jedoch ähnlich wie ParMETIS nicht häufig aktualisiert wird.
Sie könnten auch an Zoltan interessiert sein , das Teil des Trilinos-Metapakets der Sandia National Laboratories für wissenschaftliches Rechnen in C ++ ist. Zoltan verfügt über eigene hierarchische Partitionierer und Schnittstellen zu ParMETIS und PT-Scotch.
Graph500
Wenn Sie an der Spitze der gleichzeitigen Suche, Optimierung (kürzester Pfad aus einer Quelle) und kantenorientiert (maximaler unabhängiger Satz) arbeiten, interessieren Sie sich auch für den frei verfügbaren Graph500-Benchmark .
Vielleicht ist die Boost Graph Library genau das, wonach Sie suchen. Es verfügt über einen Parser zum Lesen von Diagrammen, die im DOT-Format von GraphViz angegeben sind. Obwohl ich nicht wirklich über Speicher-Overhead Bescheid weiß, bietet es eine Variante für die Parallelisierung .
Eine andere Grafikbibliothek ist LEMON, aber ich weiß es nicht wirklich und wenn es Parallelisierung unterstützt, wird es nicht angekündigt. Die Website macht aber einen guten Eindruck;)
quelle
Ich möchte auch STINGER erwähnen , eine dynamische Graphendatenstruktur , die für Parallelität ausgelegt ist. Laut der Website ist es für die folgenden Ziele ausgelegt:
Es ist nicht so allgemein wie LEMON oder Boost Graph Library und befindet sich in einem früheren Entwicklungsstadium. Wenn Sie es überprüfen, würde mich Ihre Kommentare interessieren.
quelle