Switch lang: Русский \ English

"Cloud Parallel Virtual machine - CPVM" Liric


Лирика

Начну с целей системы, с того, что она должна давать полезного.

Экономия и свобода

Экономия достигается за счёт уменьшения сложности управления зависимостями в коде, выполняемой, обычно, программистом. Упрощается повторное использование наработок на одном языке в проекте, например, на другом языке программирования. Проект в целом работает быстрее на любом доступном железе, т.к. кластер самоорганизуется и им легче управлять.

Проект работает быстрее за счёт параллельности из коробки и за счёт непрерывной оптимизации гранулярности системой PTS (если её использовать).

Свобода выражается в свободе выбора языков программирования для работы с CPVM.

Автоматическое повторное использование наработок

Code Base, с которым работает CPVM, содержит как сам код (PTS вариант), так и зависимости и свойства фрагментов кода и сервисов, которые запускаются на внешних исполнителях.

Фрагмент кода может быть чистой функцией или не чистой - это не важно.

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

Асинхронность и анализ зависимостей

Все фрагменты кода будут выполняться асинхронно и, по возможности, одновременно.

Программисту не надо что-то указывать специально, надо просто вызвать фрагмент.

Свобода выбора языка

Фрагменты кода могут исполняться во внешних вычислителях и могут быть написаны на любом языке программирования.

Если описывать каждый не большой фрагмент на любимом языке и вызывать их из друга через CPVM, то задача распараллеливания решается на уровне целиковых фрагментов. PTS не обрабатывает такие фрагменты: не разбивает их и не склеивает, но CPVM сам обнаруживает зависимости и определяет порядок запуска.

Простота эксплуатации

Автоматический анализ информации об эффективности использования вычислительных ресурсов

CPVM это профилирующий (Profile-guided optimization) и оптимизирующий (Adaptive_optimization) рантайм. На эти темы существуют и научные работы и практические эксперименты, которые ложаться в jvm или jit компиляторы, такие как, например, pypy.

Мы собираем определенную статистику и используем её для:

  • оптимизации стратегии исполнения кода
  • управлением зернистостью разбиения проекта на потоки
  • анализ зависимостей фрагментов кода для улучшения повторного использования фрагментов кода

Оптимизации зернистости и парралельности

Собранная информация - это знания, полученные о проекте и коде в процессе исполнения.

Эта информация , кроме прочего, позволяет подобрать наилучшую гранулярность распределения кода по потокам (threads).

Командная работа

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

Я хотел создать VM вкоторой будет безопасно исполняться много программ разных пользователей.

Индивидуальные и групповые виртуальные окружения для коллективной удаленной отладки на реальных данных без опасности что-то сломать

Я хотел чтобы можно было работать с реальными данными в процессе разработки и тестирования экспериментальных возможностей. И при этом ничего не ломалось.

Я также хотел, чтобы два и более программсита могли работать в рамках одной транзакции с разными частями системы как зависимо, так и не зависимо.

Всё это позволяют транзакции, которые есть в CPVM.

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

Всё это есть и в больших субд тоже, но у нас это выведено в важное понятие в рамках облачной VM - CPVM. Тогда как для других VM субд - это внешняя подсистема и область ответственности ограничивается квалификацией программистов.

Кластеры и суперкомпьютеры - они такие разные

Как вам "Возможность генерации параллельной версии решения для выбранного типа райнтайма, чтобы выпускать железо с вашей прошивкой" ???

Например вы работаете с CUDA или работаете с MPI кластером или сами написали, что-то на QT ? (я видел и такое).

Возможно Вам нужно, чтобы проект работал на Erlang ...

Как тут может пригодиться CPVM ? - спросите Вы.

CPVM может помочь даже если Вам нужно запускать проект на ASIC кристалле.

Кодо-генерация

Мы уже сейчас запускам результаты CPVM оптимизации на FPGA.

проект разрабатывается и тестируется под CPVM.

CPVM и PTS оптимизируют гранулярность, указывает точки разбиения на фрагменты, определяют ЯПФ ярусы параллельности.

В CPVM мы получаем много важных знаний о проекте кроме самого кода.

Запускается кодо-генерация и мы получаем проект для FPGA.

подробнее об этом процесссе

Комментарии

Comments powered by Disqus
Перейти к главному содержимому