Кафедра Параллельных вычислительных технологий НГТУ


тел.: +7-383-3308994
email: markova@ssd.sscc.ru

О параллельном программировании

Параллельное программирование - это научная дисциплина, исследующая комплексно (в форме программы) методы конструирования целого из атомарных элементов (синтез) и методы разбиения целого на атомарные элементы (анализ), а также и технология программирования множества одновременно работающих компьютеров, согласованно решающих одну сверхбольшую задачу. Простую программу для одного компьютера написать может каждый, кто ходил в школу на урок Информатики. И хотя стать виртуозом в программировании не легче, чем в любом другом деле, существуют такие компьютеры, для которых даже мало-мальски сносную программу написать - проблема. Речь идёт о так называемых "суперкомпьютерах" - огромных ЭВМ, состоящих из тысяч мощных процессоров, соединённых высокоскоростными каналами связи. Это самые большие вычислительные ресурсы планеты. Крупнейшие суперкомпьютеры мира потребляют столько электроэнергии, сколько хватило бы на обеспечение электричеством небольшого города (на фото, зав. кафедрой В.Э.Малышкин на фоне одного из мощнейших в мире параллельных компьютеров, установленного в Японии в научном центре Jamstec, в котором изучаются процессы в нашей планете).

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

  • моделирование ядерного взрыва вместо производства самого взрыва. С тех пор как такое моделирование стало возможным, ядерные испытания в мире не производятся
  • поиск лекарств и испытание свойств различных новых химических материалов для выбора лучших вместо производства самих химических материалов, что многократно ускоряет создание новых необходимых материалов.
  • управления сложными техническими системами. На атомной станции никакие управляющие воздействия не делаются, пока новая, после воздействия, ситуация не будет просчитана на модели ядерного реактора
  • проектирование сложных технических устройств и управление ими.
  • поиск нефти, предсказание погоды, моделирование новых деталей автомобилей и самолётов, а также во многих других сферах науки и техники

Ни одна развитая промышленная отрасль сегодня не обходится без использования суперкомпьютеров. Вот для такого гиганта написать хорошую программу очень непросто. И неудивительно - ведь приходится координировать работу целой армии компьютеров!

Параллельное программирование на кафедре

Сборочная технология параллельного программирования. Чтобы облегчить нелегкий труд программистов суперкомпьютеров существует целое научное направление, которое называется технологией параллельного программирования. С одной стороны, там собраны и развиваются знания о том, как разрабатывать параллельные программы таким образом, чтобы направить все доступные вычислительные мощности на скорейшее решение прикладной задачи. С другой стороны, исследуются средства автоматизации построения параллельных программ. То есть, человек не просто пишет программу - он руководит другими программами, которые, в свою очередь, составляют для него прикладную программу. Благодаря такому подходу человек может разрабатывать программы для суперкомпьютеров со скоростью и качеством, недоступными простому программисту. В нашем научном отделе был создана и активно развивается уникальный подход к созданию параллельных программ для суперкомпьютеров - технология фрагментированного программирования. Этот проект основывается на научном фундаменте наших всемирно известных предшественников, таких как А.А. Ляпунов и А.П. Ершов, и вобрал в себя новейшие достижения в области параллельного программирования. Перед исследовательским коллективом стоят фундаментальные научные проблемы, решение которых требует высочайшей квалификации в своей области и которые являются вызовом для современной науки. Интереснейший научный проект, в котором опытные научные сотрудники работают в одном коллективе с молодыми исследователями. Даже студенты участвуют в решении пусть небольших, но вполне реальных задач, которые затем становятся их дипломными работами, а также бесценным опытом и знаниями.

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

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

NumGRID. Люди пользуются электричеством и не задумываются, как оно попало к ним в дом, на какой электростанции было произведено и как. В зависимости от распределения нагрузки в электросети, наличия сбоев на линиях электропередач или на электростанциях одна и та же квартира может получать электричество, произведенное в разных местах и пришедшее различными путям. Так потребители энергии избавлены от забот о всех сложностях ее производства и транспортировки. Таким же образом все потребители вычислительных ресурсов хотят быть избавлены от нюансов организации вычислительных систем, риска сбоев, недостатка мощностей отдельно взятого суперкомпьютера. Они хотят иметь вычислительную сеть суперкомпьютеров, в которую можно отправить задание на расчет, в которой автоматически были бы найдены подходящие ресурсы для данной задачи и которая через определенное время выдала бы результат. По аналогии с электросетью (англ. power grid) такую идеальную вычислительную сеть стали называть grid или грид. Для объединения разрозненных ресурсов в грид требуется разработка и внедрение стандартных интерфейсов для взаимодействия различных программных систем, создание инструментов для поддержки коммуникаций между вычислительными системами, которые исходно не предполагали общения между собой, развитие средств и методов разработки вычислительных программ для распределенных неоднородных вычислительных комплексов. Проект NumGRID отдела МОВВС ИВМиМГ СО РАН посвящен разработке средств коммуникации для вычислительных задач, расположенных на нескольких суперкомпьютерах, и средств управления такими распределенными задачами.

Реакционно-дифузионные процессы на поверхностях катализаторов. Исследование каталитических свойств частиц нано-размеров из материалов платиновой группы имеет как фундаментальное, так и прикладное значение. Последнее вызвано применением напылённых катализаторов, например, для очищения выхлопных газов. Поскольку натурные эксперименты очень дороги, а компьютерное моделирование традиционными методами (численным решением дифференциальных уравнений) невозможно из-за дискретности и нелинейности химических превращений, используется дискретная модель "асинхронного вероятностного клеточного автомата" для имитационного моделирования процесса на нано-уровне. Для ускорения процесса моделирования используются как современные многоядерные компьютеры, так и графические ускорители. Работа ведется совместно с Институтом катализа СОРАН.

Разработка и моделирование мелкозернистых алгоритмов и структур. Одним из основных видов параллелизма, на который опирается технология организации параллельных вычислений, является мелкозернистый параллелизм. Мелкозернистые алгоритмы и структуры представлены такими классами, как: клеточные автоматы, систолические архитектуры, мультимикропроцессорные архитектуры, ассоциативные процессоры, клеточно-нейронные сети, однородные перестраиваемые вычислители. Значение мелкозернистого параллелизма возрастает во все большей степени в связи со стремительным ростом степени интеграции СБИС и, как следствие, с лавинообразным ростом возможностей распараллеливания вычислительного процесса как на макро- так и на микро уровне, переходом к однородным СБИС с программируемой логикой. Целью проекта является овладение теоретическими и практическими знаниями формальных методов, языковых и инструментальных средств синтеза глубоко параллельных мелкозернистых алгоритмов и архитектур. Теоретическая часть дисциплины опирается на модель клеточных вычислений, названную Алгоритмом Параллельных Подстановок (АПП). Концептуально АПП объединяет в себе подстановочный характер алгоритма Маркова с пространственной параллельностью клеточного автомата, основываясь на общем для них ассоциативном механизме применения элементарных операций. Для конструирования, отладки и получения характеристик имитационных моделей мелкозернистых алгоритмов и структур используется Система имитационного моделирования (WinALT), построенная на основе АПП. WinALT - система визуального программирования. Для типичного случая локальных окрестностей клеток в клеточном пространстве программа моделирования в системе WinALT оперирует графическими образами и команд, и данных. Имитационная модель оформляется в системе WinALT как проект, содержащий множество окон, в которых представлены графические объекты модели и тексты моделирующих программ.