SlideShare a Scribd company logo
1 of 27
Download to read offline
Павел Артёмкин
Руководитель группы
Разработка C++ API для
реализации алгоритмов на
больших графах
Я. Субботник в Екатеринбурге, 6 июля 2013
2
● Сколько весит Web-граф
● Модель вычислений
● Алгоритмы на C++
 Алгоритм Дейкстры
std::queue<vertex*> q;
q.push(get_first_vertex());
while (!q.empty()) {
  vertex* v = q.front();
  q.pop();
  for (auto& e : v­>edges) {
    if (e.dst­>value == 0 || v­>value + e.weight < e.dst­>value)
    {
      e.dst­>value = v­>value + e.weight;
      q.push(e.dst);
    }
  }
}
1
2
3
4
5
3
● Применим, если граф можно
загрузить в память одного
сервера.
Исходные данные
● Ссылочная база — 65 Тб.
Параметры графа:
● 256 млрд. вершин.
● 2 000 млрд. (2 трлн.) рёбер.
Сервера:
● Память 64 Гб, диски – 6.2Тб.
● Минимум 10 серверов для хранения базы.
● Имеется 50 серверов для расчётов.
4
      ...И это только начало
struct addrinfo* result;
struct addrinfo* rp;
int s;
ret = getaddrinfo(NULL, str, &hints, &result);
for (rp = result; rp != NULL; rp = rp­>ai_next) {
  s = socket(rp­>ai_family, rp­>ai_socktype, rp­>ai_protocol);
  if (s == ­1)
    continue;
  
  if (bind(s, rp­>ai_addr, rp­>ai_addrlen) == 0)
    break;
    
  close(s);
}
if (rp == NULL) {
  fprintf(stderr, "Could not bindn");
  exit(EXIT_FAILURE);
}
freeaddrinfo(result);
5
Сложности
Передача данных по сети (ненадёжно)
● потеря связности
● перегрузка коммутаторов
Сервера
● выход из строя дисков (ошибки в данных)
● полный отказ сервера (недоступен)
6
МОДЕЛЬ ВЫЧИСЛЕНИЙ
 Алгоритм Дейкстры
std::queue<vertex*> q;
q.push(get_first_vertex());
while (!q.empty()) {
  vertex* v = q.front();
  q.pop();
  for (auto& e : v­>edges) {
    if (e.dst­>value == 0 || v­>value + e.weight < e.dst­>value)
    {
      e.dst­>value = v­>value + e.weight;
      q.push(e.dst);
    }
  }
}
1
2
3
4
5
8
●
На каждом сервере хранится
только часть графа (вершины,
исходящие ссылки).
void compute (v, msgs) {
  for (auto& m : msgs)
    v­>value = min(v­>value, m­>value);
  for (auto& e : v­>edges)
    send(e.key, v­>value + e.value);
}
value
msg
msg
msg
msg
9
Функторы
● Load – загрузка данных.
● Compute – вычисления.
● Dump – выгрузка.
● Partition – диспетчеризация сообщений.
10
Состояние вершины (условие вызова Compute)
● ACTIVE – всегда.
● WAIT – если есть входящие сообщения.
● HALT – никогда.
void compute (v, msgs) {
  for (auto& m : msgs)
    v­>value = min(v­>value, m­>value);
  for (auto& e : v­>edges)
    send(e.key, v­>value + e.value);
}
11
1
2
3
4
5
Сообщения
● Передаются между вершинами.
● Можно послать в любую вершину, но в большинстве алгоритмов,
между вершинами, соединёнными рёбрами.
12
1
2
3
4
5
C++ API
Обрабатываемые данные
Значения — ключ, вершина, ребро, сообщение.
В разных задачах разные типы (целое, дробное, структура)
Возможные варианты:
●
Строки:
●
время на преобразование
●
большой объём
●
Динамические типы:
●
сопоставление с типами языка С++
●
собственный язык описание алгоритмов
●
Шаблоны С++
14
Шаблоны C++
● Получать алгоритмы, оптимизированные под конкретные типы
данных.
● Метапрограммирование с использованием шаблонов, позволяет
выбрать оптимальный способ сохранения данных, в зависимости
от типа:
● Если типы данных POD (plain old data), то их можно сохранять с
помощью memcpy.
● Если не-POD, то использовать serialize.
15
КОД
template <class TDomain>
struct TLoadFunction {
  virtual void Load(IGraph<TDomain>*) = 0;
};
///     Пример формирования графа
virtual void Load(IGraph<TDomain>* w) {
   w­>AddVertexWithValue(1, 0, ACTIVE);
   w­>AddVertexWithValue(2, 0);
   w­>AddVertexWithValue(3, 0);
   w­>AddVertexWithValue(4, 0);
   w­>AddVertexWithValue(5, 0);
   w­>AddEdgeWithValue(1, 2, 3);
   w­>AddEdgeWithValue(1, 3, 5);
   w­>AddEdgeWithValue(2, 3, 1);
   w­>AddEdgeWithValue(2, 4, 2);
   w­>AddEdgeWithValue(2, 5, 7);
   w­>AddEdgeWithValue(3, 5, 1);
   w­>AddEdgeWithValue(4, 5, 8);
}
17
1
2
3
4
5
template <class TDomain>
struct TDumpFunction {
  virtual void Dump(IGraph<TDomain>*) = 0;
};
///     Пример вывода результатов
virtual void Dump(IGraph<TDomain>* g) {
  for (auto v = g­>GetVertexIterator(); v.Valid(); v.Next()) {
    std::cout << v.Key() << “ “ << v.Value() << std::endl;
  }  
}
18
template <class TDomain>
struct TComputeFunction {
    virtual void Compute(TVertexState*, TMessageIterator*,
                         TMessageOutput*) = 0;
};
19
///           Интерфейс предоставления доступа к состоянию текущей
///         Computeобрабатываемой вершине в функции
struct TVertexState {
  TV* MutableValue();
  const TKey& Key() const;
  const TV& Value() const;
  TEdgeIterator* GetOutEdgeIterator() const;  
  void Activate();
  void Halt();
  void Wait();
};
///             Интерфейс для отправки сообщений и изменения графа
struct TMessageOutput {
    ///         Отправить сообщение всем вершинам
    ///     из указанной последовательности
    void SendMessageTo(TEdgeIterator* edges, const TM& msg);
    ///       Отправить сообщение указанной вершине
    void SendMessageTo(const TKey& key, const TM& msg);
};
20
Дейкстра
struct TCompute : TComputeFunction<TDomain> {
  virtual void Compute(TVertexState* v, TMessageIterator* msgs,
                       TMessageOutput* output) 
  {
    for (auto& m : msgs)
      *v­>MutableValue() = min(v­>Value(), m­>Value());
    for (auto& e : v­>GetOutEdgeIterator()) 
      output­>SendMessageTo(e.Key(), v­>Value() + e.Value());
    v­>Wait();
  }
};
21
PageRank
struct TCompute : TComputeFunction<TDomain> {
  virtual void Compute(TVertexState* v, TMessageIterator* msgs,
                       TMessageOutput* out) 
  {
    if (Context().GetTick() >= 1) {
      *v­>MutableValue() = 0.15 + 0.85 * Sum(msgs));
    }
    auto edges = v­>GetOutEdgeIterator();
                
    if (edges­>Valid())
      out­>SendMessageTo(edges, v­>Value() / edges­>Size());
    else
      out­>SendMessageBroadcast(
        v­>Value() / Context().GraphInfo().GetVertices()
      ); 
        
    if (Context().GetTick() >= Data()­>MaxIterations)
      v­>Halt();      
  }
};
22
Режимы работы (память)
● Все данные графа хранятся в памяти.
● Быстро, но объём обрабатываемых данных, ограничен размером
оперативной памяти сервера.
template <class TDomain, class TFunctors> 
struct TMemoryInstance : IInstance { 
  virtual void Load() {
    typename TFunctors::TLoad load;
   
    load.Load(&MemoryGraph_);
  }
  virtual bool Compute();
  virtual void Dump();
}
23
Режимы работы (диск)
● Данные графа и сообщений хранятся на диске при обработки
используются алгоритмы внешней сортировки.
● Медленнее, но позволяет обрабатывать в 50 — 100 раз больший
объём данных на том же сервере.
24
 Выполнение
template < 
  class TDomain, 
  class TFunctors, 
  class <class D, class F> class TInstance
> 
struct TLocalRunner {
  typedef TInstance<TDomain, TFunctors> TInstance; 
  void Run(const TInstanceConfig& config) {
    Instance_­>Configure(config);
    Instance_­>Load();
    while (true) {
      if (!Instance_­>Compute())
        break;
    }
    Instance_­>Dump();
  }
}
25
Артёмкин Павел
Руководитель группы
stanly@yandex-team.ru
Спасибо
 Домен данных
template <class K, class V, class E, class M>
struct TLoadFunction {
  virtual void Load(IGraph<K, V, E, M>*) = 0;
}
template <class K, class V, class E, class M>
struct TDomain {
  typedef K TK;
  typedef V TV;
  typedef E TE;
  typedef M TM;
}
typedef TDomain<int, int, int, int> TMyDomain;
struct TLoad : TLoadFunction<TMyDomain> {
  ...
};
27

More Related Content

What's hot

"Сеть - это компьютер. Снова" Бахтерев Михаил, ИММ УрО РАН
"Сеть - это компьютер. Снова" Бахтерев Михаил, ИММ УрО РАН"Сеть - это компьютер. Снова" Бахтерев Михаил, ИММ УрО РАН
"Сеть - это компьютер. Снова" Бахтерев Михаил, ИММ УрО РАНit-people
 
Михаил Матросов, “С++ без new и delete”
Михаил Матросов, “С++ без new и delete”Михаил Матросов, “С++ без new и delete”
Михаил Матросов, “С++ без new и delete”Platonov Sergey
 
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Platonov Sergey
 
Дополненная Реальность в Облаке
Дополненная Реальность в ОблакеДополненная Реальность в Облаке
Дополненная Реальность в ОблакеGeeksLab Odessa
 
Java GC tuning and monitoring (by Alexander Ashitkin)
Java GC tuning and monitoring (by Alexander Ashitkin)Java GC tuning and monitoring (by Alexander Ashitkin)
Java GC tuning and monitoring (by Alexander Ashitkin)aragozin
 
Введение в потоки питона
Введение в потоки питонаВведение в потоки питона
Введение в потоки питонаAndrey Niahajchyk
 
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотекSWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотекPython Meetup
 
Куда уходит память?
Куда уходит память?Куда уходит память?
Куда уходит память?Dmitriy Dumanskiy
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Technopark
 
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программированияПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программированияAlexey Paznikov
 
JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...
JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...
JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...JSFestUA
 
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данных
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данныхCodeFest 2012. Нелюбин Д. — Neo4j — графовая база данных
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данныхCodeFest
 
Criteo 1TiB Benchmark
Criteo 1TiB BenchmarkCriteo 1TiB Benchmark
Criteo 1TiB BenchmarkRamblerML
 
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»Platonov Sergey
 
Борьба с GС паузами в JVM
Борьба с GС паузами в JVMБорьба с GС паузами в JVM
Борьба с GС паузами в JVMaragozin
 
Делаем очередь поверх Кассандры
Делаем очередь поверх КассандрыДелаем очередь поверх Кассандры
Делаем очередь поверх КассандрыDotNetConf
 
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Platonov Sergey
 
разработка серверов и серверных приложений лекция №2
разработка серверов и серверных приложений лекция №2разработка серверов и серверных приложений лекция №2
разработка серверов и серверных приложений лекция №2Eugeniy Tyumentcev
 

What's hot (20)

"Сеть - это компьютер. Снова" Бахтерев Михаил, ИММ УрО РАН
"Сеть - это компьютер. Снова" Бахтерев Михаил, ИММ УрО РАН"Сеть - это компьютер. Снова" Бахтерев Михаил, ИММ УрО РАН
"Сеть - это компьютер. Снова" Бахтерев Михаил, ИММ УрО РАН
 
Михаил Матросов, “С++ без new и delete”
Михаил Матросов, “С++ без new и delete”Михаил Матросов, “С++ без new и delete”
Михаил Матросов, “С++ без new и delete”
 
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
 
Python и Cython
Python и CythonPython и Cython
Python и Cython
 
Дополненная Реальность в Облаке
Дополненная Реальность в ОблакеДополненная Реальность в Облаке
Дополненная Реальность в Облаке
 
Java GC tuning and monitoring (by Alexander Ashitkin)
Java GC tuning and monitoring (by Alexander Ashitkin)Java GC tuning and monitoring (by Alexander Ashitkin)
Java GC tuning and monitoring (by Alexander Ashitkin)
 
Введение в потоки питона
Введение в потоки питонаВведение в потоки питона
Введение в потоки питона
 
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотекSWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
 
Куда уходит память?
Куда уходит память?Куда уходит память?
Куда уходит память?
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программированияПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
 
JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...
JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...
JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...
 
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данных
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данныхCodeFest 2012. Нелюбин Д. — Neo4j — графовая база данных
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данных
 
Criteo 1TiB Benchmark
Criteo 1TiB BenchmarkCriteo 1TiB Benchmark
Criteo 1TiB Benchmark
 
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
 
Борьба с GС паузами в JVM
Борьба с GС паузами в JVMБорьба с GС паузами в JVM
Борьба с GС паузами в JVM
 
Делаем очередь поверх Кассандры
Делаем очередь поверх КассандрыДелаем очередь поверх Кассандры
Делаем очередь поверх Кассандры
 
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
 
разработка серверов и серверных приложений лекция №2
разработка серверов и серверных приложений лекция №2разработка серверов и серверных приложений лекция №2
разработка серверов и серверных приложений лекция №2
 
ETL на Python
ETL на PythonETL на Python
ETL на Python
 

Similar to Ekb 2013 artemkin(1)

PostgreSQL + PostGIS + TimescaleDB - storage for monitoring systems
PostgreSQL + PostGIS + TimescaleDB - storage for monitoring systemsPostgreSQL + PostGIS + TimescaleDB - storage for monitoring systems
PostgreSQL + PostGIS + TimescaleDB - storage for monitoring systemsIvan Muratov
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Yandex
 
Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
 Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ... Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...Yandex
 
Cpp0x Introduction
Cpp0x IntroductionCpp0x Introduction
Cpp0x IntroductionFedor Vompe
 
SAMag2007 Conference: PostgreSQL 8.3 presentation
SAMag2007 Conference: PostgreSQL 8.3 presentationSAMag2007 Conference: PostgreSQL 8.3 presentation
SAMag2007 Conference: PostgreSQL 8.3 presentationNikolay Samokhvalov
 
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...Ontico
 
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)Smolensk Computer Science Club
 
20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonovComputer Science Club
 
Soft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровняSoft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровняLuxoftTraining
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один goBadoo Development
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Mikhail Kurnosov
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Yandex
 
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данныхПромышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данныхNikolay Samokhvalov
 
High Load 2009 Dimaa Rus Ready 16 9
High Load 2009 Dimaa Rus Ready 16 9High Load 2009 Dimaa Rus Ready 16 9
High Load 2009 Dimaa Rus Ready 16 9HighLoad2009
 
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...Sergey Platonov
 
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1Michael Karpov
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioAndrey Karpov
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...Alexey Paznikov
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2Technopark
 

Similar to Ekb 2013 artemkin(1) (20)

PostgreSQL + PostGIS + TimescaleDB - storage for monitoring systems
PostgreSQL + PostGIS + TimescaleDB - storage for monitoring systemsPostgreSQL + PostGIS + TimescaleDB - storage for monitoring systems
PostgreSQL + PostGIS + TimescaleDB - storage for monitoring systems
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
 
Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
 Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ... Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
 
Cpp0x Introduction
Cpp0x IntroductionCpp0x Introduction
Cpp0x Introduction
 
SAMag2007 Conference: PostgreSQL 8.3 presentation
SAMag2007 Conference: PostgreSQL 8.3 presentationSAMag2007 Conference: PostgreSQL 8.3 presentation
SAMag2007 Conference: PostgreSQL 8.3 presentation
 
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
 
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)
 
20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov
 
введение в Gpu
введение в Gpuвведение в Gpu
введение в Gpu
 
Soft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровняSoft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровня
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
 
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данныхПромышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
 
High Load 2009 Dimaa Rus Ready 16 9
High Load 2009 Dimaa Rus Ready 16 9High Load 2009 Dimaa Rus Ready 16 9
High Load 2009 Dimaa Rus Ready 16 9
 
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
 
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-Studio
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2
 

More from Optima-PROMO

Презентация "От сердца к сердцу".
Презентация "От сердца к сердцу".Презентация "От сердца к сердцу".
Презентация "От сердца к сердцу".Optima-PROMO
 
SEO 2014: Отмена ссылочного ранжирования в Яндексе в 2014 году – миф или реал...
SEO 2014: Отмена ссылочного ранжирования в Яндексе в 2014 году – миф или реал...SEO 2014: Отмена ссылочного ранжирования в Яндексе в 2014 году – миф или реал...
SEO 2014: Отмена ссылочного ранжирования в Яндексе в 2014 году – миф или реал...Optima-PROMO
 
Ассесорное руководство: Факторы оценки качества поиска от Google
Ассесорное руководство: Факторы оценки качества поиска от GoogleАссесорное руководство: Факторы оценки качества поиска от Google
Ассесорное руководство: Факторы оценки качества поиска от GoogleOptima-PROMO
 
Как повышать продажи с сайта за счет комплекснового поискового продвижения са...
Как повышать продажи с сайта за счет комплекснового поискового продвижения са...Как повышать продажи с сайта за счет комплекснового поискового продвижения са...
Как повышать продажи с сайта за счет комплекснового поискового продвижения са...Optima-PROMO
 
Что из себя представляет новая технология формирования выдачи в Поиске для са...
Что из себя представляет новая технология формирования выдачи в Поиске для са...Что из себя представляет новая технология формирования выдачи в Поиске для са...
Что из себя представляет новая технология формирования выдачи в Поиске для са...Optima-PROMO
 
Про Python и вычисления.
Про Python и вычисления.Про Python и вычисления.
Про Python и вычисления.Optima-PROMO
 
Как модуль geoQuery упрощает работу с API Яндекс.Карт.
Как модуль geoQuery упрощает работу с API Яндекс.Карт.Как модуль geoQuery упрощает работу с API Яндекс.Карт.
Как модуль geoQuery упрощает работу с API Яндекс.Карт.Optima-PROMO
 
Как использовать информацию из твиттера для улучшения поиска.
Как использовать информацию из твиттера для улучшения поиска.Как использовать информацию из твиттера для улучшения поиска.
Как использовать информацию из твиттера для улучшения поиска.Optima-PROMO
 
Чем отличаются интеракции в разных поисковых системах и как создать свой "ост...
Чем отличаются интеракции в разных поисковых системах и как создать свой "ост...Чем отличаются интеракции в разных поисковых системах и как создать свой "ост...
Чем отличаются интеракции в разных поисковых системах и как создать свой "ост...Optima-PROMO
 
Как максимально повысить продажи с сайта в 2013 году?
Как максимально повысить продажи с сайта в 2013 году?Как максимально повысить продажи с сайта в 2013 году?
Как максимально повысить продажи с сайта в 2013 году?Optima-PROMO
 
Голованов Дмитрий - тренды поискового продвижения сайтов 2012
Голованов Дмитрий - тренды поискового продвижения сайтов 2012Голованов Дмитрий - тренды поискового продвижения сайтов 2012
Голованов Дмитрий - тренды поискового продвижения сайтов 2012Optima-PROMO
 
Асессоры Яндекса
Асессоры ЯндексаАсессоры Яндекса
Асессоры ЯндексаOptima-PROMO
 
Презентация про тренды в SEO в продвижении сайтов
Презентация про тренды в SEO в продвижении сайтовПрезентация про тренды в SEO в продвижении сайтов
Презентация про тренды в SEO в продвижении сайтовOptima-PROMO
 
презентация про тренды в Seo
презентация про тренды в Seoпрезентация про тренды в Seo
презентация про тренды в SeoOptima-PROMO
 
Презентация компании "Optima-Promo"
Презентация компании "Optima-Promo"Презентация компании "Optima-Promo"
Презентация компании "Optima-Promo"Optima-PROMO
 
12 мая index.art голованов д.о 1.3
12 мая index.art голованов д.о 1.312 мая index.art голованов д.о 1.3
12 мая index.art голованов д.о 1.3Optima-PROMO
 

More from Optima-PROMO (16)

Презентация "От сердца к сердцу".
Презентация "От сердца к сердцу".Презентация "От сердца к сердцу".
Презентация "От сердца к сердцу".
 
SEO 2014: Отмена ссылочного ранжирования в Яндексе в 2014 году – миф или реал...
SEO 2014: Отмена ссылочного ранжирования в Яндексе в 2014 году – миф или реал...SEO 2014: Отмена ссылочного ранжирования в Яндексе в 2014 году – миф или реал...
SEO 2014: Отмена ссылочного ранжирования в Яндексе в 2014 году – миф или реал...
 
Ассесорное руководство: Факторы оценки качества поиска от Google
Ассесорное руководство: Факторы оценки качества поиска от GoogleАссесорное руководство: Факторы оценки качества поиска от Google
Ассесорное руководство: Факторы оценки качества поиска от Google
 
Как повышать продажи с сайта за счет комплекснового поискового продвижения са...
Как повышать продажи с сайта за счет комплекснового поискового продвижения са...Как повышать продажи с сайта за счет комплекснового поискового продвижения са...
Как повышать продажи с сайта за счет комплекснового поискового продвижения са...
 
Что из себя представляет новая технология формирования выдачи в Поиске для са...
Что из себя представляет новая технология формирования выдачи в Поиске для са...Что из себя представляет новая технология формирования выдачи в Поиске для са...
Что из себя представляет новая технология формирования выдачи в Поиске для са...
 
Про Python и вычисления.
Про Python и вычисления.Про Python и вычисления.
Про Python и вычисления.
 
Как модуль geoQuery упрощает работу с API Яндекс.Карт.
Как модуль geoQuery упрощает работу с API Яндекс.Карт.Как модуль geoQuery упрощает работу с API Яндекс.Карт.
Как модуль geoQuery упрощает работу с API Яндекс.Карт.
 
Как использовать информацию из твиттера для улучшения поиска.
Как использовать информацию из твиттера для улучшения поиска.Как использовать информацию из твиттера для улучшения поиска.
Как использовать информацию из твиттера для улучшения поиска.
 
Чем отличаются интеракции в разных поисковых системах и как создать свой "ост...
Чем отличаются интеракции в разных поисковых системах и как создать свой "ост...Чем отличаются интеракции в разных поисковых системах и как создать свой "ост...
Чем отличаются интеракции в разных поисковых системах и как создать свой "ост...
 
Как максимально повысить продажи с сайта в 2013 году?
Как максимально повысить продажи с сайта в 2013 году?Как максимально повысить продажи с сайта в 2013 году?
Как максимально повысить продажи с сайта в 2013 году?
 
Голованов Дмитрий - тренды поискового продвижения сайтов 2012
Голованов Дмитрий - тренды поискового продвижения сайтов 2012Голованов Дмитрий - тренды поискового продвижения сайтов 2012
Голованов Дмитрий - тренды поискового продвижения сайтов 2012
 
Асессоры Яндекса
Асессоры ЯндексаАсессоры Яндекса
Асессоры Яндекса
 
Презентация про тренды в SEO в продвижении сайтов
Презентация про тренды в SEO в продвижении сайтовПрезентация про тренды в SEO в продвижении сайтов
Презентация про тренды в SEO в продвижении сайтов
 
презентация про тренды в Seo
презентация про тренды в Seoпрезентация про тренды в Seo
презентация про тренды в Seo
 
Презентация компании "Optima-Promo"
Презентация компании "Optima-Promo"Презентация компании "Optima-Promo"
Презентация компании "Optima-Promo"
 
12 мая index.art голованов д.о 1.3
12 мая index.art голованов д.о 1.312 мая index.art голованов д.о 1.3
12 мая index.art голованов д.о 1.3
 

Ekb 2013 artemkin(1)