Boost Graph Library и LEMON
Как Дэниел упоминает в своем исчерпывающем ответе , наиболее полнофункциональной общей библиотекой C ++ является библиотека графов ускорения . Существует новое расширение распределенной памяти, способное выполнять некоторые базовые алгоритмы, такие как поиск в ширину и в глубину, поиск минимальных связующих деревьев и поиск связанных компонентов, но я не очень знаком с новым проектом. Сама Boost Graph Library пользуется хорошей репутацией и используется во многих проектах по всему миру.
Если вы выполняете базовую работу с графиками HPC, вы можете начать с библиотеки графов Boost, но имейте в виду, что многие компиляторы HPC C ++ испытывают трудности с Boost (несмотря на довольно строгое соблюдение стандартов C ++), и вам может потребоваться использовать более старая версия Boost или компилятор стороннего производителя, такой как GCC, для работы в системах HPC.
Быстрый просмотр репозиториев LEMON показывает, что есть команда суперкомпьютеров IBM BlueGene, но я не вижу каких-либо зависимостей или конфигурации для MPI, так что на данный момент это скорее всего будет библиотека последовательных графов.
Балансировка нагрузки и динамическое (пере) разбиение графа
Если вас интересует балансировка нагрузки и динамическое разбиение графа, у вас есть еще несколько вариантов. Пожалуй, самая известная библиотека - это ParMETIS , которая была обновлена до версии 4 в прошлом году. ParMETIS имеет взвешивание на основе вершин, что важно для мультифизического моделирования.
Европейским конкурентом ParMETIS является PT-Scotch , который имеет лучшую производительность для определенных типов проблем, но, как и ParMETIS, не часто обновляется.
Вы также можете быть заинтересованы в Zoltan , который является частью метапакета Sandia National Laboratories Trilinos для научных вычислений на C ++. Золтан имеет свои собственные иерархические разделители и интерфейсы как в ParMETIS, так и в PT-Scotch.
graph500
Если вы работаете на переднем крае параллельного поиска, оптимизации (кратчайший путь из одного источника) и ориентированных на ребро (максимальный независимый набор), вас также заинтересует свободно доступный тест Graph500 .
Возможно, библиотека Boost Graph - это то, что вы ищете. Он имеет парсер для чтения графиков, указанных в формате DOT GraphViz. Хотя я действительно не знаю о накладных расходах памяти, он предоставляет вариант для распараллеливания .
Другая графическая библиотека - LEMON, но я действительно не знаю ее, и если она имеет поддержку распараллеливания, она не рекламируется. Это сайт производит хорошее впечатление;)
источник
Я также хотел бы упомянуть STINGER , динамическую структуру данных графа, разработанную для параллелизма. По данным сайта, он предназначен для следующих целей:
Он не такой общий, как LEMON или Boost Graph Library, и находится на более ранней стадии разработки. Если вы проверите это, мне будут интересны ваши комментарии.
источник