Автоматический синтез сценариев численного моделирования на базе теории вычислительных моделей
В основе проекта лежит теория вычислительных моделей. Эта теория позволяет вкладывать в компьютер знания в такой форме, что он может автоматически комбинировать эти знания друг с другом и получать (синтезировать) новые решения и новые, более эффективные способы достижения уже существующих. Проект посвящен применению этой теории для автоматизации такого трудоёмкого процесса, как проведение серий численных экспериментов. На этом примере участники проекта познакомятся как с реалиями численного моделирования на параллельных компьютерах, так и тем, как автоматизировать то, что автоматизировать непросто.
Разработка переносимой run-time системы фрагментированного программирования на базе веб-технологий
Веб-технологии являются переносимой платформой, объединяющей широчайший класс вычислителей – от мобильных телефонов до суперкомпьютеров. Технология фрагментированного программирования предназначена для объединения разнородных ресурсов в общую вычислительную сеть для совместного решения большой задачи. Поэтому данный проект посвящён созданию исполнительной системы на базе веб-технологий.
Управление поведением параллельных программ в рамках технологии фрагментированного программирования
Проект посвящён изучению концепции поведения параллельных программ. Одним из важнейших отличий параллельных программ от последовательных является их выраженный недетерминизм исполнения, т.е. исполнение даже на одних и тех же входных данных может проходить существенно разными путями за счёт влияния сетевых задержек, переключения потоков и прочих факторов. Множество возможных реализаций называется поведением программы. В правильно написанной параллельной программе это не приводит к ошибкам, однако может существенно влиять на нефункциональные свойства программы – расход памяти, время выполнения, нагрузка на коммуникационную подсистему. В рамках проекта участники познакомятся с подходом технологии фрагментированного программирования для контроля поведения параллельной программы. Для этого на базе учебной системы фрагментированного программирования ими будут реализованы системные модули, влияющие на поведение параллельной программы.
Требования к участникам: уверенное владение языком С++ на базовом уровне.
В результате участники:
- Узнают о проблематике недетерминизма и управления поведением параллельных программ
- Научатся разрабатывать параллельные программы с заданными поведенческими свойствами
Разработка распределенной система сбора и анализа данных
Руководитель: Городничев Максим Александрович
Система состоит из множества компонентов, осуществляющих сбор данных, сервера, принимающего данные на хранения и обработку, веб-сервера для работы пользователей с данными: задания процедур обработки, визуализации данных, результатов обработки. Для обработки данных осуществляется их отправка на высокопроизводительную вычислительную систему, где выполняется (параллельная) программа обработки данных.
Требования к участникам: уверенное программирование в С/С++, знание Linux.
Студенты познакомятся с проблемой сбора и обработки данных на высокопроизвдительных вычислительных системах, получат опыт разработки сложной распределенной системы, включая участие в формулировании требований к системе, выработке проектных решений и применения конкретных технологий в командной работе.
Разработка библиотеки для обеспечения подстройки вычислений под динамическое изменение количества вычислительных узлов, доступных параллельной программе
Руководитель: Городничев Максим Александрович
Мастрер-класс "Векторизация программ"
Аннотация: Цель мастер-класса – освоить векторизацию как способ ускорения работы программ. Участники мастер-класса познакомятся с различными способами векторизации программ, изучат возможности различных компиляторов по автоматической векторизации, попробуют векторизовать программу вручную, научатся оценивать качество векторизации.
Объемная визуализация научных данных
Руководитель: Щукин Георгий Анатольевич
Предлагается разработать приложение для объемной визуализации трехмерных научных данных (volume rendering). Данные - поле, задается трехмерной сеткой (массивом) значений. Нужно исследовать и разработать один из (или оба) методов построения итогового изображения. В первом методе - texture mapping - предполагается использование современных средств графической библиотеки OpenGL. Во втором методе - ray casting - все расчеты предполагается проводить вручную на CPU (возможно дальнейшее перенесение части расчетов на GPU). Для второго метода предполагается разработка параллельной многопоточной и/или MPI реализации.
Требования к участникам: знание C/C++, основ компьютерной графики и современного OpenGL, математики (линейная алгебра), многопоточного программирования, MPI.
Что получат участники в итоге: опыт разработки графических и параллельных (многопоточных, распределенных) приложений, изучение основ объемной визуализации.
Язык параллельного программирования высокого уровня
Руководитель: Щукин Георгий Анатольевич
Предлагается разработать простой высокоуровневый язык параллельного программирования. Основные возможности языка - параллельные вычисления на сетках и массивах. Предполагается генерирование из программы на языке параллельной многопоточной С++ программы для машин с общей памятью. Возможна дополнительная генерация CUDA-версии для машин с GPU. Компоненты для разработки - компилятор/транслятор с языка (для разработки предполагается использовать модуль ply языка Python, lexx/yacc или средство по выбору), генератор C++/CUDA кода, исполнительная система (вспомогательные средства управления данными и вычислениями) для использования сгенерированным кодом.
Требования к участникам: знание C/C++, CUDA, Python, основ и средств параллельного многопоточного программирования, основ трансляции/компиляции.
Что получат участники в итоге: опыт разработки нового языка программирования, опыт разработки транслятора/компилятора, опыт разработки средств поддержки параллельного программирования.