Графовые алгоритмы (lib) с входным графом в разделяемой памяти только для чтения на C / ++ - PullRequest
3 голосов
/ 09 марта 2010

Я бы хотел, чтобы у менеджера был общий доступ к графикам через общую память, доступный только для чтения, для других процессов, которые будут запускать на них различные алгоритмы. Я хотел бы задать несколько вопросов, возникших при исследовании проблемы:

  • Существуют ли какие-либо библиотеки графов, которые могут работать (возможно, со своими) структурами графов в режиме только для чтения? То есть алгоритмы должны иметь свое рабочее пространство и буферы результатов в локальной памяти процесса и не использовать никаких буферов, объявленных в структуре графа.

  • Известны две известные мне библиотеки: igraph и Boost . Я не знаю много о интерфейсе C первого и еще не использовал Boost. Есть опыт в теме (по поводу совместимости с шм)?

  • При просмотре документов Boost я вижу, что есть пакет Boost.Interprocess с поддержкой shm.

    • Сначала я подумал об использовании вручную созданного shm с mmapped shm (платформа Linux). Boost лучше и рекомендуется по этому методу?
    • Играет ли библиотека Boost Graph вместе с ручным shm или Interprocess?

Помимо понимания этих вопросов, я был бы рад прочитать о вашем опыте обработки графиков и общей памяти. Спасибо!

1 Ответ

1 голос
/ 19 марта 2010

В Boost Graph Library различные типы графиков являются просто концепциями (http://www.boost.org/doc/libs/1_42_0/libs/graph/doc/graph_concepts.html).

Вы должны иметь возможность реализовать собственную структуру графа, придерживаться необходимой концепции и применять любой алгоритм BGL к вашим собственным данным (или, возможно, просто обернуть ваши общие данные в класс edge_list http://www.boost.org/doc/libs/1_42_0/libs/graph/doc/edge_list.html).

Поскольку вы просматриваете разделяемую память, вас также может заинтересовать Parallel BGL (http://www.boost.org/doc/libs/1_42_0/libs/graph_parallel/doc/html/index.html)

НТН

...