КаждыйNузлов начинает параллельный поиск с первой вершины в их локальном списке вершин во время первого супершага (другие узлы остаются бездействующими во время первого супершага, чтобы уменьшить количество конфликтов в нумерации компонентов). На каждом супершаге обрабатываются все новые отображения компонентов из удаленных узлов. Если работы от удаленных обновлений нет, из локального списка удаляется новая вершина и добавляется в очередь работы.
Компоненты выделяются из объектаcomponent_value_allocator, что обеспечивает уникальность данного номера компонента в системе, в настоящее время с помощью ранга и числа процессов для шага распределения.
Когда обнаруживается, что два компонента на самом деле являются одним и тем же компонентом, регистрируется столкновение. В разрешении предпочтительнее меньшее число компонентов, поэтому разрешение нумерации компонентов является последовательным. После того, как поиск исчерпал все вершины на графике, отображение делится со всеми процессами и они самостоятельно разрешают комонентное отображение. Эта фаза, вероятно, может быть значительно ускорена, если будет найден умный алгоритм сокращения.
Copyright (C) 2009 Попечители Университета Индианы.
Авторы: Брайан Барретт, Дуглас Грегор и Эндрю Ламсдейн