12 - 2006

Параллельная реализация программного комплекса FlowVision

Владимир Коньшин

Комплекс FlowVision

Переносимость программного комплекса FlowVision

Модели программирования

Производительность параллельных программ

Производительность, масштабируемость

Свойства алгоритмов программного комплекса FlowVision

Примеры численных расчетов

Выводы

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

Комплекс FlowVision

FlowVision — программный комплекс, предназначенный для решения задач механики жидкости и газа. Он сертифицирован Госстандартом РФ на соответствие стандартам качества серии ИСО 9000. FlowVision рекомендован Министерством образования РФ для включения в программу преподавания механики жидкости и газа в вузах России, работе с ним обучают в целом ряде вузов.

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

Рис. 1

На рис. 1 представлен пример расчета компрессора, а на рис. 2 — расчета приводнения вертолета. Решение подобных задач вычислительной гидродинамики (обтекание самолета, корабля, автомобиля, моделирование турбин, насосов и т.д.) осуществляется традиционно на пределе возможностей компьютера и требует использования всего потенциала вычислительной техники. Время счета этих задач измеряется часами, а иногда и сутками. В таком случае параллельные вычисления могут существенно ускорить получение результата численного моделирования.

Рис. 2

Однопроцессорная версия FlowVision была ориентирована на персональные (32-разрядные) компьютеры, работающие под управлением операционной системы Windows. При этом пользователи сталкивались с ограничением Windows 32 на объем оперативной памяти, доступной для решения задачи. Параллельная версия FlowVision работает на кластерах (с распределенной оперативной памятью) и на многопроцессорных серверах (с общей оперативной памятью) под операционными системами Windows и Linux, что позволяет использовать в одном расчете всю оперативную память кластера или многопроцессорного сервера. Благодаря этому удается достичь сразу двух целей:

•  существенно увеличить общий объем доступной оперативной памяти на одну задачу;

•  ускорить процесс счета задачи.

Все основные достоинства однопроцессорной FlowVision сохранились и в параллельной версии, в том числе:

•  импорт геометрии из любой CAD-системы и быстрое задание варианта;

•  автоматическая генерация расчетной сетки с локальной адаптацией;

•  визуализация течений в процессе расчета;

•  расчет течений с подвижными телами;

•  аккуратный расчет течений со свободной поверхностью;

•  расчет FSI-взаимодействия «жидкость — конструкция» (совместный расчет с использованием FlowVision и ABAQUS).

Теперь они дополнены возможностью расчета задачи на многопроцессорных компьютерах. В новой версии реализована клиент-серверная архитектура. Подготовка к расчету и обработка полученных данных производится на персональном компьютере пользователя под операционной системой Windows (общий вид рабочего окна показан на рис. 3). Персональный компьютер играет роль клиента, а многопроцессорный компьютер под управлением Windows или Linux, на котором производится расчет варианта, — роль сервера.

Рис. 3

Идеология FlowVision построена на базе единой интегрированной среды, в которой объединены препроцессор, решатель и постпроцессор. Архитектура программного комплекса является модульной, что позволяет вносить в него улучшения и новые функциональные возможности. Препроцессор предназначен для импортирования геометрии расчетной области из систем геометрического моделирования, для задания модели среды, расстановки начальных и граничных условий, генерации или импорта расчетной сетки и задания критериев сходимости. После выполнения действий в препроцессоре управление передается решателю, который начинает процесс счета. В ходе решения задачи пользователь может визуализировать значение любой газодинамической переменной в расчетной области инструментами постпроцессора и следить за процессом решения. Возможность динамической визуализации в процессе счета является отличительной особенностью FlowVision и значительно облегчает анализ получаемых результатов. При достижении критерия сходимости процесс счета может быть остановлен. После этого результат становится доступен для всех инструментов постпроцессора, в котором производится обработка данных — визуализация результатов с последующим сохранением во внешние форматы данных.

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

В начало В начало

Переносимость программного комплекса FlowVision

Все ведущие фирмы — производители компьютеров выпускают многопроцессорную вычислительную технику. Каждый многопроцессорный компьютер имеет свои аппаратные и программные особенности, однако можно выделить общие тенденции в развитии многопроцессорной техники и при конструировании параллельных вычислительных алгоритмов опираться на общепризнанные стандарты. Тем самым решается задача построения и реализации алгоритмов, обладающих свойством переносимости (portability) с одной вычислительной системы на другую.

Программный комплекс FlowVision работает практически на всех компьютерах. В общем случае мы ориентируемся на вычислительную систему типа SIMD (Single Instruction Multiple Data). Это вычислительная система с p-процессорами, каждый из которых работает в соответствии с общим потоком инструкций и обрабатывает свой собственный поток данных. В качестве языка программирования используется C++ с вызовом коммуникационных примитивов из системной библиотеки. В качестве коммуникационной библиотеки применяется интерфейс MPI (Message Passing Interface), который является общепризнанным стандартом передачи сообщений. Стандарт MPI основан на явном описании программистом обмена сообщениями между процессорами.

К вычислительным системам типа SIMD относятся, например, вычислительные кластеры и многопроцессорные рабочие станции. Такие вычислительные системы могут содержать от нескольких штук до сотен процессорных элементов, каждый из которых обладает производительностью до гигафлопа. Таким образом, пиковая производительность многопроцессорной системы (суммарная производительность всех процессоров) может достигать терафлопа. Следовательно, в параллельной версии FlowVision решена задача эффективного использования этого огромного потенциала компьютера и получения в реальном приложении производительности, близкой к пиковой.

В начало В начало

Модели программирования

Как правило, программное обеспечение для последовательной (однопpоцессоpной) вычислительной техники не обладает необходимым запасом параллелизма. Поэтому параллельная версия FlowVision базируется на новой структуре данных и на специальных параллельных алгоритмах. При параллельном выполнении задачи используются знания пpогpаммиста о стpуктуpе алгоритма и управление вручную потоком данных между процессорами. Применяется стиль пpогpаммиpования с передачей сообщений (message passing style).

Естественным способом распараллеливания алгоритмов вычислительной аэродинамики является декомпозиция расчетной области (domain decomposition). Если исходная расчетная область (domain) представляет собой топологический параллелепипед, то декомпозиция области решения заключается в разбиении ее на перекрывающиеся параллелепипеды (subdomain), так что на каждый процессор приходится равное число расчетных узлов. Каждый процессор хранит только свои ячейки и дубликаты ячеек с других процессоров, которые являются соседними по грани/узлу. Перекрытие подобластей на одну-две ячейки в каждом направлении для каждой грани необходимо для более удобной организации межпроцессорной передачи данных и выполнения однородных вычислений на каждом процессоре. Такое разбиение приводит к равномерной загрузке процессоров при условии, что число арифметических затрат на расчет каждого вычислительного узла приблизительно одинаково. На рис. 4 показан пример декомпозиции (разбиения) расчетной области на восемь подобластей для задачи обтекания автомобиля.

Рис. 4

В начало В начало

Производительность параллельных программ

Одной из основных характеристик параллельного алгоритма является ускорение S (Speedup), которое определяется как отношение общего времени прохождения программы для последовательного алгоритма ко времени работы параллельного алгоритма с использованием p-процессоров. Другой важной характеристикой алгоритма является параллельная эффективность E, которая определяется как отношение ускорения к числу процессоров, то есть E = S/p.

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

•  большое стартовое время инициализации параллельной программы (large startup);

•  дисбаланс загрузки процессоров (load inbalance);

•  большие коммуникационные затраты (large communication costs);

•  наличие последовательных частей кода (serial part of the code).

Рассмотрим названные причины и разберем, как эти проблемы решаются во FlowVision. Выполнение программы начинается с подготовительного этапа (startup), когда выполняется инициализация данных (возможно на одном процессоре), а результаты потом рассылаются по всем процессорам. В FlowVision время инициализации является незначительным по сравнению с общим временем расчета задачи и не оказывает существенного влияния на параллельную эффективность.

Время выполнения параллельной программы определяется временем работы процессора, на который приходится ее наибольший объем. Если загрузка процессоров несбалансирована, то часть из них простаивает, пока остальные заканчивают свою вычислительную работу. В связи с этим сбалансированность загрузки процессоров является наиболее важным фактором в задачах вычислительной гидродинамики. Для получения хорошей сбалансированности процессоров необходимо каждому процессору выделить примерно одинаковую часть работы. В FlowVision для распределения расчетных узлов по процессорам используется стандартная программа MeTiS. Декомпозиция, рассчитанная в MeTiS, распределяет все ячейки сетки по процессорам. Группы ячеек имеют почти одинаковое число ячеек и минимальное число связей с ячейками из других групп. Каждая группа ячеек соотносится с некоторым процессором.

Минимизация коммуникационных затрат достигается за счет встречного обмена данными и асинхронной передачи данных. Как правило, процессор посылает данные соседнему процессору и принимает данные от него. Аппаратные средства большинства параллельных систем и программные средства MPI допускают применение встречного обмена, когда данные передаются одновременно в обе стороны. Это позволяет добиться почти двойного уменьшения времени обмена данными по сравнению с однонаправленным обменом.

Асинхронный обмен предполагает межпроцессорную передачу данных без прекращения вычислительной работы процессоров. Современные параллельные компьютеры поддерживают асинхронность на аппаратном и программном уровнях. Использование асинхронности (наложение коммуникационной работы на вычислительную) позволяет свести к минимуму коммуникационные затраты, а иногда и полностью избавиться от них.

Наличие даже небольших последовательных частей кода существенно снижает параллельную эффективность пpогpаммы, поэтому код FlowVision максимально распараллелен.

В начало В начало

Производительность, масштабируемость

Современные многопроцессорные вычислительные системы строят таким образом, чтобы они обладали масштабируемостью на аппаратном уровне, то есть суммарная производительность вычислительной системы должна расти прямо пропорционально числу процессоров. Узким местом в аппаратуре может являться, например, пропускная способность системной шины доступа процессоров к общей оперативной памяти. Фирмы-производители ограничивают в своих моделях максимальное число процессоров, исходя из требования масштабируемости.

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

Рис. 5

В начало В начало

Свойства алгоритмов программного комплекса FlowVision

Рост производительности за счет параллельных вычислений сопровождается усложнением программирования, увеличением времени разработки программного обеспечения и требует специальных знаний. Реализация параллельной версии программного комплекса FlowVision основана на фундаментальных принципах параллельного программирования. Она объединила в себе современные достижения из различных областей — математического моделирования, теории аппроксимаций, вычислительной линейной алгебры и параллельных вычислений.

В программном комплексе FlowVision реализована схема конечных объемов, которая характеризуется следующими свойствами:

•  второй порядок аппроксимации;

•  спектральное разрешение, которое подразумевает небольшие спектральные ошибки и наличие дисперсионного механизма, фильтрующего только паразитные осцилляции решения;

•  положительная определенность и совместимость результирующей дискретной системы;

•  дискретная консервативность, то есть аппроксимации основаны на интегральной форме законов сохранения;

•  высокая точность и надежность на прямоугольной сетке с локальными сгущениями;

•  устойчивый алгоритм на совмещенной сетке со стабилизатором высокого порядка;

•  неявная схема интегрирования с использованием метода Ньютона на нелинейных итерациях.

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

При дискретизации уравнений Навье-Стокса наиболее сложной проблемой является аппроксимация конвективного переноса. В FlowVision используются схемы аппроксимации конвективного потока, которые основаны на восстановлении рассчитываемой переменной из ее средних значений внутри ячейки расчетной сетки и переносе восстановленной функции по линиям тока жидкости (характеристикам поля скорости). Заметим, что точность численного решения уравнения конвективного переноса сильно зависит от направления движения потока жидкости относительно расчетной сетки. Наиболее сильные искажения решения возможны при диагональном, «скошенном» потоке жидкости относительно ячеек сетки, особенно при моделировании возвратно-циркуляционных движений. Для устранения этих неточностей разработана «скошенная» расчетная схема. Данная схема является ориентированной против потока, имеет второй порядок аппроксимации по временной и пространственным переменным и дает монотонное (неосциллирующее) решение в областях больших градиентов физических величин (например, на ударных волнах).

Для решения систем алгебраических уравнений, возникающих во FlowVision, применяются два подхода: метод сопряженных градиентов с предобусловливателем типа неполного разложения Холесского и метод Ланцоша с предобусловливателями типа неполного LU- и неполного блочного LU-разложения. Эти итерационные методы обладают высокой скоростью сходимости к решению и допускают параллельную реализацию для многопроцессорных вычислительных систем.

В начало В начало

Примеры численных расчетов

Программный комплекс FlowVision с успехом применяется для решения многих технических задач. В качестве примера приведем моделирование течения воздуха около автомобиля. На рис. 5 показаны линии тока около автомобиля, на рис. 6 — изолинии давления в среднем сечении при обтекании автомобиля.

Рис. 6

Вычисления были проведены для реальной трехмерной геометрии автомобиля. Расчеты были выполнены под операционной системой Linux RedHat Advanced Server на вычислительной системе СК MBC-6000IM со следующими характеристиками: 64-разрядные процессоры Intel Itanium 2 1,6 ГГц, вычислительные модули связаны между собой высокоскоростной коммуникационной сетью Myrinet (пропускная способность 2 Гбит/с). На рис. 7 представлены результаты по параллельной масштабируемости задачи с сеткой из 362 тыс. расчетных ячеек.

Результаты подтверждают масштабируемость параллельного алгоритма. Для большого числа процессов (p>8) эффективность параллельного алгоритма уменьшается из-за влияния совокупности всех факторов, снижающих параллельную эффективность.

Рис. 7

В начало В начало

Выводы

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

В начало В начало

САПР и графика 12`2006