SlideShare a Scribd company logo
1 of 94
Download to read offline
Сеть – это компьютер. Снова
Михаил Бахтерев1
m.bakhterev@imm.uran.ru
Павел Васёв1,2
contact@lact.ru
1Институт Математики и Механики им. Н.Н. Красовского
2Конструктор Сайтов «LineAct»
ДАМП-2017, Екатеринбург
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 1 / 56
Часть 1. Познавательная
Или почему тяжело создавать распределённое ПО?
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 2 / 56
Краткая «история» микросервисов
HW HW
·
·
·
·
·
·
·
·
·
·
··
·
·
· ·
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 3 / 56
Краткая «история» микросервисов
HW HW
OS OS
·
·
·
·
·
·
·
·
·
·
··
·
·
· ·
·
·
·
·
·
·
·
·
·
·
··
·
·
· ·
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 3 / 56
Краткая «история» микросервисов
HW HW
OS OS
·
·
·
·
·
·
·
·
·
·
··
·
·
· ·
·
·
·
·
·
·
·
·
·
·
··
·
·
· ·
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 3 / 56
Краткая «история» микросервисов
HW HW
OS OS
·
·
·
·
·
·
·
·
·
·
··
·
·
· ·
·
·
·
·
·
·
·
·
·
·
··
·
·
· ·
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 3 / 56
Краткая «история» микросервисов
HW HW
OS OS
JVM .Net
·
·
·
·
·
·
·
·
·
·
··
·
·
· ·
·
·
·
·
·
·
·
·
·
·
··
·
·
· ·
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 3 / 56
Краткая «история» микросервисов
HW HW
VM
OS
VM
OS
JVM .Net
·
·
·
·
·
·
·
·
·
·
··
·
·
· ·
·
·
·
·
·
·
·
·
·
·
··
·
·
· ·
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 3 / 56
Краткая «история» микросервисов
HW HW
VM
OS
VM
OS
Docker Docker
JVM .Net
·
·
·
·
·
·
·
·
·
·
··
·
·
· ·
·
·
·
·
·
·
·
·
·
·
··
·
·
· ·
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 3 / 56
Э. Таненбаум1
узнаёт о микросервисах
1
Aвтор MINIX, RFID-вируса и спора с Л. Торвальдсом о судьбах операционных систем.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 4 / 56
No more!
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 5 / 56
Юниядра: загрузим MirageOS за время DNS-ответа!
HW HW
VM VM
·
·
·
·
·
·
·
·
·
·
··
·
·
· ·
·
·
·
·
·
·
·
·
·
·
··
·
·
· ·
OCaml OCaml
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 6 / 56
Клиент-серверная архитектура
▶ Легко, когда:
▶ множество изолированных друг от друга сессий;
▶ поддержано решающей все проблемы БД.
▶ Тяжело, если необходимо:
▶ рассчитать выброс гильзы из пушки Су-35;
▶ смоделировать работу сердца;
▶ обучить гигантскую нейронную сеть;
▶ оценить поведение платья на конкретной фигуре;
▶ решить любую другую задачу супервычислений.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 7 / 56
Небольшой суперкомпьютер «Уран»
▶ Массово-параллельная неоднородная машина:
1768 × CPU + 3.14GiB CL2D + 7040GiB + 352 × GPU + 2040GiB =
+



128 × (2 × 4 Xeon E5450 + 16GiB)
20 × (2 × 6 × 2 Xeon X5675 + 48GiB + 8 × (Tesla M2050 + 3GiB))
10 × (2 × 6 × 2 Xeon X5675 + 192GiB + 8 × (Tesla M2090 + 6GiB))
18 × (2 × 8 × 2 Xeon E5-2660 + 96GiB + 8 × (Tesla M2090 + 6GiB))
6 × (2 × 8 × 2 Xeon E5-2650 + 64GiB + 3 × (Tesla K40m0 + 12GiB)).
▶ 2120 одноранговых клиент-серверных БД2.
▶ Каждый + и × – каналы взаимодействия.
2
Конечно, не полноценных БД с SQL и блэкджеком.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 8 / 56
3-й3,4
закон разработки ВП-приложений
О Σ технологий и Π неприятностей:
+



libNUMA
OpenMP
OpenCL
MPI
Web
= ×



Наладка и отладка работы · ×103 процессов
Экспоненциальное усложнение: 2(·×103 разных rip)
Синхронные коллективные операции
Примитивные схемы параллелизма
Барьеры
MPI_Allgather
Перерасход памяти и её утечки
Незаметные взаимные блокировки
Избыточное копирование
Обмен через файлы
Отказы оборудования
Арифметические ошибки (в индексах)
=⇒



Простои оборудования
Неоптимальность
Некорректность.
3
1. Закон Амдала.
4
2. Закон о нехватке специалистов.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 9 / 56
Что же нас держит в привязанных к узлам5
циклах?
5
Akka
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 10 / 56
λ-исчисление
((λx (λy x + y)) 3 z)
→β((λy 3 + y) z)
→β3 + z
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 11 / 56
λ-исчисление прекрасно
▶ Числа.
▶ Условные операции и ветвления.
▶ Суммы и произведения структур данных.
▶ Рекурсия:
▶ теория семантических доменов и теория категорий;
▶ соответствие Карри-Ховарда-Лэмбэка;
▶ связь программирования с логикой, топологией и, дальше, с физикой;
▶ теория зависимых типов;
▶ системы механического содействия доказательствам;
▶ новые основания математики;
▶ конечно же, Пол Грэм и Y-комбинатор.
▶ Стандартная семантика любого современного ЯП.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 12 / 56
β-редукция: сила и слабость λ-исчисления
▶ Простая идея о замене переменной на значение:
[x → h] y =
{
h x = y
y x ̸= y
[x → h] (f g) = ([x → h] f [x → h] g)
[x → h] (λy f) =
{
(λy f) x = y
(λz [x → h] [y → z] f) x ̸= y ∧ z /∈ FZ
где FZ = (FreeVars h) ∪ (FreeVars f) .
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 13 / 56
β-редукция: сила и слабость λ-исчисления
▶ Простая идея о замене переменной на значение:
[x → h] y =
{
h x = y
y x ̸= y
[x → h] (f g) = ([x → h] f [x → h] g)
[x → h] (λy f) =
{
(λy f) x = y
(λz [x → h] [y → z] f) x ̸= y ∧ z /∈ FZ
где FZ = (FreeVars h) ∪ (FreeVars f) .
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 13 / 56
β-редукция: сила и слабость λ-исчисления
▶ Простая идея о замене переменной на значение:
[x → h] y =
{
h x = y
y x ̸= y
[x → h] (f g) = ([x → h] f [x → h] g)
[x → h] (λy f) =
{
(λy f) x = y
(λz [x → h] [y → z] f) x ̸= y ∧ z /∈ FZ
где FZ = (FreeVars h) ∪ (FreeVars f) .
∦ Эффективная реализация – индексы де Брауна, a.k.a. стек.
∦ Конфлюентность и ленивость не делают β-редукцию коммутативной.
∦ Не к чему «прицепить» обмен данными.
▶ Не помогают даже игровые и трассирующие семантики.
∥ Чистые функции.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 13 / 56
λ-исчисление, всё равно, прекрасно
+ Теория, Пол Грэм и Y-комбинатор.
+ Язык ядер для GPU:
▶ Vector Models for Data-Parallel Computing;
▶ λ-исчисление с длинными векторными примитивами.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 14 / 56
λ-исчисление, всё равно, прекрасно
+ Теория, Пол Грэм и Y-комбинатор.
+ Язык ядер для GPU:
▶ Vector Models for Data-Parallel Computing;
▶ λ-исчисление с длинными векторными примитивами.
− Асинхронное взаимодействие с GPU – взрыв мозга.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 14 / 56
Но, ведь, параллельная map существует!
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 15 / 56
Добро пожаловать в CHAOS CSP-реальности
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 16 / 56
CSP Хоара прекрасны и реалистичны
▶ Логика Хоара.
▶ Проверка моделей.
▶ Теморальная логика и линейные типы.
▶ Предтеча изобретению доменов Ершова-Скотта.
▶ Симметричные моноидальные категории.
▶ И связь с тензорными сетями Пенроуза и диаграммами Фейнмана6.
▶ Позволяют описывать вычислительную реальность:
▶ автоматы продажи шоколадок;
▶ ячейки памяти;
▶ процессоры;
▶ сокеты;
▶ операционные системы.
6
Воистину к Дао ведут все пути.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 17 / 56
Формулы успеха CSP: события + λ = процессы
▶ Готовность к событиям: a:A ↠ (P a).
7
Частный случай
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 18 / 56
Формулы успеха CSP: события + λ = процессы
▶ Готовность к событиям: a:A ↠ (P a).
▶ Умение взаимодействовать7:
a ↠ P ∥ a ↠ Q = a ↠ (P ∥ Q)
P ∥ (Q ∥ R) = (Q ∥ P) ∥ R;
7
Частный случай
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 18 / 56
Формулы успеха CSP: события + λ = процессы
▶ Готовность к событиям: a:A ↠ (P a).
▶ Умение взаимодействовать7:
a ↠ P ∥ a ↠ Q = a ↠ (P ∥ Q)
P ∥ (Q ∥ R) = (Q ∥ P) ∥ R;
▶ Рекурсивность: μX. (F X);
7
Частный случай
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 18 / 56
Формулы успеха CSP: события + λ = процессы
▶ Готовность к событиям: a:A ↠ (P a).
▶ Умение взаимодействовать7:
a ↠ P ∥ a ↠ Q = a ↠ (P ∥ Q)
P ∥ (Q ∥ R) = (Q ∥ P) ∥ R;
▶ Рекурсивность: μX. (F X);
▶ Маркировка: l:P.
7
Частный случай
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 18 / 56
Формулы успеха CSP: события + λ = процессы
▶ Готовность к событиям: a:A ↠ (P a).
▶ Умение взаимодействовать7:
a ↠ P ∥ a ↠ Q = a ↠ (P ∥ Q)
P ∥ (Q ∥ R) = (Q ∥ P) ∥ R;
▶ Рекурсивность: μX. (F X);
▶ Маркировка: l:P.
▶ Например, процесс копирования:
λ[in out]. μC. in?a ↠ out!a ↠ C
7
Частный случай
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 18 / 56
Тонкие особенности
+ Можем типизировать:
Q : Proc a → (a → Proc b) → Proc b.8
+ Можем моделировать:
a ↠ P = (λe (if (= e a) P BLEEP)).
8
Монада! Доклад удался!
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 19 / 56
Тонкие особенности
+ Можем типизировать:
Q : Proc a → (a → Proc b) → Proc b.8
+ Можем моделировать:
a ↠ P = (λe (if (= e a) P BLEEP)).
− Но не можем выразить на λ-языке.
− Должны сделать процессы примитивами:
▶ процессы Erlang;
▶ изменяемые переменные.
− И должны принять последствия своего выбора.
8
Монада! Доклад удался!
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 19 / 56
Цена параллельной реальности
▶ Неопределённость: |A| = · × 103.
▶ Каждое входящее событие «взрывает» домены.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 20 / 56
Цена параллельной реальности
▶ Неопределённость: |A| = · × 103.
▶ Каждое входящее событие «взрывает» домены.
▶ Ячейки памяти как rd/wr-серверы.
▶ Неопределённость: в a ↠ a ↠ P события a – разные.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 20 / 56
Цена параллельной реальности
▶ Неопределённость: |A| = · × 103.
▶ Каждое входящее событие «взрывает» домены.
▶ Ячейки памяти как rd/wr-серверы.
▶ Неопределённость: в a ↠ a ↠ P события a – разные.
▶ IO помогает спрятаться, но внешняя логика – CHAOS.
▶ CHAOS – важный для теории СSP процесс, который:
▶ и принимает любое событие,
▶ и отказывается от любого события;
▶ является начальным объектом категории процессов.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 20 / 56
CSP продают в разных обёртках
+ Некоторые парни учат математику и делают:
▶ Erlang;
▶ Node.js;
▶ Go;
▶ core.async в Clojure.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 21 / 56
CSP продают в разных обёртках
+ Некоторые парни учат математику и делают:
▶ Erlang;
▶ Node.js;
▶ Go;
▶ core.async в Clojure.
− Некоторые парни делают release-fast:
▶ systemd;
▶ Akka:
▶ вместо автоматического обнаружения взаимоблокировок
▶ нелокальная утечка памяти в бесконечные обещания,
▶ с крайними случаями.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 21 / 56
Ограничение CHAOS упрощением процессов
Фиксированные графы потоков данных
▶ Gstreamer;
▶ Intel DGFR.
▶ Плюсы:
+ отказоустойчивость;
+ производительность и асинхронность;
▶ Минусы:
− CHAOS уходит в ветвления, задержки и синхронизацию.
− Высокая сложность построения графов.
− Нерекурсивны, некомпонуемы и неполны по Тьюрингу.
− Вычисления закрыты.
− Нет механизмов работы с неопределённость.
− Проблема ветвлений.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 22 / 56
Ограничение CHAOS упрощением процессов
Развитие идей MapReduce
▶ Apache Spark;
▶ Elexir Streams.
▶ Плюсы:
+ Отказоустойчивость.
+ Производительность и асинхронность.
+ CHAOS практически побеждён.
± Условная простота программирования.
▶ Минусы:
− Нерекурсивны, некомпонуемы и неполны по Тьюрингу.
− Вычисления закрыты.
− Нет механизмов работы с неопределённостью.
− Проблема ветвлений.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 23 / 56
В большой открытой рекурсии нет CHAOS
oi = ANN(wi,j(n); {xd
i })
δk = −ok · (1 − ok) · (tk − ok)
δj = oj · (1 − oj) ·
∑
k∈out(j)
δk · wi,j
Δwi,j(n) = α · Δwi,j(n − 1) + (1 − α) · η · δj · oi
wi,j(n) = wi,j(n − 1) + Δwi,j(n)
Например, в глубогом обучении с подкреплением
▶ xd
i и tk могут поступать извне вычисления;
▶ достаточная точность δk может достигается на неизвестном шаге.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 24 / 56
Часть 2. Многообещающая
Или Академия Наук спешит на помощь!
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 25 / 56
Академики не дремлют
▶ Т-Система (ИПС им. А.К. Айламазяна РАН)9
▶ Девиз: распределённая машина распределённых обещаний.
+ Быстрая, распределённая с тонким параллелизмом и на Си.
− Не универсальная (?), не безопасная, не ясна работа с массивами и IO.
▶ DVM (ИПМ им. М.В. Келдыша РАН)10
▶ Девиз: Квадриллионы Ваших итераций возмём на себя!
+ Быстрая, распределённая с параллельным дисковым IO и на Си.
+ Автоматическое распараллеливание на NUMA, GPU, кластеры.
− Не универсальная: некоторые (весьма полезные) циклы на массивах.
▶ Oz (Swedish Institute of Computer Science)
▶ Девиз: Recv для слабаков!
+ Тьюринг-полный, асинхронный, лаконичный с тонким параллелизмом.
− Вычисление не применением, а унификацией термов: не очевидный.
− Не быстрый, не ясна работа с IO.
9
1980 г. Зарубежный аналог: SISAL (LLNL, DEC и др.), 1983 г., только SMP
10
1993 г. Зарубежный аналог: OpenMP, 1997 г., только SMP.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 26 / 56
Т-Система и числа Фибоначчи
#include <stdio.h>
#include <stdlib.h>
tfun int fib (int n) {
return n < 2 ? n : fib(n-1) + fib(n-2);
}
tfun int main (int argc, char *argv[]) {
if (argc != 2) { printf(”Usage: fib <n>n”); return 1; }
int n = atoi(argv[1]);
printf(”fib(%d) = %dn”, n, (int)fib(n));
return 0;
}
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 27 / 56
DVM и метод Якоби
#pragma dvm array distribute[block][block], shadow[1: 1][1: 1]
double A[L][L];
#pragma dvm array align([i][j] with A[i][j])
double B[L][L];
int main(int argc, char * argv[]) {
for (int it = 0; it < ITMAX; it++) {
#pragma dvm region inout (A, B)
{
#pragma dvm parallel([i][j] on A[i][j])
for (int i = 1; i < L - 1; i++)
for (int j = 1; j < L - 1; j++)
A[i][j] = B[i][j];
#pragma dvm parallel([i][j] on B[i][j]), shadow_renew(A)
for (int i = 1; i < L - 1; i++)
for (int j = 1; j < L -1; j++)
B[i][j] = (A[i -1][j] + A[i + 1][j] + A[i][j -1] + A[i][j + 1]) / 4.;
}
}
FILE * f = fopen(”jacobi.dat”, ”wb ”);
#pragma dvm get_actual(B)
fwrite(B, sizeof(double), L * L, f);
fclose(f);
return 0;
}
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 28 / 56
Oz и приём данных без Recv
declare Port in
local PortTag NewPort IsPort Send in
PortTag = {NewName}
fun {NewPort FS}
local S C in
C = {NewCell S}
FS = !!S
{NewChunk port(PortTag: C)}
end
end
fun {IsPort ?P}
{Chunk.hasFeature P PortTag}
end
proc {Send P M}
local Ms Mr in
{Exchange P.PortTag Ms Mr}
Ms = M | !!Mr
end
end
Port = port (new: NewPort is: IsPort send: Send)
end
declare NewQueueServer in
fun {NewQueueServer}
local Given GivePort Taken TakePort Join in
GivePort = {Port.new Given}
TakePort = {Port.new Taken}
proc {Join Xs Ys}
local Xr Yr X Y in
Xs = X | Xr
Ys = Y | Yr
X = Y
{Join Xr Yr}
end
end
thread {Join Given Taken} end
queue (
put: proc {$ X} {Port.send GivePort X} end
get: proc {$ X} {Port.send TakePort X} end)
end
end
**
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 29 / 56
Идеальное решение должно существовать
ДЗК структур событий11
(E – события, ≤ – причинные связи, ⊢ – конфликты)
Декартово замкнутые категории
▶ Автоматически интуиционистская логика.
▶ Автоматически λ-исчисление.
▶ Пока найдена только CSP12.
11
Glynn Winskel, Event Structures
12
Потому что ДЗК ⊂ СМК.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 30 / 56
РАспределёный Интуиционистский Движок
▶ Тьюринг-полные открытые потоки данных.
▶ Ресурсопластичность.
▶ Выразительность и простота:
▶ близость к λ-исчислению;
▶ рекурсивность;
▶ неопределённость только по необходимости;
▶ однородное описание потоков данных между разными подсистемами:
{CPU, GPGPU, MIC, FPGA, host, cluster, web, …}2
.
▶ Высокая производительность:
▶ совмещённые рассчёты и обмены данными;
▶ отсутсвие избыточных копирований;
▶ распределённый рассчёт потока управления.
▶ Независимость от:
▶ языка программирования
▶ и аппаратуры: FPGA, сетевые GPGPU, APU, …
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 31 / 56
Безграничный РАЙД
HW HW
RiDE RiDE
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 32 / 56
РАЙД с разных точек зрения
▶ Открытые динамические рекурсивные графы потоков данных.
▶ CSP со стабильными событиями формирования данных.
▶ Λ с распределёнными переменными и коммутативной редукцией.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 33 / 56
РАЙД API
▶ Примитивы обмена данными
1. Блок данных.
2. Контакт
▶ (pin :a :b :c ”hello”).
3. Очередь
▶ (zip (str (+ 1 2)) ”kitty”).
▶ Указатели на распределённые структуры
4. Диапазон путей
▶ (! pin :a (span ””) :c)
▶ (? pin (span ”x y z” :Z))
▶ (! zip (str (+ 1 2)) ”kitty”)
▶ (? zip).
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 34 / 56
РАЙД API
▶ Поток вычисления
5. Продолжение.
6. Процесс.
▶ Операции
1. Запись блока данных
▶ (:= (! pin :a) ”hello kitty”).
2. Формирование продолжения
▶ (run + 1 (pin :a) (! pin :c)).
3. Системные процедуры:
▶ fork, done, update.
▶ Сборка мусора
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 35 / 56
Примитивы для обмена данными
▶ Блоки данных:
▶ массивы данных
▶ c уникальными идентификаторами.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 36 / 56
Примитивы для обмена данными
▶ Блоки данных:
▶ массивы данных
▶ c уникальными идентификаторами.
▶ Контакты (pin :A ”hello kitty” :P):
▶ распределённые ssa-переменные;
▶ источник определённости.
▶ Задаются путями:
▶ списки строк, привычные по файловым системам;
▶ откладываются от корней (просто уникальные идентификаторы).
P
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 36 / 56
Примитивы для обмена данными
▶ Блоки данных:
▶ массивы данных
▶ c уникальными идентификаторами.
▶ Контакты (pin :A ”hello kitty” :P):
▶ распределённые ssa-переменные;
▶ источник определённости.
▶ Задаются путями:
▶ списки строк, привычные по файловым системам;
▶ откладываются от корней (просто уникальные идентификаторы).
P Z
Z
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 36 / 56
Примитивы для обмена данными
▶ Очереди (zip :A ”hello kitty” :Z):
▶ переменчивая идентичность;
▶ открытость системы;
▶ «застёжка» чтений и записей.
Z
Z
P
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 37 / 56
Все вычисления параллельны, распределены и локальны.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 38 / 56
Продолжения
▶ На самом деле, ничего особенного, обычные продолжения.
▶ Но в РАЙД они формируются массово и параллельно.
▶ Активируются асинхронно по готовности аргументов.
▶ (run F ”hello kitty” (pin :p) (zip :z) (! zip :Z))
P Z
Z
Z
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 39 / 56
Формирование графа через продолжения
▶ (run F ”hello kitty” (pin :p) (zip :z) (! zip :Z))
P Z
Z
Z
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 40 / 56
Формирование графа через продолжения
▶ (run F ”hello kitty” (pin :p) (zip :z) (! zip :Z))
▶ (define (F hk p z z-ref)
P Z
Z
Z
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 40 / 56
Формирование графа через продолжения
▶ (run F ”hello kitty” (pin :p) (zip :z) (! zip :Z))
▶ (define (F hk p z z-ref)
▶ (:= z-ref (+ p z))
P Z
Z
Z
Z
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 40 / 56
Формирование графа через продолжения
▶ (run F ”hello kitty” (pin :p) (zip :z) (! zip :Z))
▶ (define (F hk p z z-ref)
▶ (:= z-ref (+ p z))
▶ (run h (pin :R) (pin :S))
P Z
Z
Z
Z
R
S
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 40 / 56
Формирование графа через продолжения
▶ (run F ”hello kitty” (pin :p) (zip :z) (! zip :Z))
▶ (define (F hk p z z-ref)
▶ (:= z-ref (+ p z))
▶ (run h (pin :R) (pin :S))
▶ (run g (zip z-ref) (pin :P))
P Z
Z
Z
Z
R
S
P
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 40 / 56
Формирование графа через продолжения
▶ (run F ”hello kitty” (pin :p) (zip :z) (! zip :Z))
▶ (define (F hk p z z-ref)
▶ (:= z-ref (+ p z))
▶ (run h (pin :R) (pin :S))
▶ (run g (zip z-ref) (pin :P))
▶ (run f (zip z-ref) (pin :Q)))
P Z
Z
Z
Z
R
S
Q ZP
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 40 / 56
Управление распределённое, рассчёты локальны
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 41 / 56
Диапазоны: распределённый контроль потока
▶ Все pin и zip независимы, работа с ними параллельна.
▶ Необходим механизм работы со структурами данных:
▶ указание на структуры;
▶ передача их в процедуры;
▶ обновление больших распределённых структур;
▶ рекурсия:
▶ кадры активации процедур,
▶ произведение для ДЗК.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 42 / 56
Диапазоны: распределённый контроль потока
▶ Все pin и zip независимы, работа с ними параллельна.
▶ Необходим механизм работы со структурами данных:
▶ указание на структуры;
▶ передача их в процедуры;
▶ обновление больших распределённых структур;
▶ рекурсия:
▶ кадры активации процедур,
▶ произведение для ДЗК.
▶ Диапазоны.
▶ 4 варианта: {?-чтение, !-запись} × {pin, zip}.
▶ Просто блок данных, отвечающий на два вопроса.
1. Попадает ли путь в диапазон?
2. Если попадает, от какого он корня идёт?
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 42 / 56
Конструкторы диапазонов
▶ (! pin A
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 43 / 56
Конструкторы диапазонов
▶ (! pin A
▶ :a :b
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 43 / 56
Конструкторы диапазонов
▶ (! pin A
▶ :a :b
▶ (span :c :d)
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 43 / 56
Конструкторы диапазонов
▶ (! pin A
▶ :a :b
▶ (span :c :d)
▶ :e
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 43 / 56
Конструкторы диапазонов
▶ (! pin A
▶ :a :b
▶ (span :c :d)
▶ :e
▶ (span ””))
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 43 / 56
Конструкторы диапазонов
▶ (! pin A
▶ :a :b
▶ (span :c :d)
▶ :e
▶ (span ””))
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 43 / 56
Конструкторы диапазонов
▶ (! pin A
▶ :a :b
▶ (span :c :d)
▶ :e
▶ (span ””))
▶ (update C …).
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 43 / 56
Конструкторы диапазонов
▶ (! pin A
▶ :a :b
▶ (span :c :d)
▶ :e
▶ (span ””))
▶ (update C B …).
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 43 / 56
Конструкторы диапазонов
▶ (! pin A
▶ :a :b
▶ (span :c :d)
▶ :e
▶ (span ””))
▶ (update C B …).
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 43 / 56
Сложность и важность диапазонов
▶ Вычислительно непростые префиксные деревья.
▶ Можно существенно упростить, специализировав под:
▶ многомерные массивы с целочисленными индексами;
▶ одномерные ассоциативные массивы;
▶ записи с фиксированным набором полей.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 44 / 56
Сложность и важность диапазонов
▶ Вычислительно непростые префиксные деревья.
▶ Можно существенно упростить, специализировав под:
▶ многомерные массивы с целочисленными индексами;
▶ одномерные ассоциативные массивы;
▶ записи с фиксированным набором полей.
▶ Диапазоны обеспечивают.
1. Корректность потока данных:
▶ простая проверка пересечения диапазонов в порождаемых продолжениях.
2. Произведения в категории потоков и её замкнутость.
3. Сборку мусора:
▶ семантика диапазонов монотонная;
▶ всегда достаточно точно известно, что потребуется;
4. «Бесплатные» следствия из сборки мусора:
▶ обнаружение ошибок потока данных, в том числе взаимоблокировок;
▶ обработку ошибок приложения, например арифметических;
▶ контроль за ресурсами процессов.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 44 / 56
▶ Рассчёты диапазонов параллельны и локальны.
▶ Сборка мусора нелокальный процесс, но:
▶ асинхронный,
▶ фоновый,
▶ мир не нужно останавливать.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 45 / 56
Процессы и руление
Процессы
▶ Дополнительный идентификатор для продолжений.
▶ Необходим для ручного завершения вычисления.
▶ Помогает изолировать ошибки: классика UNIX.
Руление
▶ (run … (meta :cluster 2 :node 5 :ram 0 :gpu 1)).
▶ (! pin … (meta :check-point)).
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 46 / 56
Результаты на текущий момент
MPI
C99 -1 MPI
C99 -2 MPI
Python
RiDE
C99
RiDE
AST
Hadoop
Java
RiDE
C99 -MR RiDE
AST -MR
209
86
101
46
71
91
35
57 54
21
82
34
Строккода
¬lib/¬load
lib/¬load
lib/load
Рис.: Объём кода параллельного умножения матриц в разных системах. lib –
использование библиотеки для локальных матричных операций; load – работа с
внешними данными.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 47 / 56
Синтаксис, безусловно, очень важен13
▶ S-выражение абстрактного синтаксиса
(for-each i (range l)
j (range n)
k (range m)
(run matrix-mul (! zip ’i.j) (pin mat-a ’i.k) (pin mat-b ’k.j)))
▶ Аналогичный код на C99
for (unsigned i = 0; i < L; i++)
for (unsigned j = 0; j < N; j++) {
const int sum_zip = rzip(rfmt(”%u.%u”, i, j));
for (unsigned k = 0; k < M; k++) {
const int aik_pin = rpin(A, rfmt(”%u.%u”, i, k)),
bkj_pin = rpin(B, rfmt(”%u.%u”, k, j));
rrun(”matrix_mul”, rref(WR, sum_zip), aik_pin, bkj_pin); } }
13
И для НИР лучше, когда его нет.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 48 / 56
Пример: распределённое умножение матриц
(define block-n 64 l 100 n 200 m 300)
(define (distributed-matrix-mul mat-r mat-a mat-b)
(for-each i (range l)
j (range n)
k (range m)
(run matrix-mul (! zip ’i.j) (pin mat-a ’i.k) (pin mat-b ’k.j)))
(let queue-sum
(lambda result sum-ref blocks n-blocks
(if (= 0 n-blocks)
(run (lambda r s (:= r s)) (! pin result) (pin sum-ref))
(do (run matrix-add (! pin :sum) (pin sum-ref) (zip blocks))
(run queue-sum (! pin result)
(? pin :sum) (? zip block-queue) (- n-blocks 1)))))
(for-each i (range l)
j (range n)
(run queue-sum (! pin mat-r ’i.j) (ref (zero-matrix)) (? zip ’i.j) m))))
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 49 / 56
Пример: группы продолжений
(for-each i (range l)
j (range n)
k (range m)
(run matrix-mul (! zip ’i.j) (pin mat-a ’i.k) (pin mat-b ’k.j)))
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 50 / 56
Пример: развёртка циклов
(let queue-sum
(lambda result sum-ref blocks n-blocks
(if (= 0 n-blocks)
(run (lambda r s (:= r s)) (! pin result) (pin sum-ref))
(do (run matrix-add (! pin :sum) (pin sum-ref) (zip blocks))
(run queue-sum (! pin result)
(? pin :sum) (? zip block-queue)
(- n-blocks 1)))))
...)
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 51 / 56
Пример: блоки данных в аргументах
(for-each i (range l)
j (range n)
(run queue-sum (! pin mat-r ’i.j) (ref (zero-matrix)) (? zip ’i.j) m))
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 52 / 56
Пример: интерактивное распределённое пространство
(let watchdog
(lambda zproc start
(if (not (= zproc :done)) (run watchdog zproc start)
(print ”time:” (- (current-time) start))))
(define (main . args)
(run watchdog (zip ”proc”) (current-time))
(run fork (! zip ”proc”)
distributed-matrix-mul (! pin (nth args 1) (span ””))
(? pin root (list (nth args 2)
(nth args 3))))
(run := (! zip api :update-root) (? pin))))
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 53 / 56
Плюсы и минусы в теории
+ РАЙД – это безграничный сетевой компьютер с λ-исчислением:
▶ ДЗК потоков данных и, как следствие, обычный функциональный код;
▶ возможна статическая проверка семантики программ;
▶ сложность программирования ниже уровня MapReduce;
▶ библиотеки функций в распределённом пространстве данных.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 54 / 56
Плюсы и минусы в теории
+ РАЙД – это безграничный сетевой компьютер с λ-исчислением:
▶ ДЗК потоков данных и, как следствие, обычный функциональный код;
▶ возможна статическая проверка семантики программ;
▶ сложность программирования ниже уровня MapReduce;
▶ библиотеки функций в распределённом пространстве данных.
+ Живучесть:
▶ нет единых точек отказа;
▶ возможность отслеживать и обрабатывать ошибки;
▶ прозрачная для программиста поддержка контрольных точек.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 54 / 56
Плюсы и минусы в теории
+ РАЙД – это безграничный сетевой компьютер с λ-исчислением:
▶ ДЗК потоков данных и, как следствие, обычный функциональный код;
▶ возможна статическая проверка семантики программ;
▶ сложность программирования ниже уровня MapReduce;
▶ библиотеки функций в распределённом пространстве данных.
+ Живучесть:
▶ нет единых точек отказа;
▶ возможность отслеживать и обрабатывать ошибки;
▶ прозрачная для программиста поддержка контрольных точек.
+ Производительность.
▶ руление асинхронными потоками данных;
▶ блоки данных в общей памяти можно не копировать;
▶ децентрализованное хранение данных с параллельным доступом;
▶ все операции управления потоком, кроме сборки мусора – независимые;
▶ все управляющие стркутуры РАЙД – это CRDT (kudos: В. Грищенко).
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 54 / 56
Плюсы и минусы на практике
+ Выразительность проверена на компиляторе Си99 для МультиКлет:
▶ проблемно ориентированный язык с моделью RiDE;
▶ сложные обмены данными в процедурах компиляции – отличный тест;
▶ программирование, на удивление, оказалось простым и весёлым.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 55 / 56
Плюсы и минусы на практике
+ Выразительность проверена на компиляторе Си99 для МультиКлет:
▶ проблемно ориентированный язык с моделью RiDE;
▶ сложные обмены данными в процедурах компиляции – отличный тест;
▶ программирование, на удивление, оказалось простым и весёлым.
+ Живучесть проверена на прототипной реализации и кластере от РСК.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 55 / 56
Плюсы и минусы на практике
+ Выразительность проверена на компиляторе Си99 для МультиКлет:
▶ проблемно ориентированный язык с моделью RiDE;
▶ сложные обмены данными в процедурах компиляции – отличный тест;
▶ программирование, на удивление, оказалось простым и весёлым.
+ Живучесть проверена на прототипной реализации и кластере от РСК.
− Производительность:
▶ работаем над этим;
▶ систему можно строить из простых независимых компонент:
▶ серверы блоков данных,
▶ серверы контактов,
▶ серверы очередей,
▶ серверы диапазонов и сборки мусора,
▶ планировщики,
▶ трамплины;
▶ опыт Hadoop внушает некоторый оптимизм.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 55 / 56
Спасибо за внимание
m.bakhterev@imm.uran.ru
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 56 / 56

More Related Content

What's hot

Нейронные сети и Keras. Часть 1
Нейронные сети и Keras. Часть 1Нейронные сети и Keras. Часть 1
Нейронные сети и Keras. Часть 1PyNSK
 
Когда в C# не хватает C++
Когда в C# не хватает C++Когда в C# не хватает C++
Когда в C# не хватает C++Mikhail Shcherbakov
 
Когда в C# не хватает C++ . Часть 3.
Когда в C# не хватает C++. Часть 3. Когда в C# не хватает C++. Часть 3.
Когда в C# не хватает C++ . Часть 3. Mikhail Shcherbakov
 
JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...
JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...
JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...JSFestUA
 
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Platonov Sergey
 
разработка серверов и серверных приложений лекция №2
разработка серверов и серверных приложений лекция №2разработка серверов и серверных приложений лекция №2
разработка серверов и серверных приложений лекция №2Eugeniy Tyumentcev
 
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Platonov Sergey
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3Eugeniy Tyumentcev
 
Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Mikhail Kurnosov
 
2012.11.06 машинное обучение с помощью vw
2012.11.06 машинное обучение с помощью vw2012.11.06 машинное обучение с помощью vw
2012.11.06 машинное обучение с помощью vwИлья Трофимов
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Mikhail Kurnosov
 
KharkivJS 2017: Коллаборативные системы и CRDT
KharkivJS 2017: Коллаборативные системы и CRDTKharkivJS 2017: Коллаборативные системы и CRDT
KharkivJS 2017: Коллаборативные системы и CRDTMax Klymyshyn
 
Лекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиЛекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиMikhail Kurnosov
 
Михаил Матросов, “С++ без new и delete”
Михаил Матросов, “С++ без new и delete”Михаил Матросов, “С++ без new и delete”
Михаил Матросов, “С++ без new и delete”Platonov Sergey
 
Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)
Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)
Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)IT-Доминанта
 

What's hot (15)

Нейронные сети и Keras. Часть 1
Нейронные сети и Keras. Часть 1Нейронные сети и Keras. Часть 1
Нейронные сети и Keras. Часть 1
 
Когда в C# не хватает C++
Когда в C# не хватает C++Когда в C# не хватает C++
Когда в C# не хватает C++
 
Когда в C# не хватает C++ . Часть 3.
Когда в C# не хватает C++. Часть 3. Когда в C# не хватает C++. Часть 3.
Когда в C# не хватает C++ . Часть 3.
 
JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...
JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...
JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...
 
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
 
разработка серверов и серверных приложений лекция №2
разработка серверов и серверных приложений лекция №2разработка серверов и серверных приложений лекция №2
разработка серверов и серверных приложений лекция №2
 
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
 
Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Векторизация кода (семинар 3)
Векторизация кода (семинар 3)
 
2012.11.06 машинное обучение с помощью vw
2012.11.06 машинное обучение с помощью vw2012.11.06 машинное обучение с помощью vw
2012.11.06 машинное обучение с помощью vw
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
 
KharkivJS 2017: Коллаборативные системы и CRDT
KharkivJS 2017: Коллаборативные системы и CRDTKharkivJS 2017: Коллаборативные системы и CRDT
KharkivJS 2017: Коллаборативные системы и CRDT
 
Лекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиЛекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимости
 
Михаил Матросов, “С++ без new и delete”
Михаил Матросов, “С++ без new и delete”Михаил Матросов, “С++ без new и delete”
Михаил Матросов, “С++ без new и delete”
 
Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)
Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)
Pony ORM - маппер нового поколения (Алексей Малашкевич и Александр Козловский)
 

Similar to "Сеть - это компьютер. Снова" Бахтерев Михаил, ИММ УрО РАН

Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Mikhail Kurnosov
 
Дмитрий Кропотов, ВМК МГУ, Группа Байесовских Методов, «Методы оптимизации бо...
Дмитрий Кропотов, ВМК МГУ, Группа Байесовских Методов, «Методы оптимизации бо...Дмитрий Кропотов, ВМК МГУ, Группа Байесовских Методов, «Методы оптимизации бо...
Дмитрий Кропотов, ВМК МГУ, Группа Байесовских Методов, «Методы оптимизации бо...Mail.ru Group
 
Динамика и статика — метрики графов социальных сетей - Cергей Зефиров
Динамика и статика — метрики графов социальных сетей - Cергей ЗефировДинамика и статика — метрики графов социальных сетей - Cергей Зефиров
Динамика и статика — метрики графов социальных сетей - Cергей ЗефировYandex
 
DSLs in Lisp and Clojure
DSLs in Lisp and ClojureDSLs in Lisp and Clojure
DSLs in Lisp and ClojureVasil Remeniuk
 
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...Ontico
 
Илья Трофимов - машинное обучение с помощью vw
Илья Трофимов - машинное обучение с помощью vwИлья Трофимов - машинное обучение с помощью vw
Илья Трофимов - машинное обучение с помощью vwPavel Mezentsev
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Yandex
 
Дмитрий Сошников Искусственный интеллект и нейросети для .NET-разработчиков
Дмитрий Сошников    Искусственный интеллект и нейросети для .NET-разработчиковДмитрий Сошников    Искусственный интеллект и нейросети для .NET-разработчиков
Дмитрий Сошников Искусственный интеллект и нейросети для .NET-разработчиковMskDotNet Community
 
Введение в Deep Learning
Введение в Deep LearningВведение в Deep Learning
Введение в Deep LearningGrigory Sapunov
 
ITMO RecSys course. Autumn 2014. Lecture 4
ITMO RecSys course. Autumn 2014. Lecture 4ITMO RecSys course. Autumn 2014. Lecture 4
ITMO RecSys course. Autumn 2014. Lecture 4Andrey Danilchenko
 
Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства" Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства" Technosphere1
 
Hadoop streaming простой путь к масштабированию приложений обработки данных. ...
Hadoop streaming простой путь к масштабированию приложений обработки данных. ...Hadoop streaming простой путь к масштабированию приложений обработки данных. ...
Hadoop streaming простой путь к масштабированию приложений обработки данных. ...rit2011
 
RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...
RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...
RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...Alexey Voropaev
 
Конкурентные ассоциативные контейнеры
Конкурентные ассоциативные контейнерыКонкурентные ассоциативные контейнеры
Конкурентные ассоциативные контейнерыPlatonov Sergey
 
Организация процесса регулярной обработки больших объемов данных
Организация процесса регулярной обработки больших объемов данныхОрганизация процесса регулярной обработки больших объемов данных
Организация процесса регулярной обработки больших объемов данныхCodeFest
 
Basis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA FrameworkBasis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA FrameworkMoscowJS
 
"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)
"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)
"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)AvitoTech
 
CSEDays. Александр Семенов
CSEDays. Александр СеменовCSEDays. Александр Семенов
CSEDays. Александр СеменовLiloSEA
 

Similar to "Сеть - это компьютер. Снова" Бахтерев Михаил, ИММ УрО РАН (20)

Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
 
Дмитрий Кропотов, ВМК МГУ, Группа Байесовских Методов, «Методы оптимизации бо...
Дмитрий Кропотов, ВМК МГУ, Группа Байесовских Методов, «Методы оптимизации бо...Дмитрий Кропотов, ВМК МГУ, Группа Байесовских Методов, «Методы оптимизации бо...
Дмитрий Кропотов, ВМК МГУ, Группа Байесовских Методов, «Методы оптимизации бо...
 
Динамика и статика — метрики графов социальных сетей - Cергей Зефиров
Динамика и статика — метрики графов социальных сетей - Cергей ЗефировДинамика и статика — метрики графов социальных сетей - Cергей Зефиров
Динамика и статика — метрики графов социальных сетей - Cергей Зефиров
 
DSLs in Lisp and Clojure
DSLs in Lisp and ClojureDSLs in Lisp and Clojure
DSLs in Lisp and Clojure
 
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
 
Илья Трофимов - машинное обучение с помощью vw
Илья Трофимов - машинное обучение с помощью vwИлья Трофимов - машинное обучение с помощью vw
Илья Трофимов - машинное обучение с помощью vw
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
 
Дмитрий Сошников Искусственный интеллект и нейросети для .NET-разработчиков
Дмитрий Сошников    Искусственный интеллект и нейросети для .NET-разработчиковДмитрий Сошников    Искусственный интеллект и нейросети для .NET-разработчиков
Дмитрий Сошников Искусственный интеллект и нейросети для .NET-разработчиков
 
Введение в Deep Learning
Введение в Deep LearningВведение в Deep Learning
Введение в Deep Learning
 
введение в Gpu
введение в Gpuвведение в Gpu
введение в Gpu
 
ITMO RecSys course. Autumn 2014. Lecture 4
ITMO RecSys course. Autumn 2014. Lecture 4ITMO RecSys course. Autumn 2014. Lecture 4
ITMO RecSys course. Autumn 2014. Lecture 4
 
Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства" Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства"
 
Hadoop streaming простой путь к масштабированию приложений обработки данных. ...
Hadoop streaming простой путь к масштабированию приложений обработки данных. ...Hadoop streaming простой путь к масштабированию приложений обработки данных. ...
Hadoop streaming простой путь к масштабированию приложений обработки данных. ...
 
RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...
RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...
RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...
 
Конкурентные ассоциативные контейнеры
Конкурентные ассоциативные контейнерыКонкурентные ассоциативные контейнеры
Конкурентные ассоциативные контейнеры
 
Организация процесса регулярной обработки больших объемов данных
Организация процесса регулярной обработки больших объемов данныхОрганизация процесса регулярной обработки больших объемов данных
Организация процесса регулярной обработки больших объемов данных
 
Basis.js - Production Ready Framework
Basis.js - Production Ready FrameworkBasis.js - Production Ready Framework
Basis.js - Production Ready Framework
 
Basis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA FrameworkBasis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA Framework
 
"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)
"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)
"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)
 
CSEDays. Александр Семенов
CSEDays. Александр СеменовCSEDays. Александр Семенов
CSEDays. Александр Семенов
 

More from it-people

«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Coit-people
 
«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghub«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghubit-people
 
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrainsit-people
 
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologiesit-people
 
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндексit-people
 
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...it-people
 
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalrit-people
 
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...it-people
 
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАНit-people
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банкit-people
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Coit-people
 
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНСit-people
 
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...it-people
 
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologiesit-people
 
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn Systemit-people
 
«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologies«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologiesit-people
 
«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндекс«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндексit-people
 
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...it-people
 
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognicianit-people
 
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...it-people
 

More from it-people (20)

«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
 
«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghub«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghub
 
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
 
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
 
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
 
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
 
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
 
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
 
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
 
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
 
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
 
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
 
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
 
«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologies«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologies
 
«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндекс«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндекс
 
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
 
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
 
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
 

"Сеть - это компьютер. Снова" Бахтерев Михаил, ИММ УрО РАН

  • 1. Сеть – это компьютер. Снова Михаил Бахтерев1 m.bakhterev@imm.uran.ru Павел Васёв1,2 contact@lact.ru 1Институт Математики и Механики им. Н.Н. Красовского 2Конструктор Сайтов «LineAct» ДАМП-2017, Екатеринбург Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 1 / 56
  • 2. Часть 1. Познавательная Или почему тяжело создавать распределённое ПО? Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 2 / 56
  • 3. Краткая «история» микросервисов HW HW · · · · · · · · · · ·· · · · · Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 3 / 56
  • 4. Краткая «история» микросервисов HW HW OS OS · · · · · · · · · · ·· · · · · · · · · · · · · · · ·· · · · · Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 3 / 56
  • 5. Краткая «история» микросервисов HW HW OS OS · · · · · · · · · · ·· · · · · · · · · · · · · · · ·· · · · · Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 3 / 56
  • 6. Краткая «история» микросервисов HW HW OS OS · · · · · · · · · · ·· · · · · · · · · · · · · · · ·· · · · · Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 3 / 56
  • 7. Краткая «история» микросервисов HW HW OS OS JVM .Net · · · · · · · · · · ·· · · · · · · · · · · · · · · ·· · · · · Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 3 / 56
  • 8. Краткая «история» микросервисов HW HW VM OS VM OS JVM .Net · · · · · · · · · · ·· · · · · · · · · · · · · · · ·· · · · · Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 3 / 56
  • 9. Краткая «история» микросервисов HW HW VM OS VM OS Docker Docker JVM .Net · · · · · · · · · · ·· · · · · · · · · · · · · · · ·· · · · · Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 3 / 56
  • 10. Э. Таненбаум1 узнаёт о микросервисах 1 Aвтор MINIX, RFID-вируса и спора с Л. Торвальдсом о судьбах операционных систем. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 4 / 56
  • 11. No more! Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 5 / 56
  • 12. Юниядра: загрузим MirageOS за время DNS-ответа! HW HW VM VM · · · · · · · · · · ·· · · · · · · · · · · · · · · ·· · · · · OCaml OCaml Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 6 / 56
  • 13. Клиент-серверная архитектура ▶ Легко, когда: ▶ множество изолированных друг от друга сессий; ▶ поддержано решающей все проблемы БД. ▶ Тяжело, если необходимо: ▶ рассчитать выброс гильзы из пушки Су-35; ▶ смоделировать работу сердца; ▶ обучить гигантскую нейронную сеть; ▶ оценить поведение платья на конкретной фигуре; ▶ решить любую другую задачу супервычислений. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 7 / 56
  • 14. Небольшой суперкомпьютер «Уран» ▶ Массово-параллельная неоднородная машина: 1768 × CPU + 3.14GiB CL2D + 7040GiB + 352 × GPU + 2040GiB = +    128 × (2 × 4 Xeon E5450 + 16GiB) 20 × (2 × 6 × 2 Xeon X5675 + 48GiB + 8 × (Tesla M2050 + 3GiB)) 10 × (2 × 6 × 2 Xeon X5675 + 192GiB + 8 × (Tesla M2090 + 6GiB)) 18 × (2 × 8 × 2 Xeon E5-2660 + 96GiB + 8 × (Tesla M2090 + 6GiB)) 6 × (2 × 8 × 2 Xeon E5-2650 + 64GiB + 3 × (Tesla K40m0 + 12GiB)). ▶ 2120 одноранговых клиент-серверных БД2. ▶ Каждый + и × – каналы взаимодействия. 2 Конечно, не полноценных БД с SQL и блэкджеком. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 8 / 56
  • 15. 3-й3,4 закон разработки ВП-приложений О Σ технологий и Π неприятностей: +    libNUMA OpenMP OpenCL MPI Web = ×    Наладка и отладка работы · ×103 процессов Экспоненциальное усложнение: 2(·×103 разных rip) Синхронные коллективные операции Примитивные схемы параллелизма Барьеры MPI_Allgather Перерасход памяти и её утечки Незаметные взаимные блокировки Избыточное копирование Обмен через файлы Отказы оборудования Арифметические ошибки (в индексах) =⇒    Простои оборудования Неоптимальность Некорректность. 3 1. Закон Амдала. 4 2. Закон о нехватке специалистов. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 9 / 56
  • 16. Что же нас держит в привязанных к узлам5 циклах? 5 Akka Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 10 / 56
  • 17. λ-исчисление ((λx (λy x + y)) 3 z) →β((λy 3 + y) z) →β3 + z Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 11 / 56
  • 18. λ-исчисление прекрасно ▶ Числа. ▶ Условные операции и ветвления. ▶ Суммы и произведения структур данных. ▶ Рекурсия: ▶ теория семантических доменов и теория категорий; ▶ соответствие Карри-Ховарда-Лэмбэка; ▶ связь программирования с логикой, топологией и, дальше, с физикой; ▶ теория зависимых типов; ▶ системы механического содействия доказательствам; ▶ новые основания математики; ▶ конечно же, Пол Грэм и Y-комбинатор. ▶ Стандартная семантика любого современного ЯП. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 12 / 56
  • 19. β-редукция: сила и слабость λ-исчисления ▶ Простая идея о замене переменной на значение: [x → h] y = { h x = y y x ̸= y [x → h] (f g) = ([x → h] f [x → h] g) [x → h] (λy f) = { (λy f) x = y (λz [x → h] [y → z] f) x ̸= y ∧ z /∈ FZ где FZ = (FreeVars h) ∪ (FreeVars f) . Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 13 / 56
  • 20. β-редукция: сила и слабость λ-исчисления ▶ Простая идея о замене переменной на значение: [x → h] y = { h x = y y x ̸= y [x → h] (f g) = ([x → h] f [x → h] g) [x → h] (λy f) = { (λy f) x = y (λz [x → h] [y → z] f) x ̸= y ∧ z /∈ FZ где FZ = (FreeVars h) ∪ (FreeVars f) . Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 13 / 56
  • 21. β-редукция: сила и слабость λ-исчисления ▶ Простая идея о замене переменной на значение: [x → h] y = { h x = y y x ̸= y [x → h] (f g) = ([x → h] f [x → h] g) [x → h] (λy f) = { (λy f) x = y (λz [x → h] [y → z] f) x ̸= y ∧ z /∈ FZ где FZ = (FreeVars h) ∪ (FreeVars f) . ∦ Эффективная реализация – индексы де Брауна, a.k.a. стек. ∦ Конфлюентность и ленивость не делают β-редукцию коммутативной. ∦ Не к чему «прицепить» обмен данными. ▶ Не помогают даже игровые и трассирующие семантики. ∥ Чистые функции. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 13 / 56
  • 22. λ-исчисление, всё равно, прекрасно + Теория, Пол Грэм и Y-комбинатор. + Язык ядер для GPU: ▶ Vector Models for Data-Parallel Computing; ▶ λ-исчисление с длинными векторными примитивами. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 14 / 56
  • 23. λ-исчисление, всё равно, прекрасно + Теория, Пол Грэм и Y-комбинатор. + Язык ядер для GPU: ▶ Vector Models for Data-Parallel Computing; ▶ λ-исчисление с длинными векторными примитивами. − Асинхронное взаимодействие с GPU – взрыв мозга. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 14 / 56
  • 24. Но, ведь, параллельная map существует! Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 15 / 56
  • 25. Добро пожаловать в CHAOS CSP-реальности Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 16 / 56
  • 26. CSP Хоара прекрасны и реалистичны ▶ Логика Хоара. ▶ Проверка моделей. ▶ Теморальная логика и линейные типы. ▶ Предтеча изобретению доменов Ершова-Скотта. ▶ Симметричные моноидальные категории. ▶ И связь с тензорными сетями Пенроуза и диаграммами Фейнмана6. ▶ Позволяют описывать вычислительную реальность: ▶ автоматы продажи шоколадок; ▶ ячейки памяти; ▶ процессоры; ▶ сокеты; ▶ операционные системы. 6 Воистину к Дао ведут все пути. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 17 / 56
  • 27. Формулы успеха CSP: события + λ = процессы ▶ Готовность к событиям: a:A ↠ (P a). 7 Частный случай Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 18 / 56
  • 28. Формулы успеха CSP: события + λ = процессы ▶ Готовность к событиям: a:A ↠ (P a). ▶ Умение взаимодействовать7: a ↠ P ∥ a ↠ Q = a ↠ (P ∥ Q) P ∥ (Q ∥ R) = (Q ∥ P) ∥ R; 7 Частный случай Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 18 / 56
  • 29. Формулы успеха CSP: события + λ = процессы ▶ Готовность к событиям: a:A ↠ (P a). ▶ Умение взаимодействовать7: a ↠ P ∥ a ↠ Q = a ↠ (P ∥ Q) P ∥ (Q ∥ R) = (Q ∥ P) ∥ R; ▶ Рекурсивность: μX. (F X); 7 Частный случай Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 18 / 56
  • 30. Формулы успеха CSP: события + λ = процессы ▶ Готовность к событиям: a:A ↠ (P a). ▶ Умение взаимодействовать7: a ↠ P ∥ a ↠ Q = a ↠ (P ∥ Q) P ∥ (Q ∥ R) = (Q ∥ P) ∥ R; ▶ Рекурсивность: μX. (F X); ▶ Маркировка: l:P. 7 Частный случай Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 18 / 56
  • 31. Формулы успеха CSP: события + λ = процессы ▶ Готовность к событиям: a:A ↠ (P a). ▶ Умение взаимодействовать7: a ↠ P ∥ a ↠ Q = a ↠ (P ∥ Q) P ∥ (Q ∥ R) = (Q ∥ P) ∥ R; ▶ Рекурсивность: μX. (F X); ▶ Маркировка: l:P. ▶ Например, процесс копирования: λ[in out]. μC. in?a ↠ out!a ↠ C 7 Частный случай Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 18 / 56
  • 32. Тонкие особенности + Можем типизировать: Q : Proc a → (a → Proc b) → Proc b.8 + Можем моделировать: a ↠ P = (λe (if (= e a) P BLEEP)). 8 Монада! Доклад удался! Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 19 / 56
  • 33. Тонкие особенности + Можем типизировать: Q : Proc a → (a → Proc b) → Proc b.8 + Можем моделировать: a ↠ P = (λe (if (= e a) P BLEEP)). − Но не можем выразить на λ-языке. − Должны сделать процессы примитивами: ▶ процессы Erlang; ▶ изменяемые переменные. − И должны принять последствия своего выбора. 8 Монада! Доклад удался! Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 19 / 56
  • 34. Цена параллельной реальности ▶ Неопределённость: |A| = · × 103. ▶ Каждое входящее событие «взрывает» домены. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 20 / 56
  • 35. Цена параллельной реальности ▶ Неопределённость: |A| = · × 103. ▶ Каждое входящее событие «взрывает» домены. ▶ Ячейки памяти как rd/wr-серверы. ▶ Неопределённость: в a ↠ a ↠ P события a – разные. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 20 / 56
  • 36. Цена параллельной реальности ▶ Неопределённость: |A| = · × 103. ▶ Каждое входящее событие «взрывает» домены. ▶ Ячейки памяти как rd/wr-серверы. ▶ Неопределённость: в a ↠ a ↠ P события a – разные. ▶ IO помогает спрятаться, но внешняя логика – CHAOS. ▶ CHAOS – важный для теории СSP процесс, который: ▶ и принимает любое событие, ▶ и отказывается от любого события; ▶ является начальным объектом категории процессов. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 20 / 56
  • 37. CSP продают в разных обёртках + Некоторые парни учат математику и делают: ▶ Erlang; ▶ Node.js; ▶ Go; ▶ core.async в Clojure. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 21 / 56
  • 38. CSP продают в разных обёртках + Некоторые парни учат математику и делают: ▶ Erlang; ▶ Node.js; ▶ Go; ▶ core.async в Clojure. − Некоторые парни делают release-fast: ▶ systemd; ▶ Akka: ▶ вместо автоматического обнаружения взаимоблокировок ▶ нелокальная утечка памяти в бесконечные обещания, ▶ с крайними случаями. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 21 / 56
  • 39. Ограничение CHAOS упрощением процессов Фиксированные графы потоков данных ▶ Gstreamer; ▶ Intel DGFR. ▶ Плюсы: + отказоустойчивость; + производительность и асинхронность; ▶ Минусы: − CHAOS уходит в ветвления, задержки и синхронизацию. − Высокая сложность построения графов. − Нерекурсивны, некомпонуемы и неполны по Тьюрингу. − Вычисления закрыты. − Нет механизмов работы с неопределённость. − Проблема ветвлений. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 22 / 56
  • 40. Ограничение CHAOS упрощением процессов Развитие идей MapReduce ▶ Apache Spark; ▶ Elexir Streams. ▶ Плюсы: + Отказоустойчивость. + Производительность и асинхронность. + CHAOS практически побеждён. ± Условная простота программирования. ▶ Минусы: − Нерекурсивны, некомпонуемы и неполны по Тьюрингу. − Вычисления закрыты. − Нет механизмов работы с неопределённостью. − Проблема ветвлений. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 23 / 56
  • 41. В большой открытой рекурсии нет CHAOS oi = ANN(wi,j(n); {xd i }) δk = −ok · (1 − ok) · (tk − ok) δj = oj · (1 − oj) · ∑ k∈out(j) δk · wi,j Δwi,j(n) = α · Δwi,j(n − 1) + (1 − α) · η · δj · oi wi,j(n) = wi,j(n − 1) + Δwi,j(n) Например, в глубогом обучении с подкреплением ▶ xd i и tk могут поступать извне вычисления; ▶ достаточная точность δk может достигается на неизвестном шаге. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 24 / 56
  • 42. Часть 2. Многообещающая Или Академия Наук спешит на помощь! Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 25 / 56
  • 43. Академики не дремлют ▶ Т-Система (ИПС им. А.К. Айламазяна РАН)9 ▶ Девиз: распределённая машина распределённых обещаний. + Быстрая, распределённая с тонким параллелизмом и на Си. − Не универсальная (?), не безопасная, не ясна работа с массивами и IO. ▶ DVM (ИПМ им. М.В. Келдыша РАН)10 ▶ Девиз: Квадриллионы Ваших итераций возмём на себя! + Быстрая, распределённая с параллельным дисковым IO и на Си. + Автоматическое распараллеливание на NUMA, GPU, кластеры. − Не универсальная: некоторые (весьма полезные) циклы на массивах. ▶ Oz (Swedish Institute of Computer Science) ▶ Девиз: Recv для слабаков! + Тьюринг-полный, асинхронный, лаконичный с тонким параллелизмом. − Вычисление не применением, а унификацией термов: не очевидный. − Не быстрый, не ясна работа с IO. 9 1980 г. Зарубежный аналог: SISAL (LLNL, DEC и др.), 1983 г., только SMP 10 1993 г. Зарубежный аналог: OpenMP, 1997 г., только SMP. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 26 / 56
  • 44. Т-Система и числа Фибоначчи #include <stdio.h> #include <stdlib.h> tfun int fib (int n) { return n < 2 ? n : fib(n-1) + fib(n-2); } tfun int main (int argc, char *argv[]) { if (argc != 2) { printf(”Usage: fib <n>n”); return 1; } int n = atoi(argv[1]); printf(”fib(%d) = %dn”, n, (int)fib(n)); return 0; } Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 27 / 56
  • 45. DVM и метод Якоби #pragma dvm array distribute[block][block], shadow[1: 1][1: 1] double A[L][L]; #pragma dvm array align([i][j] with A[i][j]) double B[L][L]; int main(int argc, char * argv[]) { for (int it = 0; it < ITMAX; it++) { #pragma dvm region inout (A, B) { #pragma dvm parallel([i][j] on A[i][j]) for (int i = 1; i < L - 1; i++) for (int j = 1; j < L - 1; j++) A[i][j] = B[i][j]; #pragma dvm parallel([i][j] on B[i][j]), shadow_renew(A) for (int i = 1; i < L - 1; i++) for (int j = 1; j < L -1; j++) B[i][j] = (A[i -1][j] + A[i + 1][j] + A[i][j -1] + A[i][j + 1]) / 4.; } } FILE * f = fopen(”jacobi.dat”, ”wb ”); #pragma dvm get_actual(B) fwrite(B, sizeof(double), L * L, f); fclose(f); return 0; } Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 28 / 56
  • 46. Oz и приём данных без Recv declare Port in local PortTag NewPort IsPort Send in PortTag = {NewName} fun {NewPort FS} local S C in C = {NewCell S} FS = !!S {NewChunk port(PortTag: C)} end end fun {IsPort ?P} {Chunk.hasFeature P PortTag} end proc {Send P M} local Ms Mr in {Exchange P.PortTag Ms Mr} Ms = M | !!Mr end end Port = port (new: NewPort is: IsPort send: Send) end declare NewQueueServer in fun {NewQueueServer} local Given GivePort Taken TakePort Join in GivePort = {Port.new Given} TakePort = {Port.new Taken} proc {Join Xs Ys} local Xr Yr X Y in Xs = X | Xr Ys = Y | Yr X = Y {Join Xr Yr} end end thread {Join Given Taken} end queue ( put: proc {$ X} {Port.send GivePort X} end get: proc {$ X} {Port.send TakePort X} end) end end ** Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 29 / 56
  • 47. Идеальное решение должно существовать ДЗК структур событий11 (E – события, ≤ – причинные связи, ⊢ – конфликты) Декартово замкнутые категории ▶ Автоматически интуиционистская логика. ▶ Автоматически λ-исчисление. ▶ Пока найдена только CSP12. 11 Glynn Winskel, Event Structures 12 Потому что ДЗК ⊂ СМК. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 30 / 56
  • 48. РАспределёный Интуиционистский Движок ▶ Тьюринг-полные открытые потоки данных. ▶ Ресурсопластичность. ▶ Выразительность и простота: ▶ близость к λ-исчислению; ▶ рекурсивность; ▶ неопределённость только по необходимости; ▶ однородное описание потоков данных между разными подсистемами: {CPU, GPGPU, MIC, FPGA, host, cluster, web, …}2 . ▶ Высокая производительность: ▶ совмещённые рассчёты и обмены данными; ▶ отсутсвие избыточных копирований; ▶ распределённый рассчёт потока управления. ▶ Независимость от: ▶ языка программирования ▶ и аппаратуры: FPGA, сетевые GPGPU, APU, … Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 31 / 56
  • 49. Безграничный РАЙД HW HW RiDE RiDE • • • • • • • • • • • • • • • Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 32 / 56
  • 50. РАЙД с разных точек зрения ▶ Открытые динамические рекурсивные графы потоков данных. ▶ CSP со стабильными событиями формирования данных. ▶ Λ с распределёнными переменными и коммутативной редукцией. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 33 / 56
  • 51. РАЙД API ▶ Примитивы обмена данными 1. Блок данных. 2. Контакт ▶ (pin :a :b :c ”hello”). 3. Очередь ▶ (zip (str (+ 1 2)) ”kitty”). ▶ Указатели на распределённые структуры 4. Диапазон путей ▶ (! pin :a (span ””) :c) ▶ (? pin (span ”x y z” :Z)) ▶ (! zip (str (+ 1 2)) ”kitty”) ▶ (? zip). Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 34 / 56
  • 52. РАЙД API ▶ Поток вычисления 5. Продолжение. 6. Процесс. ▶ Операции 1. Запись блока данных ▶ (:= (! pin :a) ”hello kitty”). 2. Формирование продолжения ▶ (run + 1 (pin :a) (! pin :c)). 3. Системные процедуры: ▶ fork, done, update. ▶ Сборка мусора Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 35 / 56
  • 53. Примитивы для обмена данными ▶ Блоки данных: ▶ массивы данных ▶ c уникальными идентификаторами. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 36 / 56
  • 54. Примитивы для обмена данными ▶ Блоки данных: ▶ массивы данных ▶ c уникальными идентификаторами. ▶ Контакты (pin :A ”hello kitty” :P): ▶ распределённые ssa-переменные; ▶ источник определённости. ▶ Задаются путями: ▶ списки строк, привычные по файловым системам; ▶ откладываются от корней (просто уникальные идентификаторы). P Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 36 / 56
  • 55. Примитивы для обмена данными ▶ Блоки данных: ▶ массивы данных ▶ c уникальными идентификаторами. ▶ Контакты (pin :A ”hello kitty” :P): ▶ распределённые ssa-переменные; ▶ источник определённости. ▶ Задаются путями: ▶ списки строк, привычные по файловым системам; ▶ откладываются от корней (просто уникальные идентификаторы). P Z Z Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 36 / 56
  • 56. Примитивы для обмена данными ▶ Очереди (zip :A ”hello kitty” :Z): ▶ переменчивая идентичность; ▶ открытость системы; ▶ «застёжка» чтений и записей. Z Z P Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 37 / 56
  • 57. Все вычисления параллельны, распределены и локальны. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 38 / 56
  • 58. Продолжения ▶ На самом деле, ничего особенного, обычные продолжения. ▶ Но в РАЙД они формируются массово и параллельно. ▶ Активируются асинхронно по готовности аргументов. ▶ (run F ”hello kitty” (pin :p) (zip :z) (! zip :Z)) P Z Z Z Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 39 / 56
  • 59. Формирование графа через продолжения ▶ (run F ”hello kitty” (pin :p) (zip :z) (! zip :Z)) P Z Z Z Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 40 / 56
  • 60. Формирование графа через продолжения ▶ (run F ”hello kitty” (pin :p) (zip :z) (! zip :Z)) ▶ (define (F hk p z z-ref) P Z Z Z Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 40 / 56
  • 61. Формирование графа через продолжения ▶ (run F ”hello kitty” (pin :p) (zip :z) (! zip :Z)) ▶ (define (F hk p z z-ref) ▶ (:= z-ref (+ p z)) P Z Z Z Z Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 40 / 56
  • 62. Формирование графа через продолжения ▶ (run F ”hello kitty” (pin :p) (zip :z) (! zip :Z)) ▶ (define (F hk p z z-ref) ▶ (:= z-ref (+ p z)) ▶ (run h (pin :R) (pin :S)) P Z Z Z Z R S Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 40 / 56
  • 63. Формирование графа через продолжения ▶ (run F ”hello kitty” (pin :p) (zip :z) (! zip :Z)) ▶ (define (F hk p z z-ref) ▶ (:= z-ref (+ p z)) ▶ (run h (pin :R) (pin :S)) ▶ (run g (zip z-ref) (pin :P)) P Z Z Z Z R S P Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 40 / 56
  • 64. Формирование графа через продолжения ▶ (run F ”hello kitty” (pin :p) (zip :z) (! zip :Z)) ▶ (define (F hk p z z-ref) ▶ (:= z-ref (+ p z)) ▶ (run h (pin :R) (pin :S)) ▶ (run g (zip z-ref) (pin :P)) ▶ (run f (zip z-ref) (pin :Q))) P Z Z Z Z R S Q ZP Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 40 / 56
  • 65. Управление распределённое, рассчёты локальны Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 41 / 56
  • 66. Диапазоны: распределённый контроль потока ▶ Все pin и zip независимы, работа с ними параллельна. ▶ Необходим механизм работы со структурами данных: ▶ указание на структуры; ▶ передача их в процедуры; ▶ обновление больших распределённых структур; ▶ рекурсия: ▶ кадры активации процедур, ▶ произведение для ДЗК. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 42 / 56
  • 67. Диапазоны: распределённый контроль потока ▶ Все pin и zip независимы, работа с ними параллельна. ▶ Необходим механизм работы со структурами данных: ▶ указание на структуры; ▶ передача их в процедуры; ▶ обновление больших распределённых структур; ▶ рекурсия: ▶ кадры активации процедур, ▶ произведение для ДЗК. ▶ Диапазоны. ▶ 4 варианта: {?-чтение, !-запись} × {pin, zip}. ▶ Просто блок данных, отвечающий на два вопроса. 1. Попадает ли путь в диапазон? 2. Если попадает, от какого он корня идёт? Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 42 / 56
  • 68. Конструкторы диапазонов ▶ (! pin A Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 43 / 56
  • 69. Конструкторы диапазонов ▶ (! pin A ▶ :a :b Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 43 / 56
  • 70. Конструкторы диапазонов ▶ (! pin A ▶ :a :b ▶ (span :c :d) Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 43 / 56
  • 71. Конструкторы диапазонов ▶ (! pin A ▶ :a :b ▶ (span :c :d) ▶ :e Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 43 / 56
  • 72. Конструкторы диапазонов ▶ (! pin A ▶ :a :b ▶ (span :c :d) ▶ :e ▶ (span ””)) Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 43 / 56
  • 73. Конструкторы диапазонов ▶ (! pin A ▶ :a :b ▶ (span :c :d) ▶ :e ▶ (span ””)) Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 43 / 56
  • 74. Конструкторы диапазонов ▶ (! pin A ▶ :a :b ▶ (span :c :d) ▶ :e ▶ (span ””)) ▶ (update C …). Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 43 / 56
  • 75. Конструкторы диапазонов ▶ (! pin A ▶ :a :b ▶ (span :c :d) ▶ :e ▶ (span ””)) ▶ (update C B …). Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 43 / 56
  • 76. Конструкторы диапазонов ▶ (! pin A ▶ :a :b ▶ (span :c :d) ▶ :e ▶ (span ””)) ▶ (update C B …). Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 43 / 56
  • 77. Сложность и важность диапазонов ▶ Вычислительно непростые префиксные деревья. ▶ Можно существенно упростить, специализировав под: ▶ многомерные массивы с целочисленными индексами; ▶ одномерные ассоциативные массивы; ▶ записи с фиксированным набором полей. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 44 / 56
  • 78. Сложность и важность диапазонов ▶ Вычислительно непростые префиксные деревья. ▶ Можно существенно упростить, специализировав под: ▶ многомерные массивы с целочисленными индексами; ▶ одномерные ассоциативные массивы; ▶ записи с фиксированным набором полей. ▶ Диапазоны обеспечивают. 1. Корректность потока данных: ▶ простая проверка пересечения диапазонов в порождаемых продолжениях. 2. Произведения в категории потоков и её замкнутость. 3. Сборку мусора: ▶ семантика диапазонов монотонная; ▶ всегда достаточно точно известно, что потребуется; 4. «Бесплатные» следствия из сборки мусора: ▶ обнаружение ошибок потока данных, в том числе взаимоблокировок; ▶ обработку ошибок приложения, например арифметических; ▶ контроль за ресурсами процессов. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 44 / 56
  • 79. ▶ Рассчёты диапазонов параллельны и локальны. ▶ Сборка мусора нелокальный процесс, но: ▶ асинхронный, ▶ фоновый, ▶ мир не нужно останавливать. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 45 / 56
  • 80. Процессы и руление Процессы ▶ Дополнительный идентификатор для продолжений. ▶ Необходим для ручного завершения вычисления. ▶ Помогает изолировать ошибки: классика UNIX. Руление ▶ (run … (meta :cluster 2 :node 5 :ram 0 :gpu 1)). ▶ (! pin … (meta :check-point)). Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 46 / 56
  • 81. Результаты на текущий момент MPI C99 -1 MPI C99 -2 MPI Python RiDE C99 RiDE AST Hadoop Java RiDE C99 -MR RiDE AST -MR 209 86 101 46 71 91 35 57 54 21 82 34 Строккода ¬lib/¬load lib/¬load lib/load Рис.: Объём кода параллельного умножения матриц в разных системах. lib – использование библиотеки для локальных матричных операций; load – работа с внешними данными. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 47 / 56
  • 82. Синтаксис, безусловно, очень важен13 ▶ S-выражение абстрактного синтаксиса (for-each i (range l) j (range n) k (range m) (run matrix-mul (! zip ’i.j) (pin mat-a ’i.k) (pin mat-b ’k.j))) ▶ Аналогичный код на C99 for (unsigned i = 0; i < L; i++) for (unsigned j = 0; j < N; j++) { const int sum_zip = rzip(rfmt(”%u.%u”, i, j)); for (unsigned k = 0; k < M; k++) { const int aik_pin = rpin(A, rfmt(”%u.%u”, i, k)), bkj_pin = rpin(B, rfmt(”%u.%u”, k, j)); rrun(”matrix_mul”, rref(WR, sum_zip), aik_pin, bkj_pin); } } 13 И для НИР лучше, когда его нет. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 48 / 56
  • 83. Пример: распределённое умножение матриц (define block-n 64 l 100 n 200 m 300) (define (distributed-matrix-mul mat-r mat-a mat-b) (for-each i (range l) j (range n) k (range m) (run matrix-mul (! zip ’i.j) (pin mat-a ’i.k) (pin mat-b ’k.j))) (let queue-sum (lambda result sum-ref blocks n-blocks (if (= 0 n-blocks) (run (lambda r s (:= r s)) (! pin result) (pin sum-ref)) (do (run matrix-add (! pin :sum) (pin sum-ref) (zip blocks)) (run queue-sum (! pin result) (? pin :sum) (? zip block-queue) (- n-blocks 1))))) (for-each i (range l) j (range n) (run queue-sum (! pin mat-r ’i.j) (ref (zero-matrix)) (? zip ’i.j) m)))) Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 49 / 56
  • 84. Пример: группы продолжений (for-each i (range l) j (range n) k (range m) (run matrix-mul (! zip ’i.j) (pin mat-a ’i.k) (pin mat-b ’k.j))) Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 50 / 56
  • 85. Пример: развёртка циклов (let queue-sum (lambda result sum-ref blocks n-blocks (if (= 0 n-blocks) (run (lambda r s (:= r s)) (! pin result) (pin sum-ref)) (do (run matrix-add (! pin :sum) (pin sum-ref) (zip blocks)) (run queue-sum (! pin result) (? pin :sum) (? zip block-queue) (- n-blocks 1))))) ...) Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 51 / 56
  • 86. Пример: блоки данных в аргументах (for-each i (range l) j (range n) (run queue-sum (! pin mat-r ’i.j) (ref (zero-matrix)) (? zip ’i.j) m)) Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 52 / 56
  • 87. Пример: интерактивное распределённое пространство (let watchdog (lambda zproc start (if (not (= zproc :done)) (run watchdog zproc start) (print ”time:” (- (current-time) start)))) (define (main . args) (run watchdog (zip ”proc”) (current-time)) (run fork (! zip ”proc”) distributed-matrix-mul (! pin (nth args 1) (span ””)) (? pin root (list (nth args 2) (nth args 3)))) (run := (! zip api :update-root) (? pin)))) Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 53 / 56
  • 88. Плюсы и минусы в теории + РАЙД – это безграничный сетевой компьютер с λ-исчислением: ▶ ДЗК потоков данных и, как следствие, обычный функциональный код; ▶ возможна статическая проверка семантики программ; ▶ сложность программирования ниже уровня MapReduce; ▶ библиотеки функций в распределённом пространстве данных. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 54 / 56
  • 89. Плюсы и минусы в теории + РАЙД – это безграничный сетевой компьютер с λ-исчислением: ▶ ДЗК потоков данных и, как следствие, обычный функциональный код; ▶ возможна статическая проверка семантики программ; ▶ сложность программирования ниже уровня MapReduce; ▶ библиотеки функций в распределённом пространстве данных. + Живучесть: ▶ нет единых точек отказа; ▶ возможность отслеживать и обрабатывать ошибки; ▶ прозрачная для программиста поддержка контрольных точек. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 54 / 56
  • 90. Плюсы и минусы в теории + РАЙД – это безграничный сетевой компьютер с λ-исчислением: ▶ ДЗК потоков данных и, как следствие, обычный функциональный код; ▶ возможна статическая проверка семантики программ; ▶ сложность программирования ниже уровня MapReduce; ▶ библиотеки функций в распределённом пространстве данных. + Живучесть: ▶ нет единых точек отказа; ▶ возможность отслеживать и обрабатывать ошибки; ▶ прозрачная для программиста поддержка контрольных точек. + Производительность. ▶ руление асинхронными потоками данных; ▶ блоки данных в общей памяти можно не копировать; ▶ децентрализованное хранение данных с параллельным доступом; ▶ все операции управления потоком, кроме сборки мусора – независимые; ▶ все управляющие стркутуры РАЙД – это CRDT (kudos: В. Грищенко). Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 54 / 56
  • 91. Плюсы и минусы на практике + Выразительность проверена на компиляторе Си99 для МультиКлет: ▶ проблемно ориентированный язык с моделью RiDE; ▶ сложные обмены данными в процедурах компиляции – отличный тест; ▶ программирование, на удивление, оказалось простым и весёлым. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 55 / 56
  • 92. Плюсы и минусы на практике + Выразительность проверена на компиляторе Си99 для МультиКлет: ▶ проблемно ориентированный язык с моделью RiDE; ▶ сложные обмены данными в процедурах компиляции – отличный тест; ▶ программирование, на удивление, оказалось простым и весёлым. + Живучесть проверена на прототипной реализации и кластере от РСК. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 55 / 56
  • 93. Плюсы и минусы на практике + Выразительность проверена на компиляторе Си99 для МультиКлет: ▶ проблемно ориентированный язык с моделью RiDE; ▶ сложные обмены данными в процедурах компиляции – отличный тест; ▶ программирование, на удивление, оказалось простым и весёлым. + Живучесть проверена на прототипной реализации и кластере от РСК. − Производительность: ▶ работаем над этим; ▶ систему можно строить из простых независимых компонент: ▶ серверы блоков данных, ▶ серверы контактов, ▶ серверы очередей, ▶ серверы диапазонов и сборки мусора, ▶ планировщики, ▶ трамплины; ▶ опыт Hadoop внушает некоторый оптимизм. Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 55 / 56
  • 94. Спасибо за внимание m.bakhterev@imm.uran.ru Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 56 / 56