Разделы презентаций


Параллельная обработка больших графов

Содержание

Откуда возникают большие графы?Интернет (WWW) На сентябрь 2016 – 47 миллиардов страницПо оценке Google – более 1 триллионаСоциальные медиаБлогосфера: 2011 – 172 х 106 (+106/день)Facebook: 2010 – 500 х 106, 2013

Слайды и текст этой презентации

Слайд 1 Параллельная обработка больших графов
www.dislab.org
Александр Сергеевич Семенов

Параллельная обработка больших графовwww.dislab.orgАлександр Сергеевич Семенов

Слайд 2Откуда возникают большие графы?
Интернет (WWW)
На сентябрь 2016 – 47

миллиардов страниц
По оценке Google – более 1 триллиона
Социальные медиа
Блогосфера: 2011

– 172 х 106 (+106/день)
Facebook: 2010 – 500 х 106, 2013 – 1:1 х 109 (650 х 106 акт.польз./день), 140 х 109 связей
LinkedIn: 2013 – 8 х 106, 60 х 106 связей
Twitter: 2011 – 140 х 106 сообщений/день
Транспортные сети
Биоинформатика
Бизнес-задачи

1http://www.worldwidewebsize.com

Откуда возникают большие графы?Интернет (WWW) На сентябрь 2016 – 47 миллиардов страницПо оценке Google – более 1

Слайд 3Биоинформатика: сходство организмов (HPC)
Число долей 105
Длина последовательности 109
Вершин в

доле 109 (берутся короткие слова)
Всего вершин 1014
Найти слова, которые с

заданной точностью встречаются во всех последовательностях, или
Найти клику или плотный подграф (кластеризация), если ребро – характеристика сходства


Биоинформатика: сходство организмов (HPC)Число долей 105Длина последовательности 109 Вершин в доле 109 (берутся короткие слова)Всего вершин 1014Найти

Слайд 4Электросети (HPC)
Связанность
Надежность

Различные пути, betweenness centrality


Электросети (HPC)СвязанностьНадежностьРазличные пути, betweenness centrality

Слайд 5Анализ социальных сетей (HPC)
Анализ сообществ
Понимание намерений
Динамика популяции
Распространение эпидемий

Кластеризация


Анализ социальных сетей (HPC)Анализ сообществПонимание намеренийДинамика популяцииРаспространение эпидемийКластеризация

Слайд 6Бизнес-аналитика и кибербезопасность (Big Data&HPC)
Задачи понимания данных из огромных массивов
Выявление

аномалий в данных
Анализ данных
Выявление мошенничества

Паттерн «черные дыры»
Machine Learning!

Бизнес-аналитика и кибербезопасность (Big Data&HPC)Задачи понимания данных из огромных массивовВыявление аномалий в данныхАнализ данныхВыявление мошенничестваПаттерн «черные дыры»Machine

Слайд 7Признаки в графах для машинного обучения
Вершины (степень, полустепени, betweenness centrality,

PageRank)
Пары вершин (количество общих соседей, вес ребра)
Egonet (количество треугольников, количество

ребер)
Группа вершин (плотность = кол-во ребер/кол-во вершин, общий вес ребер)
Признаки в графах для машинного обученияВершины (степень, полустепени, betweenness centrality, PageRank)Пары вершин (количество общих соседей, вес ребра)Egonet

Слайд 8Классификация задач анализа графов
По типу графов
статические графы (static graph analysis)
динамические

графы (dynamic graph analysis)
обработка потоков вершин и ребер (streaming graph

analysis)
По типу обработки
в режиме реального времени (online)
в режиме выполнения заданий (offline, batch processing)

Классификация задач анализа графовПо типу графовстатические графы (static graph analysis)динамические графы (dynamic graph analysis)обработка потоков вершин и

Слайд 9Программные модели и средства
Реляционная модель
Cassandra, SAP HANA, …
MapReduce
Generic MR:
Hadoop,

Yarn, Dryad, Stratosphere, Haloop
Graph-optimized: Pegasus, Surfer, GBASE, GraphX
Специализированные языки программирования
Проблемно-ориентированные

языки программирования (DSL)
Green-Marl, Exedra
Языки запросов к графовым СУБД
SPARQL, G-SPARQL, Cypher (Neo4j), …
BSP
Parallel BGL
Vertex-centric/BSP
Pregel (Giraph, Hama, Mizan, …)
Vertex-centric/Data, Message-driven
GraphLab, SWARM, Trinity, Charm++, …
Fine-grained Threaded Shared Memory/PGAS
GraphCT, STINGER, Grappa
Технологии параллельного программирования
OpenMP, MPI, CUDA, …

Программные модели и средстваРеляционная модельCassandra, SAP HANA, …MapReduceGeneric MR: Hadoop, Yarn, Dryad, Stratosphere, HaloopGraph-optimized: Pegasus, Surfer, GBASE,

Слайд 10Big Data vs HPC
Машинное обучение

Big Data vs HPCМашинное обучение

Слайд 11 Big Data vs HPC

Big Data vs HPC

Слайд 12План
Виды графов
Основные проблемы, возникающие при решении задач обработки графов
Подходы к

решению задач в рамках одного вычислительного узла
Подходы к решению задач

в рамках распределенной вычислительной системы

ПланВиды графовОсновные проблемы, возникающие при решении задач обработки графовПодходы к решению задач в рамках одного вычислительного узлаПодходы

Слайд 13Виды графов

Виды графов

Слайд 14Виды графов. Случайные графы
Random, Random Uniform, Erdos Renyi
N вершин, M

ребер, k – средняя связность вершины

Виды графов. Случайные графыRandom, Random Uniform, Erdos RenyiN вершин, M ребер, k – средняя связность вершины

Слайд 15Виды графов. Степенной закон
WWW, Социальные сети, Биоинформатика
Графы small-world
L ~ log

N
scale-free – графы,
доля P(k) ~ k-tau, 2 < tau

3
k – связность вершины
L ~ log log N

k

P(k)

Виды графов. Степенной законWWW, Социальные сети, БиоинформатикаГрафы small-worldL ~ log Nscale-free – графы,доля P(k) ~ k-tau, 2

Слайд 16Виды графов. RMAT-граф
a+b+c+d = 1
Сообщества:
a и d – сообщества
b и

c – связи между ними
наличие «подсообществ»
может быть scale-free при a>=d
случайная

перестановка вершин
Виды графов. RMAT-графa+b+c+d = 1Сообщества:a и d – сообществаb и c – связи между ниминаличие «подсообществ»может быть

Слайд 17Виды графов. LFR*-граф
Параметры:
mu ∈ [0;1], показывает количество связей вне

сообщества
com_tau – показатель степени в законе распределения размеров сообществ
deg_tau

– показатель степени в законе распределения степеней вершин
Виды графов. LFR*-графПараметры: mu ∈ [0;1], показывает количество связей вне сообщества com_tau – показатель степени в законе

Слайд 18Виды графов. SSCA2-граф
Равномерное распределение случайных параметров
случайная перестановка вершин

Виды графов. SSCA2-графРавномерное распределение случайных параметров случайная перестановка вершин

Слайд 19Основные проблемы, возникающие при решении задач обработки графов

Основные проблемы, возникающие при решении задач обработки графов

Слайд 20Проблемы анализа больших графов
Data-driven computations. Зависимость вычислений от данных (топологии

графа). Невозможность применения методов статического распараллеливания вычислений.
Unstructured problems. Работа с

нерегулярными, неструктурированными данными, трудность распараллеливания.
Poor locality. Низкая пространственно-временная локализация обращений к памяти.
High data access to computation ratio. Преобладание команд доступа к памяти над командами выполнения арифметических операций.
Проблемы анализа больших графовData-driven computations. Зависимость вычислений от данных (топологии графа). Невозможность применения методов статического распараллеливания вычислений.Unstructured

Слайд 21Проблемы анализа больших графов (1)
Data-driven computations. Зависимость вычислений от данных

(топологии графа). Невозможность применения методов статического распараллеливания вычислений.
v
x
y
z

Проблемы анализа больших графов (1)Data-driven computations. Зависимость вычислений от данных (топологии графа). Невозможность применения методов статического распараллеливания

Слайд 22Проблемы анализа больших графов (2)
Unstructured problems. Работа с нерегулярными, неструктурированными

данными, трудность распараллеливания.

Проблемы анализа больших графов (2)Unstructured problems. Работа с нерегулярными, неструктурированными данными, трудность распараллеливания.

Слайд 23Проблемы анализа больших графов (3)
Poor locality. Низкая пространственно-временная локализация обращений

к памяти.

Проблемы анализа больших графов (3)Poor locality. Низкая пространственно-временная локализация обращений к памяти.

Слайд 24Проблемы анализа больших графов (4)
High data access to computation ratio.

Преобладание команд доступа к памяти над командами выполнения арифметических операций.
Intel

E5-2680 v3, 2.5 ГГц
Проблемы анализа больших графов (4)High data access to computation ratio. Преобладание команд доступа к памяти над командами

Слайд 25Проблема низкой реальной производительности

Проблема низкой реальной производительности

Слайд 26Проблемы и подходы к решению задач обработки графов в рамках

одного вычислительного узла

Проблемы и подходы к решению задач обработки графов в рамках одного вычислительного узла

Слайд 27Представление графа

Представление графа

Слайд 28Форматы представления разреженных матриц
Доля ненулевых элементов мала
Можно хранить только

позиции и значения ненулевых элементов
Compressed Row Storage (CRS)
Coordinate list (COO)
DIA
ELLPACK
SELLPACK
Оптимизированный

под задачу





Форматы представления разреженных матрицДоля ненулевых элементов мала Можно хранить только позиции и значения ненулевых элементовCompressed Row Storage

Слайд 29Внутреннее представление Compressed Row Storage (CRS)
for (int u = 0;

u < G->n; u++) {
for (int j = G->rowsIndices[u]; j

< rowsIndices[u+1]; j++) {
const int v = G->endV[j];
const int w = G->weights[j];
// обработка ребра u->v
}
}

rowsIndices

endV

weights

Внутреннее представление Compressed Row Storage (CRS)for (int u = 0; u < G->n; u++) {	for (int j

Слайд 30Coordinate list (COO)
Sparse matrix

Coordinate list (COO) Sparse matrix

Слайд 31Поиск вширь в графе

Поиск вширь в графе

Слайд 32Поиск вширь в графе (BFS) Подход Queue-based, алгоритм simple
Qcounter = 1


Q[0] = root
Visited[root] = 1
while Qcounter > 0


Qnext_counter = 0
#pragma omp parallel for
for all vertex ∈ Q do
for all w: (vertex, w) ∈ E do
if Visited[w] == 0 then
Qnext[__sync_fetch_and_add(Qnext_counter, 1)] = w
Visited[w] = 1
endif
end for
end for
swap(Q, Qnext) // обмен Q и Qnext
end while
Поиск вширь в графе (BFS) Подход Queue-based, алгоритм simpleQcounter = 1 Q[0] = root Visited[root] = 1

Слайд 33Производительность алгоритма simple в зависимости от числа используемых тредов на

сопроцессоре Phi-5110P
Число вершин в графе: N = 227 (134 млн),

cредняя связность вершины: k = 8
Производительность алгоритма simple в зависимости от числа используемых тредов на сопроцессоре Phi-5110PЧисло вершин в графе: N =

Слайд 34Производительность алгоритмов simple и block в зависимости от числа используемых

тредов на сопроцессоре Phi-5110P
Число вершин в графе: N = 227

(134 млн), cредняя связность вершины: k = 8
Производительность алгоритмов simple и block в зависимости от числа используемых тредов на сопроцессоре Phi-5110PЧисло вершин в графе:

Слайд 35Недостатки подхода Queue-based
#pragma omp parallel for
for all vertex ∈ Q

do
for all w: (vertex, w) ∈ E

do
if Visited[w] == 0 then
Qnext[__sync_fetch_and_add(Qnext_counter, 1)] = w
Visited[w] = 1
endif
end for
end for
Недостатки подхода Queue-based#pragma omp parallel forfor all vertex ∈ Q do   for all w: (vertex,

Слайд 36Память SDRAM
Чтение памяти, необходимо подзаряжать конденсаторы
Необходимость перезарядки конденсаторов (токи утечки)
На

все операции требуется время

Память организована как матрица
Drepper, U. (2007). What

every programmer should know about memory. Red Hat, Inc, 11, 2007.
http://rus-linux.net/lib.php?name=/MyLDP/hard/memory/memory.html
Память SDRAMЧтение памяти, необходимо подзаряжать конденсаторыНеобходимость перезарядки конденсаторов (токи утечки)На все операции требуется времяПамять организована как матрицаDrepper,

Слайд 37На определение состояния и перезарядку требуется время
Память SDRAM

На определение состояния и перезарядку требуется времяПамять SDRAM

Слайд 38Чтение памяти, необходимо подзаряжать конденсаторы
Необходимость перезарядки конденсаторов (токи утечки)
tRP -

время предварительной зарядки


Каждая строка должна быть перезаряжена каждые 7.8 мкс


Память

SDRAM
Чтение памяти, необходимо подзаряжать конденсаторыНеобходимость перезарядки конденсаторов (токи утечки)tRP - время предварительной зарядкиКаждая строка должна быть перезаряжена

Слайд 39Архитектура процессора, контроллер DRAM

Архитектура процессора, контроллер DRAM

Слайд 40Подход Read-based, алгоритм read
#pragma omp parallel for reduction (…)
for all

vertex ∈ V do
if levels[vertex] ≠ numLevel

then continue
for all w: (vertex, w) ∈ E do
if levels[w] == -1 then
levels[w] = numLevel + 1
nLevelVerts = nLevelVerts + 1
end if
end for
end for
Подход Read-based, алгоритм read#pragma omp parallel for reduction (…)for all vertex ∈ V do   if

Слайд 41Производительность алгоритмов simple, block и read в зависимости от числа

используемых тредов на сопроцессоре Phi-5110P
Число вершин в графе: N

= 227 (134 млн), cредняя связность вершины: k = 8
Производительность алгоритмов simple, block и read в зависимости от числа используемых тредов на сопроцессоре Phi-5110P Число вершин

Слайд 42Алгоритм bottom-up-hybrid
#pragma omp parallel for reduction (…)
for all vertex ∈

V do
if levels[vertex] ==

-1 then
for all w: (vertex, w) ∈ E do
if levels[w] == numLevel then
levels[vertex] = numLevel + 1
nLevelVerts = nLevelVerts + 1
break
end if
end for
end if
end for
Алгоритм bottom-up-hybrid#pragma omp parallel for reduction (…)for all vertex ∈ V do

Слайд 43Производительность алгоритмов simple, block, read и bottom-up-hybrid в зависимости от

числа используемых тредов на сопроцессоре Phi-5110P
Число вершин в графе:

N = 227 (134 млн), cредняя связность вершины: k = 8
Производительность алгоритмов simple, block, read и bottom-up-hybrid в зависимости от числа используемых тредов на сопроцессоре Phi-5110P Число

Слайд 44Недостатки алгоритмов read и bottom-up-hybrid
#pragma omp parallel for reduction (…)


for all vertex ∈ V do
if levels[vertex]

≠ numLevel then
continue
for all w: (vertex, w) ∈ E do
if levels[w] == -1 then
levels[w] = numLevel + 1

end if
end for
end for
Недостатки алгоритмов read и bottom-up-hybrid#pragma omp parallel for reduction (…) for all vertex ∈ V do

Слайд 45Решение: ручная развертка цикла + использование prefetch
#pragma omp parallel for

reduction (…)
for all vertex ∈ V do

if levels[vertex] ≠ numLevel then continue
for all w: (vertex, w) ∈ E do
prefetch(levels[w])

if levels[w] == -1 then
levels[w] = numLevel + 1

end if
end for
end for
Решение: ручная развертка цикла + использование prefetch#pragma omp parallel for reduction (…) for all vertex ∈ V

Слайд 46Производительность алгоритмов simple, block, read и bottom-up-hybrid с префетчем в

зависимости от числа используемых тредов на сопроцессоре Phi-5110P
Число вершин в

графе: N = 227 (134 млн), cредняя связность вершины: k = 8
Производительность алгоритмов simple, block, read и bottom-up-hybrid с префетчем в зависимости от числа используемых тредов на сопроцессоре

Слайд 47Улучшение локализации: перестановка вершин
Матрица смежности приводится к ленточному виду с

уменьшением ширины ленты (алгоритм Reverse Cuthill-McKee) => уменьшается количество кэш-промахов
Списки

смежных вершин сортируются => уменьшается количество промахов в TLB
Использование больших страниц

Улучшение локализации: перестановка вершинМатрица смежности приводится к ленточному виду с уменьшением ширины ленты (алгоритм Reverse Cuthill-McKee) =>

Слайд 48Производительность различных алгоритмов, с префетчем и перестановками в зависимости от

числа используемых тредов на сопроцессоре Phi-5110P
Число вершин в графе: N

= 227 (134 млн), cредняя связность вершины: k = 8
Производительность различных алгоритмов, с префетчем и перестановками в зависимости от числа используемых тредов на сопроцессоре Phi-5110PЧисло вершин

Слайд 49Распараллеливание: дисбаланс вычислительной нагрузки
Проблема: неравномерность итераций циклов
# pragma omp parallel

for
for (int u = 0; u < G->n; u++)
for

(int j = G->rowsIndices[u]; j < rowsIndices[u+1]; j++) {
……
}
Решение 1: #pragma omp parallel for schedule (guided) – для динамического распределения вершин по тредам

Решение 2: На этапе предобработки выполнение процедуры Vertex-cut: разделение вершины и разрезание списков смежности вершин

Распараллеливание: дисбаланс вычислительной нагрузкиПроблема: неравномерность итераций циклов# pragma omp parallel forfor (int u = 0; u <

Слайд 50Проблема: постоянная смена данных в кэше, низкие характеристики при случайном

доступе
Решения на этапе предобработки:
Хранение только половины графа (для неориентированного)
Удаление кратных

ребер
Перестановка вершин (Cuthill-McKee)
Сжатие данных
edge_id_t: uint64_t --> uint32_t

Cортировка ребер каждой вершины
Сортировка всех ребер графа

Большой объем памяти

Проблема: постоянная смена данных в кэше, низкие характеристики при случайном доступеРешения на этапе предобработки:Хранение только половины графа

Слайд 51Резюме: проблемы и подходы к решению задач в рамках одного

узла
Выбор оптимального представления графа
По возможности организация последовательного доступа к данным
По

возможности избегать использовать межпотоковые синхронизации
Стремиться работать не на задержке обращений к памяти, а на темпе
Улучшение локализации
Алгоритмические оптимизации
Сжатие данных
Аккуратная работа с памятью внутри NUMA-вычислительного узла
Балансировка нагрузки
Аккуратно измерять производительность





Резюме: проблемы и подходы к решению задач в рамках одного узлаВыбор оптимального представления графаПо возможности организация последовательного

Слайд 52Проблемы и подходы к решению графовых задач на распределенной памяти

Проблемы и подходы к решению графовых задач на распределенной памяти

Слайд 53Представление графа

Представление графа

Слайд 54Распределение данных
1D, блоками
1D, с чередованием
2D

Распределение данных1D, блоками1D, с чередованием2D

Слайд 55Поиск вширь в графе, распределенная версия
function ProcessQueue(Q, E)

for all vertex ∈ Q do

for all w : (vertex, w) ∈ E do
send vertex, w to owner(w)
end for
end for
end function
Поиск вширь в графе, распределенная версияfunction ProcessQueue(Q, E)   for all vertex ∈ Q do

Слайд 56Поиск вширь в графе, агрегация сообщений
function ProcessQueue(Q, E)

for all vertex ∈ Q do

for all w : (vertex, w) ∈ E do
send vertex, w to owner(w)
end for
end for
end function

pe0

pe1

peN-1

send

Поиск вширь в графе, агрегация сообщенийfunction ProcessQueue(Q, E)   for all vertex ∈ Q do

Слайд 57Поиск вширь в графе, параллельная отправка и прием
function ProcessQueue(Q, E)

for all vertex ∈ Q do

for all w : (vertex, w) ∈ E do
send vertex, w to owner(w)
end for
end for
end function

pe0

pe1

peN-1

send

thread0

thread1

Поиск вширь в графе, параллельная отправка и приемfunction ProcessQueue(Q, E)   for all vertex ∈ Q

Слайд 58Организация параллелизма потоков

Организация параллелизма потоков

Слайд 59Хаотично расположенные вершины и ребра графа
Шаблон обменов all-to-all

Хаотично расположенные вершины и ребра графаШаблон обменов all-to-all

Слайд 60Коммуникационная сеть. Бисекционная пропускная способность
Бисекционная плоскость – минимальный разрез, который

разделяет сеть на две равные связные части
Бисекционная пропускная способность

– пропускная способность каналов связи через бисекционную плоскость
В случае равномерных случайных посылок (all-to-all) каждый узел посылает сообщение через бисекционную плоскость с вероятностью ½
Посылают все узлы – для линейной масштабируемости требуется N/2 линков в бисекционной плоскости





Бисекция тора = 2N/Nmax

Бисекция жирного дерева
(half bisection) = N/4

Коммуникационная сеть. Бисекционная пропускная способностьБисекционная плоскость – минимальный разрез, который разделяет сеть на две равные связные части

Слайд 61 nPE
Уменьшение количества пересылаемых данных
Использование простаивающего процессора
Сокращение пересылок
Отказ от лишней

пересылаемой информации
Удаление дублирующей информации
Сжатие данных
Использование знаний о структуре графа



local vertex

id

global vertex id (32, 64)

nPEУменьшение количества пересылаемых данныхИспользование простаивающего процессораСокращение пересылокОтказ от лишней пересылаемой информацииУдаление дублирующей информацииСжатие данныхИспользование знаний о

Слайд 62Графы реального мира. Степенной закон
WWW, Социальные сети, Биоинформатика
Графы small-world
L ~

log N,
scale-free – графы,
доля P(k) ~ k-tau, 2 < tau

< 3
k – связность вершины
L ~ log log N

Граф Кронекера:

Графы реального мира. Степенной законWWW, Социальные сети, БиоинформатикаГрафы small-worldL ~ log N,scale-free – графы,доля P(k) ~ k-tau,

Слайд 63Балансировка нагрузки
При использовании большого числа вычислительных узлов особенно важна равномерная

загрузка
Решение1: На этапе предобработки выполнение процедуры Vertex-cut: разделение вершины и

разрезание списков смежности вершин
Решение2:



Балансировка нагрузкиПри использовании большого числа вычислительных узлов особенно важна равномерная загрузкаРешение1: На этапе предобработки выполнение процедуры Vertex-cut:

Слайд 64Задача поиска минимального остовного дерева (MST)
Алгоритм Gallagher, Humblet, Spira. Сеть

Ангара
Граф RMAT-23, средняя связность - 32

Задача поиска минимального остовного дерева (MST)Алгоритм Gallagher, Humblet, Spira. Сеть АнгараГраф RMAT-23, средняя связность - 32

Слайд 65Проблемы и подходы к решению задач на
распределенной памяти
Выбор распределения данных
Агрегация

сообщений
Организация внутриузлового параллелизма
Уменьшение количества пересылаемых данных
Балансировка нагрузки
Использование эффективных коммуникаций
Аккуратно использовать

MPI
Алгоритмические оптимизации



Проблемы и подходы к решению задач нараспределенной памятиВыбор распределения данныхАгрегация сообщенийОрганизация внутриузлового параллелизмаУменьшение количества пересылаемых данныхБалансировка нагрузкиИспользование

Слайд 66Вопросы?

alxdr.semenov@gmail.com

Вопросы?alxdr.semenov@gmail.com

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика