Boost Graph Library y LEMON
Como Daniel menciona en su respuesta integral , la biblioteca general de C ++ más completa es la Biblioteca de gráficos Boost . Hay una nueva extensión de memoria distribuida capaz de hacer algunos algoritmos básicos, como búsqueda de amplitud y profundidad, árboles de expansión mínima y búsqueda de componentes conectados, pero no estoy muy familiarizado con el nuevo proyecto. La biblioteca de gráficos Boost en sí tiene buena reputación y se utiliza en muchos proyectos en todo el mundo.
Si está haciendo un trabajo básico de gráficos HPC, es posible que desee comenzar con Boost Graph Library, pero tenga en cuenta que muchos compiladores HPC C ++ tienen dificultades con Boost (a pesar de su estricto cumplimiento de los estándares C ++), y es posible que necesite usar un versión anterior de Boost o un compilador no proveedor como GCC para que funcione en sistemas HPC.
Una exploración rápida de los repositorios de LEMON muestra que existe una participación del equipo de supercomputación IBM BlueGene, pero no veo ninguna dependencia o configuración para MPI, por lo que es probable que solo sea una biblioteca de gráficos en serie en este momento.
Equilibrio de carga y (re) partición dinámica de gráficos
Si está interesado en el equilibrio de carga y la partición dinámica de gráficos, tiene varias opciones más. Quizás la biblioteca más conocida es ParMETIS , que se actualizó a la versión 4 el año pasado. ParMETIS presenta una ponderación basada en vértices, que es importante para las simulaciones multifísicas.
El competidor europeo de ParMETIS es PT-Scotch , que ha tenido un mejor rendimiento para ciertos tipos de problemas, pero, al igual que ParMETIS, no se actualiza con frecuencia.
También le puede interesar Zoltan , que forma parte del metapaquete Sandil National Laboratories Trilinos para la informática científica en C ++. Zoltan presenta sus propios particionadores jerárquicos e interfaces tanto en ParMETIS como en PT-Scotch.
Graph500
Si está trabajando en el borde de la búsqueda concurrente, la optimización (ruta más corta de una sola fuente) y orientado al borde (conjunto independiente máximo), también le interesará el punto de referencia Graph500 disponible de forma gratuita .
Quizás, la Boost Graph Library es lo que está buscando. Tiene un analizador para leer gráficos especificados en el formato DOT de GraphViz. Si bien no sé realmente sobre la sobrecarga de memoria, proporciona una variante para la paralelización .
Otra biblioteca de gráficos es LEMON pero realmente no lo sé y si tiene soporte para la paralelización, no se anuncia. Sin embargo, su sitio web causa una buena impresión;)
fuente
También me gustaría mencionar STINGER , una estructura de datos de gráficos dinámicos diseñada para el paralelismo. Según el sitio web, está diseñado para los siguientes objetivos:
No es tan genérico como LEMON o Boost Graph Library y en una etapa anterior de desarrollo. Si lo revisas, me interesarían tus comentarios.
fuente