[personal profile] codedot
В связи с идеей распределенных сетей взаимодействия, хотелось бы вернуться к проекту компилятора inet, который используется в MLC для механизма read-back. Приложение было реализовано уже после подготовки формального описания проекта и строго следуя проектной документации; имели место лишь мелкие уточнения и исправления по ходу работы.

Как модифицировать компилятор inet, чтобы получить вместо него распределенную универсальную P2P-сеть взаимодействия? Обозначим гипотетическую распределенную версию inet как p2pinet.

P2P-сеть всегда основана на дублировании информации для случаев, когда одна из нод отключается от сети. Заметим, что стэк активных пар, используемый в проекте inet, - это исчерпывающая информация о редуцируемой сети взаимодействия. Чаще всего (псевдо-)активная пара состоит не из двух агентов, а из агента и (псевдо-)агента wire, который служит для разыменования. Последнее в случае P2P-сети служило бы простым запросом на дублирование информации.

В p2pinet активные пары технически нигде не хранятся в явном виде, и ноды могут даже не знать, активна ли данная конкретная связь между одним идентификатором (портом) и каким-то другим в сети. Обмен информацией и (неявное) создание новых активных пар произходило бы в такой сети с помощью операции разыменования, а собственно применение правил взаимодействия - локально на нодах ввиду нескольких причин.

Во-первых, правила могут быть приватными для группы нод. Во-вторых, правила могут иметь побочные действия, как в проекте inet. В-третьих, набор правил может быть бесконечным и очень сложным. Наконец, одно из правил может быть вычислительно затратно, например вычисление n-ного простого числа.

Следует подчеркнуть, что сами по себе сети взаимодействия неэффективны с вычислительной точки зрения - существующие процессоры справляются с вычислительными задачами несравнимо лучше. Но оптимальная редукция, вопреки названию, вообще не рассматривает вопрос о том, как проводить собственно редукцию и не предлагает никаких решений на этот счет. Вместо этого, она предлагает стратегию для объединения работы (optimal sharing). Последнее и можно было бы позаимствовать от систем взаимодействия для оптимального разделения работы и данных между частями распределенной вычислительной системы.

Конкретно эту задачу сети взаимодействия и решают на качественном уровне. Они служат своеобразным планировщиком задач, который уже, в свою очередь, управляет остальными процессорами как устройствами, чем-то похожим на OpenCL образом. Однако, в отличие от OpenCL (который тоже, в принципе, может быть использован в распределенной сети), сети взаимодействия позволили бы делать и само планирование децентрализованным, при этом избегая лишних обмена данных и дублирования работы.

Следующая схема иллюстрирует, как может быть представлена активная пара в распределенной децентрализованной сети взаимодействия (уникальные адреса и множество соединений вместо единого стека активных пар в случае компилятора inet):

[{нода x} (доп. порты) = α1 - (гл. порт)] | {сеть} | [(гл. порт) - α2 = (доп. порты) {нода y}], где

x может совпадать с y;
агенты αi могут (и должны) быть продублированы (некоторыми) другими нодами;
все главные порты, которые не соединены с доп. портами должны быть доступны в сети с уникальным идентификатором;
связь между двумя дополнительными портами может быть представлена с помощью псевдо-агента wire из проекта inet;
деревья с корнем в αi могут храниться локально вне сети пока сеть не редуцирует соответствующую активную пару.

В качестве базовой технологии можно было использовать приближающийся стандарт WebRTC, который уже, впрочем, работает в большинстве браузеров. Он был задумал для прямого видео/аудио-общения между пользователями без нагрузки на серверы, но также позволяет обмениваться произвольными данными между браузерами.

По астрономо-арифметическим соображениям, одного килобита на адрес хватает навсегда, а два килобита на уникальный идентификатор дают абсолютную гарантию отсутствия коллизий.

Такие длины идентификаторов напоминают характерные длины ключей RSA. Кстати, последний имеет гомоморфизм относительно умножения, а потому мог бы быть использован для приватных вычислений на основе той же самой распределенной вычислительной сети.

В принципе, сеть вообще могла бы функционировать редко или вовсе не взаимодействующими (под)сетями, идентификаторы агентов которых зашифрованы, к примеру, группами пользователей.

Формально на роль системы взаимодействия, на основе которой бы могла работать сеть, годятся, по крайней мере, следующие три варианта:

а) комбинаторы взаимодействия;
б) компактное представление λ-выражений;
в) универсум.

Последний предпочтительнее не только из-за неэффективности комбинаторов и функциональной чистоты λ-исчисления, но и из-за разных потребностей групп пользователей, а также возможности применить изоморфизм RSA-арифметику, используя, например, некоторые идентификаторы в качестве данных, что, в общем-то, логично, если учесть их сверх-избыточную длину.

Понятно, что система взаимодействия может иметь бесконечные сигнатуру (множество типов агентов) и множество правил взаимодействия. С помощью простого дизъюнктного объединения всех возможных систем взаимодействия мы можем получить единую универсальную систему взаимодействия, чья сигнатура содержит все возможные типы агентов, а множество правил - все возможные взаимодействия.

В обычной теории множеств это парадоксальная конструкция. Если ограничить множество систем взаимодействия только до тех, которые можно формализовать, то их становится счетное множество. А приняв во внимание астроно-арифметические соображения, то их вообще конечное множество с человеко-размерной длиной идентификаторов (килобит, в принципе, можно передать одним SMS).

Остается неясным как именно должно происходить применение правил взаимодействия и редукция сети. В частности, непонятно, можно ли, а если можно - то как именно производить проверку работу сети. Связанный вопрос возникает по поводу дублирования работы отстающими нодами: как держать их число на оптимальном уровне. Похоже, что требуется какой-то компромисс между числом дублирующих нод для надежности сети и неоптимальностью суммарной работы.

Profile

Anton Salikhmetov

November 2018

S M T W T F S
    123
45678 910
11121314151617
18192021222324
252627282930 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 10th, 2025 09:46 am
Powered by Dreamwidth Studios