«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
"Сеть - это компьютер. Снова" Бахтерев Михаил, ИММ УрО РАН
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
10. Э. Таненбаум1
узнаёт о микросервисах
1
Aвтор MINIX, RFID-вируса и спора с Л. Торвальдсом о судьбах операционных систем.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 4 / 56
13. Клиент-серверная архитектура
▶ Легко, когда:
▶ множество изолированных друг от друга сессий;
▶ поддержано решающей все проблемы БД.
▶ Тяжело, если необходимо:
▶ рассчитать выброс гильзы из пушки Су-35;
▶ смоделировать работу сердца;
▶ обучить гигантскую нейронную сеть;
▶ оценить поведение платья на конкретной фигуре;
▶ решить любую другую задачу супервычислений.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 7 / 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
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
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
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
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
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
66. Диапазоны: распределённый контроль потока
▶ Все pin и zip независимы, работа с ними параллельна.
▶ Необходим механизм работы со структурами данных:
▶ указание на структуры;
▶ передача их в процедуры;
▶ обновление больших распределённых структур;
▶ рекурсия:
▶ кадры активации процедур,
▶ произведение для ДЗК.
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 42 / 56
67. Диапазоны: распределённый контроль потока
▶ Все pin и zip независимы, работа с ними параллельна.
▶ Необходим механизм работы со структурами данных:
▶ указание на структуры;
▶ передача их в процедуры;
▶ обновление больших распределённых структур;
▶ рекурсия:
▶ кадры активации процедур,
▶ произведение для ДЗК.
▶ Диапазоны.
▶ 4 варианта: {?-чтение, !-запись} × {pin, zip}.
▶ Просто блок данных, отвечающий на два вопроса.
1. Попадает ли путь в диапазон?
2. Если попадает, от какого он корня идёт?
Бахтерев, Васёв (ИММ, Lact) RiDE ДАМП-2017 42 / 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
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