СуперКомпьютерные ТЕхнологии для Математического Моделирования задач аэродинамики и аэроакустики в комплексе программ NOISEtte Т.К. Козубская Институт прикладной математики им. М.В.Келдыша SCTeMM 2012, Yakutsk, Russia, November 28-30, 2011 1 Соавторы И.В. Абалакин с.н.с., к.ф.-м.н., ИПМ РАН А.В. Горобец с.н.с., к.ф.-м.н., ИПМ РАН С.А.Суков н.с., к.ф.-м.н., ИПМ РАН А.П. Дубень ½ м.н.с, ИПМ РАН; аспирант, МГТУ СТАНКИН П.А. Бахвалов аспирант, МФТИ Сектор вычислительной аэроакустики http://aeroacoustics.imamod.ru SCTeMM 2012, Yakutsk, Russia, November 28-30, 2011 2 Содержание Введение Исследовательский комплекс программ NOISEtte. Общая характеристика. Особенности. Суперкомпьютерные технологии, реализованные в NOISEtte Примеры решаемых задач Заключение SCTeMM 2012, Yakutsk, Russia, November 28-30, 2011 3 Введение Исследовательский комплекс программ (in-house code) Отличие от коммерческого пакета Как правило, более современные солверы Меньше технологических «хитростей» Как правило, «спартанский» пользовательский интерфейс Цели и задачи наука разработка новых моделей, методов и алгоритмов, технологий образование обучение студентов и аспирантов промышленность решение прикладных задач, обеспечение вычислительного эксперимента Комплекс программ NOISEtte для расчета задач аэродинамики и аэроакустики - пример исследовательского кода. Развитие началось около 10 лет назад, активно разрабатывается последние 5 лет SCTeMM 2012, Yakutsk, Russia, November 28-30, 2011 4 Структура Комплекс программ NOISEtte для математического моделирования задач аэродинамики и аэроакустики Разработан в ИММ / ИПМ им. М.В. Келдыша РАН, при участии INRIA, Sophia-Antipolis, Франция Постановка задачи Работа с сетками Параллельные средства для измельчения, декомпозиции, построения коммуникационной схемы, операторов перехода … Параметры схемы, моделей, граничных условий, средних полей, начальных данных, источников, выдачи результатов,… Вычислительное ядро Обработка данных Распределенное хранение, параллельная обработка сверхбольшого объема данных, анализ динамических данных, Фурье-анализ, визуализация… Ввод-вывод Платформонезависимая подсистема ввода/вывода, рестарты, средние поля, моментальные поля, эволюция во времени, диагностическая информация … SCTeMM 2012, Yakutsk, Russia, November 28-30, 2011 5 Общие сведения: сетки, модели, алгоритмы, … Вычислительное ядро Сетки Неструктурированные треугольные и тетраэдральные (до миллиарда элементов); структурированные как подмножество Математические модели ● Уравнения Эйлера/Навье-Стокса для сжимаемого газа (EE, NSE) Моделирование турбулентных течений ● Нелинейные уравнения для возмущений (NLDE) • DNS – различные формулировки • RANS (SRANS, URANS) ● Линеаризованные уравнения Эйлера/Навье-Стокса (LEE, LNSE) • LES ● Осредненные уравнения Рейнольдса (RANS) • гибридные RANS-LES подходы (DES, DDES) с моделью турбулентности Спаларта-Аллмараса ● Моделирование крупных вихрей (LES) ● Гибридная RANS-LES модель – моделирование отсоединенных вихрей ((D)DES) ● Модель Ффокса-Уильямса-Хоккингса для дальнего акустического поля ● Модель SNRG для моделирования поля скорости синтетической турбулентности Численные методы ● EBR (Edge-Based Reconstruction) схемы повышенной точности – для всех моделей ● Явный метод Рунге-Кутты 4го порядка и его линейная версия произвольно высокого порядка точности ● Неявный метод 2го порядка точности интегрирования по времени, основанный на линеаризации по Ньютону с блочными линейными солверами (методы верхней релаксации (SOR) и сопряженных градиентов (BiCGStab)) ● Предобуславливатель Туркеля для маломаховых течений ● Неотражающие граничные условия (характеристические, на основе расщепления потока, «входные» и «излучательные» условия К.Тама) Параллельная реализация ● SMP системы (OpenMP), MPP системы (MPI), гибридные системы (MPI + OpenMP), гетерогенные компьютеры (OpenCL) Языки программирования ● FORTRAN95 ● С++ SCTeMM 2012, Yakutsk, Russia, November 28-30, 2011 6 Состав инфраструктуры для работы с сетками Параллельное средство для разбиения неструктурированной сетки • На основе библиотек METIS, ParMETIS Параллельное средство для равномерного измельчения сетки • Построение последовательности сеток с операторами перехода • Сглаживание твердых поверхностей Построение коммуникационной схемы для заданной ширины интерфейса Средство для построения буферной зоны для периодических Г. У. (топологическое замыкание) Построение блочно-структурированных сеток с автоматической сшивкой блоков Построение 3D сетки по базовой 2D сетке Посредством вытягивания призматических элементов и разбиением на тетраэдры Конвертеры сеточных форматов SCTeMM 2012, Yakutsk, Russia, November 28-30, 2011 7 Состав инфраструктуры ввода/вывода Средства визуализации • На всей сетке и неогрубленных подобластях • На огрубленных сетках (с использованием операторов перехода) • На заданных поверхностях и сечениях Обработка и распределенное хранение результатов • Динамические данные в контрольных точках • Динамические данные на контрольных поверхностях • Динамические контрольные параметры – подъемная сила, сопротивление, и т.д. • Статистика первого порядка – осредненные поля течения • Статистика второго порядка – тензор рейнольсовых напряжений, и т.д. • Моментальные поля течения Конвертеры сеточных форматов Платформонезависимая подсистема ввода-вывода Модульная система постановки задачи • Задача разделяется на блоки – NMS, ID, MF, REF, BC, SRC, ES, IO, VIS, HIST, TURB, IMPL, PAR, GEOM, FF • Встроенные возможности для свободного порядка именованных параметров. • Значения по умолчанию позволяют не задавать параметры без необходимости SCTeMM 2012, Yakutsk, Russia, November 28-30, 2011 8 Среда разработки Управление версиями – Subversion IDE – MVS 2008, 2010; Code::Blocks Средства отладки – MVS, Intel Parallel Studio Средства тестирования – внутренняя функциональность для модульного тестирования Набор “микротестов” для автоматизированного контроля корректности Выполняется только 1 шаг по времени на контрольных тестах и сравниваются результаты Набор верификационных тестов для более полной проверки Расчеты выполняются полностью для проверки правильности конечного решения Профилирование – внутренние инструментальные средства Встроенная система таймирования с высоким разрешением для множественных каналов, идентифицируемых по текстовым меткам. Позволяет проводить измерения для каждой нити/процесса, собирать статистику в параллельном режиме и, таким образом, измерять сбалансированность загрузки. Документация для разработчиков и пользователей, описание мат. моделей, правила работы с кодом, КМБ. Средства визуализации – Tecplot, Origin SCTeMM 2012, Yakutsk, Russia, November 28-30, 2011 9 Основные особенности NOISEtte Переносимость Может работать на различных системах от рабочих станций до суперкомпьютеров, Windows, Linux,…, прямой/обратный порядок байтов, MPI, OpenMP, MPI+OpenMP, OpenCL*. Автономность Может работать без дополнительных библиотек Высокая степень параллелизма Рассчитан на системы с 105 процессорных ядер и более Совмещенное ядро для 2D/3D расчетов Предназначен для фундаментальных исследований Возможность использование подробных сеток с числом тетраэдров более миллиарда, программная реализация позволяет легко добавлять новые модели и численные методы Может применяться для промышленных приложений Неструктурированные сетки позволяют работать со сложной геометрией Обратная совместимость • Параметры задаются набором файлов со свободным порядком значений • Значения по умолчанию для пропущенных параметров SCTeMM 2012, Yakutsk, Russia, November 28-30, 201110 Тесты на суперкомпьютере Ломоносов до 12800 ядер Двухуровневое распараллеливание MPI+OpenMP MPI работает на первом уровне, Задача “струя, набегающая на цилиндр” объединяя группу параллельных процессов, запущенных на разных узлах суперкомпьютера. OpenMP работает на втором уровне – внутри узлов, Ускорение (нормализованное по 64 ядрам) обеспечивая распараллеливание на многопроцессорных узлах в рамках модели с общей памятью. Тесты выполнены на примере реальной задачи об обтекании цилиндра дозвуковой струей. Сетка 16M узлов, 100M тетраэдров, 4-шаговый явный метод Runge-Kutta 4-го порядка по времени, схема повышенного порядка по пространству. Ускорение OpenMP: число MPI процессов фиксировано 128, число OpenMP нитей меняется от 1 до 8. Ускорение MPI, 8 OpenMP нитей. (логарифмическая шкала) Характерное время вычислений: 26.8 сек. на шаг по времени на 64 ядрах, 0.175 сек. на 12800, нормализованное ускорение 152.6. SCTeMM 2012, Yakutsk, Russia, November 28-30, 201111 Тесты на суперкомпьютере Ломоносов до 30 тысяч ядер Сетка 16 миллионов узлов / 100 млн. тетраэдров Сетка 1.5 миллиарда контрольных объемов Схема с центрами в элементах Ускорение (нормализованное) Ускорение (нормализованное) Схема с центрами в узлах повышенного порядка Ускорение MPI, 8 OpenMP нитей Ускорение MPI, 8 OpenMP нитей Характерное время вычислений: 0.4 сек. на шаг по времени на 1000 ядрах, 0.02 сек. на 29600, нормализованное ускорение 19.6, параллельная эффективность 67%. SCTeMM 2012, Yakutsk, Russia, November 28-30, 201112 Двухуровневое MPI+OpenMP распараллеливание MPI подобласти разбиваются далее Возможны различные варианты избежать пересечения: для OpenMP ● Узлы сетки каждой MPI подобласти разделяются на Pt наборов ● Элементы сетки, содержащие узлы из разных наборов становятся интерфейсными 1. Последовательная обработка интерфейсных элементов Каждая нить обрабатывает только свои внутренние элементы, а главная нить затем обрабатывает интерфейсные. 2. Наложение вычислений Каждая нить обрабатывает внутренние элементы, и интерфейсные элементы, имеющие узлы, принадлежащие нити. Нить пишет результаты только для своих узлов. 3. Репликация данных Интерфейсные элементы также распределяются между нитями, каждая нить пишет результаты в свой отдельный массив по узлам, затем главная нить суммирует результаты. 4. Потактовое вычисление Элементы делятся на группы, не имеющие пересечений Вариант 1 Вариант 2 Вариант 3 Разбиение 2-го уровня SCTeMM 2012, Yakutsk, Russia, November 28-30, 201113 Расширение параллельной модели Узлы суперкомпьютера становятся гетерогенными “обычный” компьютер “гетерогенный” компьютер ● Узлы суперкомпьютера объединяются с помощью MPI в рамках модели с распределенной памятью и MIMD параллелизма ● OpenMP обеспечивает распараллеливание внутри многопроцессорного узла в рамках модели с общей памяти и того же MIMD параллелизма ● OpenCL задействует GPU устройства, в которых также используется SIMD параллелизм на уровне потоковых процессоров. SCTeMM 2012, Yakutsk, Russia, November 28-30, 201114 Использование графических процессоров Выбор средства разработки Программа для гетерогенной системы состоит из кода для CPU – host кода и кода для GPU – kernel кода, другими словами вычислительных ядер Рассматривались следующие средства: ● CUDA - Compute Unified Device Architecture Является наиболее популярным средством в настоящее время. Может применяться только на оборудовании NVidia ● OpenCL - Open Computing Language Позволяет использовать оборудование как NVidia, так и ATI (AMD) Выбран OpenCL для обеспечения переносимости Тестовая реализация алгоритма была выполнена и на CUDA и на OpenCL для сравнения По производительности версия на OpenCL не уступила CUDA версии в тестах на NVidia Tesla C1060 Модель памяти OpenCL SCTeMM 2012, Yakutsk, Russia, November 28-30, 201115 Алгоритм для тестовой реализации Применение GPU исследуется на упрощенном, но репрезентативном примере ● Математическая модель - система безразмерных уравнений Эйлера ● Дискретизация по пространству - конечно-объемный метод с центрами в элементах сетки ● Сетки – неструктурированные гибридные (от тетраэдров до гексаэдров) ● Тестовая задача - сверхзвуковое обтекание сферы (число Маха равно 2.75) Тетраэдральная сетка: 79 608 узлов, 472 114 элементов, 942 088 внутренних граней расчетных Картина течения SCTeMM 2012, Yakutsk, Russia, November 28-30, 201116 Адаптация программных алгоритмов к GPU Вычисление потоков через грани контрольных объемов Поток через общую грань ячеек i и j суммируется по схеме Роу в массивы потоков по ячейкам, которые далее используются для нахождения значений газодинамических переменных на новом слое по времени. Если параллельно вычислять потоки через грани между ячейками i - j и i - k, то возникнет ошибка при одновременном суммировании потоков для ячейки i двумя разными нитями Проблема была решена двумя способами: ● вычисление потоков с репликацией данных и суммирование по графу связей Посчитанные потоки записываются в дополнительный массив по граням, а затем суммируются в массив по узлам. ● потактовым вычислением потоков К дуальному графу сетки применяется алгоритм раскраски ребер для разделения множества ребер на подмножества, в которых каждый из узлов встречается не более одного раза. Пример подмножества Декомпозиция на восемь тактов SCTeMM 2012, Yakutsk, Russia, November 28-30, 201117 Производительность вычислений на GPU Оборудование CPU ● Intel Xeon E5504 2.0GHz Кластер ИММ4 ● Intel Xeon X5670 2.93GHz Суперкомпьютер К100 GPU ● NVidia Tesla C2050 (K100) ● NVidia Tesla C1060 515GF ● NVidia GeForce GTX470 (ИММ4) ~ 80GF (НИИСИ) Суперкомпьютер К100 (www.kiam.ru) ~ 125GF ● ATI Radeon 5870 (НИИСИ) 544GF ● AMD Radeon 6970 (НИИСИ) 675GF Вычислительный стенд НИИСИ РАН SCTeMM 2012, Yakutsk, Russia, November 28-30, 201118 Производительность вычислений на GPU Измерение производительности на тестовой задаче ● Измерялось время вычислений на GPU и CPU с помощью таймирования с высоким разрешением Измерения усреднялись на интервале 100 шагов по времени ● Замеры выполнены для всего шага по времени и для отдельных операций: • расчет потоков через грани контрольных объемов • суммирование потоков с граней в ячейки • граничные условия (ГУ) • переход на новый временной слой по схеме Рунге-Кутты (Р-К) ● Программа запускалась на одном CPU ядре и одном GPU устройстве ● Все вычисления - для чисел с плавающей точкой двойной точности (double, 64 бита) Время вычислений на шаг по времени (сек.) на GPU и CPU Операция Intel Xeon E5504 2.0GHz Intel Xeon X5670 2.93GHz NVidia C1060 NVidia GTX470 NVidia C2050 ATI Radeon 5870 AMD Radeon 6970 Расчет потоков 0.255 0.172 0.0095 0.0053 0. 0056 0.0041 0.0031 Суммирование --- --- 0.0043 0.0033 0.0026 0.0030 0.0022 ГУ 0.0011 0.0008 0.00045 0.00021 0.0003 0.0004 0.00028 Р-К 0.029 0.022 0.0015 0.00103 0.0014 0.0016 0.0019 Всего 0.285 0.195 0.0157 0.00984 0.0099 0.0091 0.0075 SCTeMM 2012, Yakutsk, Russia, November 28-30, 201119 Производительность вычислений на GPU ● На АMD получена более высокая производительность хотя С2050 примерно в 10 раз дороже ● Замена переменных на константы в OpenCL Компиляция выч. ядер выполняется в режиме runtime CPU программы, поэтому размеры массивов и различные коэффициенты дописываются в исходный код ядер как #define константы. Это дало выигрыш около 5%. ● Минимизация числа операций деления На CPU разница в скорости между умножением и делением сказывается намного меньше, чем на GPU ● Добавление директивы #pragma unroll <N> Для циклов с фикс. числом итераций, например, по граням для каждого контрольного объема. Оказало существенное влияние на ATI, на NVidia не имело эффекта ● Анализ результатов профайлера и устранение фиктивных регистров ● На NVidia действия по оптимизации кода имели намного меньший эффект чем на AMD На AMD доработка кода повысила производительность в ~2 раза, в то время как на NVidia только на 10%. ● Ускорение 20-40 раз по сравнению с CPU ядром максимальное ускорение отдельных операций до 40~50 раз Сравнение CPU и GPU на тестовой задаче 0,300 Intel Xeon E5504 2.0GHz 0,250 Intel Xeon X5670 2.93GHz 0,200 NVidia C1060 0,150 NVidia GTX470 0,100 NVidia M2050 0,050 ATI Radeon 5870 0,000 AMD Radeon 6970 Сравнение различных моделей GPU на тестовой задаче 0,020 NVidia C1060 0,015 NVidia GTX470 0,010 NVidia M2050 0,005 ATI Radeon 5870 0,000 AMD Radeon 6970 ● Корректность работы GPU устройств требует внимания реализована дополнительная функциональность для проверки корректности вычислений SCTeMM 2012, Yakutsk, Russia, November 28-30, 201120 Перенос вычислений на GPU Минимальные требования: ускорение хотя бы в 10-20 раз по сравнению с CPU ядром NVidia Fermi стоит ~2K E, 6-ядерный Xeon ~600E Fermi ~300Вт, 6-ядерный Xeon ~15Вт на ядро GPU от AMD стоит ~200E, но все равно ~200Вт. разница ~20 раз в стоимости разница ~20 раз по энергопотреблению Мин.конфигурация кода Схема с центрами в элементах GPU часть только начала работать, пока ускорение 7-8 раз Ускорение 20-40 раз Схема с центрами в узлах Заканчивается работа по версии на C++ MPI+OpenMP+OpenCL Переносимый код, который работает на всем: Windows, Linux, рабочие станции, кластеры, суперкомпьютеры, гетерогенные системы на GPU NVidia и AMD (ATI)…. SCTeMM 2012, Yakutsk, Russia, November 28-30, 201121 Задачи, решаемые в настоящее время 1. Численное моделирование взаимодействия турбулентной струи с поперечно расположенным круглым цилиндром бесконечной длины Модели: DNS, implicit LES, DDES Грант РФФИ_офи, совместные исследования с ЦАГИ, Москва 2. Численное исследование ячеек звукопоглощающих конструкций (ЗПК) Модели: DNS, DDES Договор с ОАО «Авиадвигатель», Пермь 3. Численное моделирование турбулентного течения вокруг обратных уступов и выемок (дозвуковые и сверхзвуковые режимы) Модели: DES, DDES Грант РФФИ, работы с ОАО «ОКБ Сухого» и ЦНИИМаш, Москва 4. Задачи проекта 7-ой рамочной программы Евросоюза VALIANT* 4.1 Численное моделирование акустических полей течения при взаимодействия турбулентного течения с зазором в механизации крыла 4.2 Численное моделирование акустических полей течения при обтекании турбулентным потоком системы двух цилиндров с квадратным сечением под разными углами атаки (имитация стоек шасси) Модели: DES, DDES 5. Солверы и тестовые задачи для пакета LOGOS Договорные работы с РЦЯФ-ВНИИЭФ, Саров 6. Тестовые задачи по внешним течениям вокруг профилей Совместные работы с МФТИ, ФАЛТ и ОКБ «Камов» *VALIANT – VALidation and Improvement of Airframe Noise prediction Tools SCTeMM 2012, Yakutsk, Russia, November 28-30, 201122 Исследования звукопоглощающих конструкций авиадвигателей SCTeMM 2012, Yakutsk, Russia, November 28-30, 201123 Расчеты по звукопоглощающим конструкциям (ЗПК) авиадвигателей Совместные с ОАО “Авиадвигатель”, Пермь, исследования ЗПК Моделируется прохождение акустической волны в канале с перфорированной ячейкой ЗПК На вход подается широкополосный шум и измеряется коэффициент прохождения сигнала Вид сверху Вид сетки 3.4М узлов / 20М тетраэдров для конфигурации ячейки с 11 отверстиями Вид сбоку Характеристики прохождения сигнала для полосы частот Вихревые кольца, возникающие в горле резонатора Схема расчетной области для перфорированной ячейки Сетка в области отверстия SCTeMM 2012, Yakutsk, Russia, November 28-30, 201124 Конфигурация перфорированной ячейки с 11 отверстиями Визуализация течения в отверстиях ЗПК панели при прохождении акустической волны Сетка: 3.4 млн. узлов, 20 млн. тетраэдров, 256 CPU, МВС-100К и Кант (Калининград) Вид сверху Вид сбоку Показано поле плотности в центральном сечении трехмерной расчетной области вдоль оси волновода, прохождение акустических волн и возникновение турбулентного течения через отверстия ячейки ЗПК SCTeMM 2012, Yakutsk, Russia, November 28-30, 201125 Совместные с ЦАГИ исследования модельной конфигурации “струя, набегающая на цилиндр”, имитирующей обтекание стойки шасси самолета Воспроизводятся механизмы генерации аэродинамического шума при обтекании шасси самолета. Поле модуля скорости, вид сверху Расчеты и соответствующие эксперименты, выполненные в ЦАГИ, нацелены на Вид сверху определение позиции источников шума в турбулентном следе за цилиндром. Поле модуля скорости, вид сбоку ● Параметры задачи Число Маха: М=0.206 Число Рейнольдса: Re = 14000 Размер сетки: до 16 млн. узлов, 100 млн. тетраэдров Период интегрирования по времени: 1700 Вид сбоку Неструктурированная адаптированная Количество контрольных точек: 1400 тетраэдральная сетка Задействовано процессоров: до 12800 Поле завихренности, вид сбоку Изоповерхности модуля скорости Расположение массива контрольных точек в следе за цилиндром SCTeMM 2012, Yakutsk, Russia, November 28-30, 201126 Визуализация течения, имитирующего обтекание стойки шасси самолета Сетка: 9 млн. узлов, 55 млн. тетраэдров, 1024 процессора, суперкомпьютер Ломоносов Показано поле модуля скорости и поле завихренности SCTeMM 2012, Yakutsk, Russia, November 28-30, 201127 Взаимодействие турбулентности с зазором в конструкции планера Исследуется один из основных источников аэродинамического шума Вид сверху Турбулентная вязкость в центральном сечении Вид сбоку Изоповерхности турбулентной вязкости Схема расчетной области SCTeMM 2012, Yakutsk, Russia, November 28-30, 201128 VALIANT1: Визуализация турбулентного течения в зазоре Сетка: 5.5 млн. узлов, 32 млн. тетраэдров, 256 CPU, Ломоносов, К100 Вид сверху Вид сбоку Показано поле модуля скорости, турбулентной вязкости и энтропии SCTeMM 2012, Yakutsk, Russia, November 28-30, 201129 VALIANT1: Взаимодействие турбулентности с двумя стойками Воспроизводятся механизмы возникновения аэродинамического шума при обтекании стоек шасси самолета Вид сверху Вид блочной тетраэдральной сетки (огрубленной в 8 раз) Схема расчетной области Моментальная картина течения центральное сечение SCTeMM 2012, Yakutsk, Russia, November 28-30, 201130 VALIANT2: Визуализация течения вокруг двух стоек Сетка: 9.5 млн. узлов, 60 млн. тетраэдров, 1024 CPU, суперкомпьютер Ломоносов Вид сбоку Показано поле модуля скорости, турбулентной вязкости и энтропии SCTeMM 2012, Yakutsk, Russia, November 28-30, 201131 Заключение Что есть? Достаточно сильный, постоянно развиваемый исследовательский код, технологически пригодный приложений. Конкурентоспособный даже на мировом уровне. Область приложений Задачи, связанные с высокоскоростными течениями. В основном, приложения в авиационной промышленности Полигон для разработки новых моделей, методов и алгоритмов? - Да Полигон для разработки новых технологий параллельных вычислений и проведения крупномасштабных расчетов? - Да Нужен для образовательного процесса? - Да Нужен ли код или расчеты с его помощью промышленности? - Казалось бы, да … SCTeMM 2012, Yakutsk, Russia, November 28-30, 201132 SCTeMM 2012, Yakutsk, Russia, November 28-30, 201133