Pregel Анцелевич Антон. Река Преголя Авторы Grzegorz Malewicz Matthew H. Austern Aart J. C. Bik James C. Dehnert Ilan Horn Naty Leiser Grzegorz Czajkowski.

Презентация:



Advertisements
Похожие презентации
Маршруты на графах Нахождение компонент связности Поиск маршрутов, удовлетворяющим определённым требованиям Кратчайшие маршруты.
Advertisements

Язык C++ Лекция 2. Недостатки enumов Засорение namespaceа, в котором находится enum Соответственно, члены enumа должны иметь уникальный префикс.
Лекция 9 Б-деревья План лекции 1.Структуры данных на диске 2.Определение Б-дерева. 3.Высота Б-дерева. 4.Поиск в Б-дереве 5.Создание пустого дерева. 6.Разбиение.
Презентация к дипломной работе Разработка многопрофильной системы информационного поиска.
Оптимизация генерации списка ребер графа в бенчмарке Graph 500 Калужин Александр, 320 гр.
ЕГЭ информатика Алгоритмизация и программирование Консультация 4.
Методы классов. Методы класса [атрибуты][модификаторы] {void|тип_результата_функции} имя_метода ([список_формальных_аргументов]) { тело метода} Список.
Автоматическая генерация кода программ с явным выделением состояний Канжелев С.Ю. магистрант СПбГУ ИТМО Шалыто А.А. доктор технических наук профессор СПбГУ.
Обработка исключений Основы метапрограммированияОбработка исключений Основы метапрограммирования.
Ассоциативные списки Поиск данных происходит не по индексу или положению объекта, а по его ассоциативной связи: public interface Map { // Доступ к объектам.
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Алгоритмы топологической оптимизации транспортных сетей.
Типовые алгоритмы обработки числовых данных. Генерация случайных чисел на заданном промежутке [a;b] b Randomize; х:= random(b – а) + а; a x.
ООП Классы Данные отдельно, методы отдельно struct Node { Node* next; void* data; }; struct List { Node* first; int size; }; void* allocate() { … } void.
Массивы Для хранения в памяти компьютера большого числа однотипных данных используются массивы. Каждый элемент массива обладает общим именем индивидуальным.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Массивы Массив это величины объединенные общим именем и различаемые порядковыми номерами. Номера называются индексами. В зависимости от количества индексов.
Прикладное программирование кафедра прикладной и компьютерной оптики Полиморфизм.
Статические поля класса Статические поля хранят данные, общие для всех элементов класса. Статическое поле существует в единственном экземпляре для всех.
Лекция 7. Введение в ООП через практику. Часть 2 Красс Александр СПбГУ ИТМО, 2008.
Транксрипт:

Pregel Анцелевич Антон

Река Преголя

Авторы Grzegorz Malewicz Matthew H. Austern Aart J. C. Bik James C. Dehnert Ilan Horn Naty Leiser Grzegorz Czajkowski

Распараллеливание графа Структура вычислений не известна а- приори Трудно локализовать вычисления Всем нужна структура графа

Существующие подходы По мере поступления MapReduce – ужасно функциональный Sawzall, PigLatin – только данные Не параллелить – BGL (C++), LEDA (С++), NetworkX (Python) и пр. Parallel BGL и CGMgraph – не отказоустойчивы.

Valiant's Bulk Synchronous Parallel Компоненты Главный – «роутер» Интервалы, супершаги

Поиск максимального значения 3621

6626

6666

6666

class Vertex template class Vertex const VertexValue& GetValue(); VertexValue* MutableValue(); OutEdgeIterator GetOutEdgeIterator(); void SendMessageTo(const string& dest_vertex, const MessageValue& message); void VoteToHalt();

Изменение структуры графа частичное упорядочение удаление рёбер, удаление вершин, добавление вершин, добавление рёбер обработчики.

Инфраструктура Google clusters GFS BigTable

Работа всей системы Master, workers Разбиение графа Раздача кусочков графа Мастер: «Run, workers, run» + супершаг Воркеры: «Да, о, повелитель!» Мастер: «Приберегите свои кусочки»

Отказоустойчивость Точки восстановления Confined recovery

PageRank Sergey Brin и Lawrence Page PR(A) = (1-d)+ d(PR(T1)/C(T1)+... +PR(Tn)/C(Tn)) Итеративный алгоритм: PR(A)/n=(0.15/n *sum)/(C(A))

PageRank – Код на C++ class PageRankVertex : public Vertex { public: virtual void Compute(MessageIterator* msgs) { if (superstep() >= 1) { double sum = 0; for (; !msgs->Done(); msgs->Next()) sum += msgs->Value(); *MutableValue() = 0.15 / NumVertices() * sum; } if (superstep() < 30) { const int64 n = GetOutEdgeIterator().size(); SendMessageToAllNeighbors(GetValue() / n); } else { VoteToHalt(); } };

SSSP class ShortestPathVertex : public Vertex { void Compute(MessageIterator* msgs) { int mind = IsSource(vertex_id()) ? 0 : INF; for (; !msgs->Done(); msgs->Next()) mind = min(mindist, msgs->Value()); if (mindist < GetValue()) { *MutableValue() = mind; OutEdgeIterator it = GetOutEdgeIterator(); for (; !it.Done(); it.Next()) SendMes(it.Target(), mind + it.GetV ()); } VoteToHalt(); } };

SSSP Combiner class MinIntCombiner : public Combiner { virtual void Combine(MessageIterator* msgs) { int mindist = INF; for (; !msgs->Done(); msgs->Next()) mindist = min(mindist, msgs->V()); Output("combined_source", mindist); } };

Максимальное паросочетание High Speed Switch Scheduling for Local Area Networks, 1993 Thomas E. Anderson, Susan S. Owicki, James B. Saxe, and Charles P. Thacker Этапы: 0,1,2,3 – номер супершага mod 4

Тестирование Бинарные деревья (1 млрд вершин)

Тестирование Бинарные деревья (800 workers)

Тестирование Графы с логнормальным распределением полустепеней исхода

Что можно сделать? Ослабить синхронность Перебросить данные на диски Уменьшить количество сообщений

Спасибо за внимание

GoogleGoogleGoogleGoogle 80%: MapReduce – индексирование, Google News, Google Trends, Google Maps, Google Translate =( 20%: Видимо, Pregel – всякое разное, что именно – неизвестно =(