Zwiększ bibliotekę wykresów i LEMON
Jak wspomina Daniel w swojej wyczerpującej odpowiedzi , najbardziej wszechstronną ogólną biblioteką C ++ jest Biblioteka Grafów Wzmocnienia . Istnieje nowe rozszerzenie pamięci rozproszonej zdolne do wykonywania podstawowych algorytmów, takich jak wyszukiwanie w pierwszej kolejności i w pierwszej kolejności, minimalne drzewa opinające i wyszukiwanie połączonych komponentów, ale nie znam się na nowym projekcie. Sama biblioteka grafów pomocniczych cieszy się renomą i jest wykorzystywana w wielu projektach na całym świecie.
Jeśli wykonujesz podstawową pracę z grafami HPC, możesz zacząć od biblioteki grafów Boost, ale pamiętaj, że wiele kompilatorów HPC C ++ ma trudności z Boost (pomimo dość ścisłego przestrzegania standardów C ++) i może być konieczne użycie starsza wersja Boost lub kompilator inny niż dostawca, taki jak GCC, aby działał na systemach HPC.
Szybkie przeglądanie repozytoriów LEMON pokazuje, że zespół superkomputerowy IBM BlueGene jest zaangażowany, ale nie widzę żadnych zależności ani konfiguracji MPI, więc prawdopodobnie jest to obecnie tylko biblioteka grafów szeregowych.
Równoważenie obciążenia i dynamiczne dzielenie grafów
Jeśli interesuje Cię równoważenie obciążenia i dynamiczne dzielenie grafów, masz kilka innych opcji. Być może najbardziej znaną biblioteką jest ParMETIS , która została zaktualizowana do wersji 4 w zeszłym roku. ParMETIS ma funkcję ważenia opartego na wierzchołkach, co jest ważne w symulacjach wielofizycznych.
Europejskim konkurentem ParMETIS jest PT-Scotch , który miał lepszą wydajność w przypadku niektórych rodzajów problemów, ale podobnie jak ParMETIS, nie jest często aktualizowany.
Być może zainteresuje Cię również Zoltan , który jest częścią meta-pakietu Sandia National Laboratories Trilinos do obliczeń naukowych w C ++. Zoltan posiada własne hierarchiczne partycjonery i interfejsy do ParMETIS i PT-Scotch.
Graph500
Jeśli pracujesz nad najnowocześniejszymi funkcjami wyszukiwania równoległego, optymalizacji (najkrótsza ścieżka z jednego źródła) i zorientowania na krawędzie (maksymalny zestaw niezależny), zainteresuje Cię również swobodnie dostępny test porównawczy Graph500 .
Być może szukasz biblioteki grafów pomocniczych . Ma parser do odczytu wykresów określonych w formacie DOT GraphViz. Chociaż tak naprawdę nie wiem o narzutach pamięci, zapewnia ona wariant równoległości .
Inną biblioteką grafów jest LEMON, ale tak naprawdę nie wiem, a jeśli ma ona obsługę równoległości, nie jest reklamowana. Ta strona robi dobre wrażenie;)
źródło
Chciałbym również wspomnieć o STINGER , dynamicznej strukturze danych graficznych zaprojektowanej dla równoległości. Według strony internetowej jest on przeznaczony do następujących celów:
Nie jest tak ogólny jak LEMON lub Boost Graph Library i na wcześniejszym etapie rozwoju. Jeśli to sprawdzisz, będę zainteresowany Twoimi komentarzami.
źródło