Main menu

Методы декомпозиции областей (Domain Decomposition): параллельные вычисления

Преодоление ограничений памяти и распараллеливание

С развитием суперкомпьютеров вычислительная математика столкнулась с новой, сугубо архитектурной проблемой. Когда мы решаем дифференциальные уравнения в частных производных (УЧП) на сетках, состоящих из десятков миллиардов узлов (например, при расчете глобальной климатической модели Земли или аэродинамики космического корабля в сборе), физически невозможно поместить глобальную матрицу системы в оперативную память одного вычислительного узла. Возникает острая необходимость разрезать гигантскую математическую задачу на тысячи более мелких кусков, раздать их независимым процессорам (или узлам кластера) и заставить эти процессоры общаться между собой по сети MPI для получения единого, математически строгого решения.

Эта концепция легла в основу методов декомпозиции областей (Domain Decomposition Methods, DDM). Идея метода невероятно стара: еще в 1870 году математик Герман Шварц придумал альтернирующий метод для аналитического решения уравнения Лапласа в сложных областях. Он показал, что если сложная область состоит из двух перекрывающихся простых фигур (например, круга и прямоугольника), можно поочередно решать задачу в каждой из них, используя на границе перекрытия значения, полученные у соседа на предыдущем шаге. Спустя сто лет эта абстрактная математическая теорема стала фундаментом параллельных суперкомпьютерных вычислений.

Методы с перекрытием (Метод Шварца) и без перекрытия

Современные численные реализации DDM делятся на две большие группы. Первая группа — это методы с перекрытием (Overlapping methods), прямые наследники классического метода Шварца. Расчетная сетка разбивается на субдомены, которые искусственно расширяются так, чтобы они немного наслаивались друг на друга. Итерационный процесс заключается в том, что каждый процессор решает свою локальную СЛАУ внутри своего домена, а затем пересылает значения из зоны перекрытия соседним процессорам, чтобы те использовали их как краевые условия Дирихле на следующей итерации. Этот метод очень надежен, но пересылка больших массивов данных в зонах перекрытия может замедлять сеть кластера.

Вторая группа — это методы без перекрытия (Non-overlapping methods, или методы подконструкций). Здесь граница между доменами представляет собой строгую математическую линию (или поверхность) толщиной в один узел сетки. Эти методы математически более сложны, так как на общей границе необходимо обеспечить не только непрерывность самой функции (температуры), но и непрерывность нормальной производной (теплового потока). Для этого используются специальные алгоритмы на интерфейсах (например, метод Дирихле-Неймана или метод Неймана-Неймана).

Дополнение Шура и предобуславливание FETI

Самым мощным математическим аппаратом для методов без перекрытия является матричное дополнение Шура (Schur Complement). Алгоритм алгебраически исключает все внутренние узлы каждого субдомена, сводя гигантскую глобальную СЛАУ к гораздо меньшей системе уравнений, которая записана исключительно относительно неизвестных значений на самих интерфейсах (границах разреза). После решения интерфейсной задачи каждый процессор абсолютно независимо и быстро восстанавливает решение внутри своего куска.

Для решения сложной интерфейсной системы обычно применяется метод сопряженных градиентов (CG). Чтобы он сошелся быстро, французский ученый Шарль Фархат разработал знаменитый алгоритм FETI (Finite Element Tearing and Interconnecting), который вводит множители Лагранжа (силы взаимодействия) на границах и использует сложные проекционные предобуславливатели. Сегодня алгоритмы типа FETI-DP (с двумя уровнями грубой сетки) обеспечивают идеальную масштабируемость: программа может эффективно задействовать сотни тысяч процессорных ядер, ускоряя решение пропорционально размеру суперкомпьютера.

Подробнее

Метод дифференциальной эволюции: векторная мутация в глобальной оптимизации

Оптимизация в непрерывных недифференцируемых пространствах

Инженерам часто приходится решать задачи глобальной оптимизации, где целевая функция представляет собой «черный ящик» — мы можем вычислить ее значение при заданных параметрах (например, запустив тяжелую аэродинамическую симуляцию), но мы совершенно не знаем ее градиентов (производных). Более того, ландшафт этой функции может быть изрезан оврагами, содержать сотни ложных локальных минимумов и иметь разрывы. Как мы уже выяснили, классические методы Ньютона или градиентного спуска в таких условиях бесполезны: они застревают в первой же яме.

Для таких задач были созданы стохастические генетические алгоритмы (ГА). Классические ГА работают путем кодирования параметров в виде бинарных строк (хромосом) из нулей и единиц. Однако при оптимизации непрерывных вещественных параметров (например, длина волны лазера, концентрация реагента в молях, напряжение в вольтах) бинарное кодирование порождает массу проблем, связанных с потерей точности и эффектом Хэмминга. В 1995 году Кеннет Прайс и Райнер Сторн разработали революционный алгоритм — Дифференциальную эволюцию (Differential Evolution, DE). Этот алгоритм изначально создавался для работы напрямую с векторами чисел с плавающей запятой, устраняя необходимость в громоздких бинарных преобразованиях.

Векторная разность как направляющая сила мутации

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

Для того чтобы создать нового «мутанта» из текущей особи (целевого вектора), алгоритм случайным образом выбирает из популяции еще три других, абсолютно независимых вектора: A, B и C. Затем он вычисляет векторную разность между B и C. Эта математическая разность масштабируется (умножается на постоянный коэффициент мутации F) и прибавляется к вектору A. Полученный вектор становится основой для нового потомка. В чем гениальность этого подхода? Векторная разность автоматически адаптирует алгоритм к топологии ландшафта! В начале работы, когда популяция разбросана далеко друг от друга, разности огромны, и алгоритм делает гигантские разведывательные шаги, перепрыгивая через любые локальные минимумы. Когда алгоритм нащупывает глобальную долину, популяция стягивается в плотный клубок, разности между векторами становятся микроскопическими, и алгоритм переходит в режим ювелирной, сверхточной настройки параметров, не требуя ручного изменения радиуса мутации (в отличие от методов имитации отжига).

Скрещивание, селекция и индустриальное применение

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

Всего три простых математических операции — сложение векторов, масштабирование разности и условная замена. Алгоритм дифференциальной эволюции умещается в 20 строк программного кода, требует настройки всего двух интуитивных параметров (F и CR) и феноменально легко распараллеливается на многоядерных процессорах. Благодаря своей беспрецедентной способности находить глобальный минимум сложных невыпуклых функций, метод DE стал основным алгоритмом для настройки гиперпараметров нейронных сетей, автоматического синтеза фрактальных Wi-Fi антенн сложной формы и проектирования молекул новых лекарственных препаратов в хемоинформатике.

Подробнее

Методы Ланцоша и Арнольди: поиск собственных значений гигантских матриц

Охота за экстремальными резонансами

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

К счастью, в таких задачах инженеру почти никогда не нужны абсолютно все миллионы частот. Обычно критически важно знать лишь несколько самых малых собственных значений (они определяют фундаментальную частоту колебаний моста) или несколько самых больших (они определяют алгоритмическую устойчивость системы). Для поиска этих экстремальных собственных значений у сверхбольших разреженных матриц были созданы мощнейшие итерационные алгоритмы: метод Ланцоша (для симметричных матриц) и метод Арнольди (для несимметричных).

Подпространство Крылова и ортогональный базис

Оба метода базируются на элегантной концепции подпространств Крылова, которую мы упоминали в контексте решения СЛАУ. Алгоритм выбирает случайный начальный вектор q1 и начинает многократно умножать его на гигантскую матрицу A. В результате формируется последовательность векторов: q1, A*q1, A^2*q1, A^3*q1. Эти векторы несут в себе колоссальную математическую информацию о доминирующих собственных векторах матрицы (так как при многократном умножении вектор вытягивается вдоль главного собственного направления).

Проблема в том, что эти векторы очень быстро становятся почти коллинеарными (параллельными), что уничтожает их вычислительную полезность (матрица их скалярных произведений становится вырожденной). Гениальность метода Арнольди (Уолтер Арнольди, 1951) заключается в применении процесса ортогонализации Грама-Шмидта прямо на лету! Каждый новый сгенерированный вектор тут же жестко проецируется и очищается от компонентов всех предыдущих векторов. В результате мы получаем идеальный ортонормированный базис подпространства Крылова. В этом новом, маленьком базисе исходная гигантская матрица проецируется (сжимается) в крошечную матрицу Хессенберга размера m x m (где m — число итераций, например, 50 или 100).

Метод Ланцоша и проблема потери ортогональности

Если исходная матрица системы была симметричной (как в задачах сопротивления материалов), процесс Арнольди превращается в Метод Ланцоша (Корнелий Ланцош, 1950). Из-за свойств симметрии матрица Хессенберга магическим образом схлопывается в симметричную трехдиагональную матрицу. Это означает, что для генерации каждого нового ортогонального вектора алгоритму Ланцоша не нужно вспоминать и вычитать все предыдущие 100 векторов — ему достаточно использовать короткую рекуррентную формулу, опирающуюся только на два последних вектора! Это делает метод Ланцоша феноменально быстрым и экономным по памяти.

Получив эту крошечную матрицу проекции, мы просто решаем ее стандартным QR-алгоритмом за миллисекунды. Ее собственные значения (называемые числами Ритца) с фантастической скоростью сходятся к истинным экстремальным собственным значениям гигантской исходной матрицы. Однако у метода Ланцоша есть вычислительный недуг: из-за конечной разрядности компьютеров (ошибок округления float) генерируемые векторы постепенно теряют свою взаимную перпендикулярность. Это порождает появление фиктивных (призрачных) собственных значений, которые являются математической галлюцинацией. Для борьбы с этим современная вычислительная алгебра использует методы полной или выборочной переортогонализации, которые встроены в ядро таких сверхмощных индустриальных пакетов, как ARPACK (используемых функциями `eigs` в MATLAB и SciPy).

Подробнее

Соц. сети