====== О проекте ====== В проекте изучаются методы разработки программ, способных эффективно исполняться на произвольной совокупности вычислительных ресурсов: вычислительных и графических ядрах процессора; отдельных компьютерах, кластерах и облаках, объединенных сетью Интернет. В чем актуальность разработки таких программ? С одной стороны, они используются в мега-проектах для решения задач, требующих сверхбольшой вычислительной мощности. Здесь важен объем вычислений, который сложно или невозможно выполнить даже на суперкомпьютере. Широко известный пример – это обработка данных эксперимента на Большом адронном коллайдере по обнаружению бозона Хигса. С другой стороны, даже в небольших проектах часто требуется большая вычислительная мощность. В этом случае решающим фактором является себестоимость вычислительных ресурсов. Получить недорогие вычислительные ресурсы можно за счет использования «не специализированных» ресурсов в период их временного простоя по основному назначению. Примером является зонтичный проект BOINC, который объединяет исследователей из разных отраслей знаний и обычных добровольцев, предоставляющих исследователям свои компьютеры для вычислений посредством сети Интернет. Помимо пользователей персональных компьютеров и мобильных устройств, простаивающие ресурсы во временное использование могут предоставить облачные провайдеры в виде бесплатных или недорогих виртуальных машин. Другой пример – кластеры и суперкомпьютеры. Обычно это высокозагруженные системы, но в силу их большой производительности объем простаивающих ресурсов также значителен и может быть использован. У предприятий, где много компьютеризированных рабочих мест, также велик объем простаивающих ресурсов. Например, в ночные часы компьютеры предприятия потенциально доступны для решения производственных вычислительных задач. Наш проект ставит целью популяризацию перечисленных выше подходов использования вычислительных ресурсов через сеть Интернет. Для этого мы развиваем оригинальную технологию программирования в парадигме акторов и задач, упрощающую организацию вычислений на произвольной совокупности ресурсов, в первую очередь в образовательных целях и для автоматизации научных исследований, а в перспективе – для решения широкого круга прикладных задач. ===== Направления исследований ===== Проблемы организация вычислений на произвольной совокупности вычислительных ресурсов относятся к области параллельных и распределенных вычислений, включая грид-вычисления, гетерогенные вычисления, многозадачные вычисления, языки и системы управления потоками работ и другие родственные направления компьютерных наук. Мы разрабатываем синтетический подход, опирающийся на результаты в перечисленных направлениях, особенностью которого является описанное ниже видение проблематики и методологии организации вычислений с точки зрения модели вычислений, библиотеки времени исполнения, программирования и генерации кода, программной инфраструктуры. ==== Модель вычислений ==== В основе проекта лежит модель вычислений, позволяющая сформировать математически точное и самодостаточное описание вычислительного процесса, чтобы на его основе можно было построить программу, исполняющуюся на произвольной совокупности вычислительных ресурсов. Точное и привычное для программистов описание последовательного вычислительного процесса – это алгоритм. Последовательные алгоритмы самодостаточны в том смысле, что не привязаны к конкретному механизму выполнения. Для описания вычислительного процесса мы используем последовательные недетерминированные алгоритмы специальной структуры, распараллеливание которых позволяет получить искомые программы. Таким образом, программирование алгоритма для исполнения на произвольной совокупности вычислительных ресурсов понимается как эквивалентное преобразование исходного алгоритма (последовательного либо параллельного) к новому алгоритму специальной структуры. Наш подход близок к модели акторов Хьюитта, алгоритмическим скелетам Коула, вычислениям на основе задач и отражает классическое представление о содержании теории программирования как задачи отображения алгоритма на заданное вычислительное окружение. Наш подход на основе математической модели вычислительного процесса можно рассматривать как альтернативу языкам описания потоков работ (CWL и др.); промежуточному программному обеспечению (HTCondor и др.); набору высокоуровневых алгоритмических скелетов с индивидуальными моделями исполнения (map-reduce и др.). === Задачи исследований === - Исследование семантики модели с использованием математического аппарата темпоральной логики Лампорта для точного понимания смысла «распараллеливания» в нашей модели. - Разработка прикладных и обобщенных параллельных алгоритмов (алгоритмических скелетов), а также приемов программирования в терминах модели. - Разработка методов анализа параллельных алгоритмов, ориентированных на используемую в проекте модель вычислений. ==== Библиотека времени исполнения ==== Особенностью библиотеки времени исполнения является ориентация на синхронизацию параллельных задач на многоядерных/многопроцессорных компьютерах с общей/разделяемой памятью. Для запуска и исполнения задач мы используем сторонние системы и библиотеки, например, OpenMP, стандартную библиотеку языка C++, MPI, платформу Everest. Эта особенность обеспечивает расширяемость для использования с разными системами управления задач, компактность кода, а также позволяет эффективно синхронизировать очень большое количество задач малой длительности счета. Текущая реализация библиотеки времени исполнения выполнена на языке С++. === Задачи исследований === - Оптимизация кода библиотеки времени исполнения с целью повышения производительности. - Исследование производительности на разных платформах в алгоритмах мелкогранулярных вычислений. - Разработка, оптимизация и адаптация под библиотеку времени исполнения интерфейсных модулей к сторонним системам управления задачами. ==== Программирование и генерация кода ==== Наш подход позволяет применять любой алгоритмический язык программирования или псевдокод для передачи семантики модели вычислений, но программисту требуется поддерживать определенную структуру алгоритма при написании кода, и получающийся код может оказаться довольно объемным. Для преодоления этих сложностей мы применяем автоматизацию программирования, относящуюся к метапрограммированию на основе препроцессора. В проекте разрабатывается набор инструментов, включающий препроцессор кода и кодогенератор, управляемый компактным языком. Язык кодогенератора позволяет лаконично описать свойства типов программы: сообщения, принимаемые и отправляемые акторами; задачи, запускаемые в их контексте. На этой основе автоматически формируется структура программы. === Задачи исследований === - Расширение функционала инструментов: сокрытие разметки, задающей структуру кода, систематизация функций препроцессора кода для манипуляции с блоками кода и разметки. - Переход на новый принцип генерации кода: использование языка С++ как входного языка генератора кода вместо используемого в текущей реализации специального доменного языка. - Развитие библиотек обобщенного программирования на основе нового принципа генерации кода: описание алгоритмических скелетов, описание регулярных структур из акторов и сообщений, описание идиом программирования. ==== Программная инфраструктура ==== Исследования в области программной инфраструктуры направлены на практическое применение проекта в образовательных и исследовательских целях. Мы стремимся к удобству работы с программами в соответствии с современными требованиями развертывания на произвольных виртуальных машинах в облаке и работы через веб-интерфейс в браузере. Для поддержки этих возможностей в проекте ведутся исследования в области технологий системной интеграции: контейнеризации приложений Docker; интерактивной разработки приложений для математического моделирования, анализа данных и искусственного интеллекта проекта Jupyter; платформы Everest для управления запуском приложений на произвольных ресурсах; протокола IPFS для организации распределенного хранения данных в сети Интернет. === Задачи исследований === - Разработка системных механизмов развертывания для виртуальных лабораторий: интеграция комплекта разработки программ проекта с системами JupyterHub и Everest. - Разработка виртуальных лабораторий для организации практических занятий по программированию и автоматизации научных исследований, в том числе с возможностью одновременного запуска параллельных задач на нескольких вычислительных ресурсах. - Улучшение интеграции комплекта разработки программ проекта с компилятором и системой контроля версий в интерфейсе JupyterLab. ===== Научный руководитель ===== Востокин Сергей Владимирович, д.т.н., доцент, заведующий кафедрой программных систем, Самарский университет ===== Участники ===== Бобылева Ирина Владимировна, окончила специалитет и аспирантуру Самарского университета, работает программистом в Ракетно-космическом центре «Прогресс». Попов Стефан Николаевич, окончил Самарский университет и магистратуру Университета Иннополис, работает в компании SORAMITSU, аспирант кафедры программных систем Самарского университета. ===== Выпускники ===== Артамонов Ю., Царёв Д., Дун Цзе, Чубаров Н., Водянов В., Потапов Д., Черномырдин И., Сайманина Е., Уланов Д., Коростелев В., Кошелев В, Зекцер И., Одобеску Д., Кантеев М., Полукаров В., Шапилов В., Каримов С., Симонович Н., Архипова Е., Кириченко Е., Макагонова Д., Гусаков С., Назаров Ю., Болтанов С., Борисов А., Усков С., Мартынюк В., Савинкова Ю., Литвинов В., Коленбет А., Хайрутдинов А., Скорюпина Е., Наширванов Д. ===== Практические результаты ===== Templet Web – система управления задачами кластера «Сергей Королёв» Самарского университета; предназначена для проведения лабораторных занятий, исследовательских работ и других занятий на кластере с использованием веб-браузера на простаивающих узлах кластера; Templet SDK x3 – третья (актуальная) экспериментальная версия комплекта для разработки программного обеспечения, модель акторов для синхронизации разнотипных задач; усовершенствованная поддержка платформы Everest; развертывание на платформе Binder; Templet SDK x2 – вторая экспериментальная версия комплекта для разработки программного обеспечения, модель акторов для систем с общей памятью; интегрированная поддержка платформы Everest; развертывание на платформе Binder и в системе Templet Web; GraphPlus SDK x1 – первая экспериментальная версия комплекта для разработки программного обеспечения, ориентирована на визуальное программирование. ===== Результаты получены и использовались ===== * в проекте «Разработка комплекса технологий использования ресурсов суперкомпьютера «Сергей Королёв» в целях развития инновационной и научно-образовательной среды университета» (программа повышения конкурентоспособности Самарского университета среди ведущих мировых научно-образовательных центров на 2013-2020 годы, «Проект 5-100»); * в проекте «Разработка фундаментальных основ аналитического синтеза регулярных и хаотических процессов в динамике космических аппаратов» (Госзадание № 9.1616.2017/4.6). ===== Подготовленные диссертации ===== Востокин Сергей Владимирович, МОДЕЛЬ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ ВИЗУАЛЬНОГО ГРАФ- ОРИЕНТИРОВАННОГО ЯЗЫКА, диссертация на соискание учёной степени кандидата технических наук по специальности 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. ===== Публикации ===== * [[https://ssau.ru/staff/60085001-vostokin-sergey-vladimirovich/publ|Публикации Востокина С.В. на сайте Самарского университета]] * [[главная| Избранные публикации участников проекта (с 2010 года)]]