В проекте изучаются методы разработки программ, способных эффективно исполняться на произвольной совокупности вычислительных ресурсов: вычислительных и графических ядрах процессора; отдельных компьютерах, кластерах и облаках, объединенных сетью Интернет.
В чем актуальность разработки таких программ? С одной стороны, они используются в мега-проектах для решения задач, требующих сверхбольшой вычислительной мощности. Здесь важен объем вычислений, который сложно или невозможно выполнить даже на суперкомпьютере. Широко известный пример – это обработка данных эксперимента на Большом адронном коллайдере по обнаружению бозона Хигса.
С другой стороны, даже в небольших проектах часто требуется большая вычислительная мощность. В этом случае решающим фактором является себестоимость вычислительных ресурсов. Получить недорогие вычислительные ресурсы можно за счет использования «не специализированных» ресурсов в период их временного простоя по основному назначению. Примером является зонтичный проект BOINC, который объединяет исследователей из разных отраслей знаний и обычных добровольцев, предоставляющих исследователям свои компьютеры для вычислений посредством сети Интернет.
Помимо пользователей персональных компьютеров и мобильных устройств, простаивающие ресурсы во временное использование могут предоставить облачные провайдеры в виде бесплатных или недорогих виртуальных машин. Другой пример – кластеры и суперкомпьютеры. Обычно это высокозагруженные системы, но в силу их большой производительности объем простаивающих ресурсов также значителен и может быть использован. У предприятий, где много компьютеризированных рабочих мест, также велик объем простаивающих ресурсов. Например, в ночные часы компьютеры предприятия потенциально доступны для решения производственных вычислительных задач.
Наш проект ставит целью популяризацию перечисленных выше подходов использования вычислительных ресурсов через сеть Интернет. Для этого мы развиваем оригинальную технологию программирования в парадигме акторов и задач, упрощающую организацию вычислений на произвольной совокупности ресурсов, в первую очередь в образовательных целях и для автоматизации научных исследований, а в перспективе – для решения широкого круга прикладных задач.
Проблемы организация вычислений на произвольной совокупности вычислительных ресурсов относятся к области параллельных и распределенных вычислений, включая грид-вычисления, гетерогенные вычисления, многозадачные вычисления, языки и системы управления потоками работ и другие родственные направления компьютерных наук.
Мы разрабатываем синтетический подход, опирающийся на результаты в перечисленных направлениях, особенностью которого является описанное ниже видение проблематики и методологии организации вычислений с точки зрения модели вычислений, библиотеки времени исполнения, программирования и генерации кода, программной инфраструктуры.
В основе проекта лежит модель вычислений, позволяющая сформировать математически точное и самодостаточное описание вычислительного процесса, чтобы на его основе можно было построить программу, исполняющуюся на произвольной совокупности вычислительных ресурсов.
Точное и привычное для программистов описание последовательного вычислительного процесса – это алгоритм. Последовательные алгоритмы самодостаточны в том смысле, что не привязаны к конкретному механизму выполнения. Для описания вычислительного процесса мы используем последовательные недетерминированные алгоритмы специальной структуры, распараллеливание которых позволяет получить искомые программы.
Таким образом, программирование алгоритма для исполнения на произвольной совокупности вычислительных ресурсов понимается как эквивалентное преобразование исходного алгоритма (последовательного либо параллельного) к новому алгоритму специальной структуры.
Наш подход близок к модели акторов Хьюитта, алгоритмическим скелетам Коула, вычислениям на основе задач и отражает классическое представление о содержании теории программирования как задачи отображения алгоритма на заданное вычислительное окружение.
Наш подход на основе математической модели вычислительного процесса можно рассматривать как альтернативу языкам описания потоков работ (CWL и др.); промежуточному программному обеспечению (HTCondor и др.); набору высокоуровневых алгоритмических скелетов с индивидуальными моделями исполнения (map-reduce и др.).
Особенностью библиотеки времени исполнения является ориентация на синхронизацию параллельных задач на многоядерных/многопроцессорных компьютерах с общей/разделяемой памятью. Для запуска и исполнения задач мы используем сторонние системы и библиотеки, например, OpenMP, стандартную библиотеку языка C++, MPI, платформу Everest.
Эта особенность обеспечивает расширяемость для использования с разными системами управления задач, компактность кода, а также позволяет эффективно синхронизировать очень большое количество задач малой длительности счета. Текущая реализация библиотеки времени исполнения выполнена на языке С++.
Наш подход позволяет применять любой алгоритмический язык программирования или псевдокод для передачи семантики модели вычислений, но программисту требуется поддерживать определенную структуру алгоритма при написании кода, и получающийся код может оказаться довольно объемным. Для преодоления этих сложностей мы применяем автоматизацию программирования, относящуюся к метапрограммированию на основе препроцессора.
В проекте разрабатывается набор инструментов, включающий препроцессор кода и кодогенератор, управляемый компактным языком. Язык кодогенератора позволяет лаконично описать свойства типов программы: сообщения, принимаемые и отправляемые акторами; задачи, запускаемые в их контексте. На этой основе автоматически формируется структура программы.
Исследования в области программной инфраструктуры направлены на практическое применение проекта в образовательных и исследовательских целях. Мы стремимся к удобству работы с программами в соответствии с современными требованиями развертывания на произвольных виртуальных машинах в облаке и работы через веб-интерфейс в браузере.
Для поддержки этих возможностей в проекте ведутся исследования в области технологий системной интеграции: контейнеризации приложений Docker; интерактивной разработки приложений для математического моделирования, анализа данных и искусственного интеллекта проекта Jupyter; платформы Everest для управления запуском приложений на произвольных ресурсах; протокола IPFS для организации распределенного хранения данных в сети Интернет.
Востокин Сергей Владимирович, д.т.н., доцент, заведующий кафедрой программных систем, Самарский университет
Бобылева Ирина Владимировна, окончила специалитет и аспирантуру Самарского университета, работает программистом в Ракетно-космическом центре «Прогресс».
Попов Стефан Николаевич, окончил Самарский университет и магистратуру Университета Иннополис, работает в компании SORAMITSU, аспирант кафедры программных систем Самарского университета.
Артамонов Ю., Царёв Д., Дун Цзе, Чубаров Н., Водянов В., Потапов Д., Черномырдин И., Сайманина Е., Уланов Д., Коростелев В., Кошелев В, Зекцер И., Одобеску Д., Кантеев М., Полукаров В., Шапилов В., Каримов С., Симонович Н., Архипова Е., Кириченко Е., Макагонова Д., Гусаков С., Назаров Ю., Болтанов С., Борисов А., Усков С., Мартынюк В., Савинкова Ю., Литвинов В., Коленбет А., Хайрутдинов А., Скорюпина Е., Наширванов Д.
Templet Web – система управления задачами кластера «Сергей Королёв» Самарского университета; предназначена для проведения лабораторных занятий, исследовательских работ и других занятий на кластере с использованием веб-браузера на простаивающих узлах кластера;
Templet SDK x3 – третья (актуальная) экспериментальная версия комплекта для разработки программного обеспечения, модель акторов для синхронизации разнотипных задач; усовершенствованная поддержка платформы Everest; развертывание на платформе Binder;
Templet SDK x2 – вторая экспериментальная версия комплекта для разработки программного обеспечения, модель акторов для систем с общей памятью; интегрированная поддержка платформы Everest; развертывание на платформе Binder и в системе Templet Web;
GraphPlus SDK x1 – первая экспериментальная версия комплекта для разработки программного обеспечения, ориентирована на визуальное программирование.
Востокин Сергей Владимирович, МОДЕЛЬ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ ВИЗУАЛЬНОГО ГРАФ- ОРИЕНТИРОВАННОГО ЯЗЫКА, диссертация на соискание учёной степени кандидата технических наук по специальности 05.13.16 – Применение вычислительной техники, математического моделирования и математических методов в научных исследованиях, защищена 6.06.2000.
Востокин Сергей Владимирович, ГРАФИЧЕСКАЯ ОБЪЕКТНАЯ МОДЕЛЬ ПАРАЛЛЕЛЬНЫХ ПРОЦЕССОВ И ЕЕ ПРИМЕНЕНИЕ В ПРОГРАММНЫХ КОМПЛЕКСАХ ЧИСЛЕННОГО МОДЕЛИРОВАНИЯ, диссертация на соискание учёной степени доктора технических наук по специальности 05.13.18 – Математическое моделирование, численные методы и комплексы программ, защищена 19.10.2007.
Литвинов Владимир Геннадьевич, РАЗРАБОТКА И ПРИМЕНЕНИЕ ТИПОВЫХ РЕШЕНИЙ ДЛЯ РАСПАРАЛЛЕЛИВАНИЯ АЛГОРИТМОВ ЧИСЛЕННОГО МОДЕЛИРОВАНИЯ, диссертация на соискание учёной степени кандидата технических наук по специальности 05.13.18 – Математическое моделирование, численные методы и комплексы программ, защищена 6.11.2015.
Артамонов Юрий Сергеевич, МОНИТОРИНГ И ПРОГНОЗИРОВАНИЕ ЗАГРУЗКИ КЛАСТЕРНОЙ СИСТЕМЫ НА ОСНОВЕ АДАПТИВНОЙ СМЕСИ МОДЕЛЕЙ, диссертация на соискание учёной степени кандидата технических наук по специальности 05.13.18 – Математическое моделирование, численные методы и комплексы программ, защищена 23.03.2018.
Бобылева Ирина Владимировна, МЕТОД ПОПАРНОЙ ОБРАБОТКИ ЭЛЕМЕНТОВ ИНФОРМАЦИОННЫХ МАССИВОВ ДЛЯ МНОГОЗАДАЧНЫХ ВЫЧИСЛЕНИЙ В ГИБРИДНОМ ОБЛАКЕ, диссертация на соискание учёной степени кандидата технических наук по специальности 2.3.5 – Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей, защищена 25.05.2022.