<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Нижегородский государственный университет им. Н.И. Лобачевского</article-title>
      </title-group>
      <pub-date>
        <year>2015</year>
      </pub-date>
      <fpage>133</fpage>
      <lpage>145</lpage>
      <abstract>
        <p>Рассматривается задача распараллеливания численной фазы разложения Холецкого для разреженных симметричных положительно определенных матриц. Предлагается новая схема распараллеливания мультифронтального метода для систем с общей памятью. Данная схема основана на сочетании двух подходов к организации параллелизма на разных уровнях дерева исключения. В нижней части дерева выполняется параллельная обработка узлов, хранящихся в приоритетной очереди. На верхних уровнях дерева узлы обсчитываются последовательно с использованием многопоточного BLAS. Результаты вычислительных экспериментов показывают сопоставимость выполненной реализации с решателями MUMPS и MKL PARDISO.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Двухуровневый параллельный алгоритм выполнения
численной фазы разложения Холецкого для разреженных
матриц*
Принцип работы прямых методов основан на факторизации матрицы системы с
последующим решением треугольных систем. Для симметричных положительно определенных матриц
факторизация выполняется методом Холецкого. Для этого в большинстве случаев используется
двухфазный подход: вначале находится портрет фактора, т.е. расположение ненулевых
элементов (символьное разложение), затем полученный портрет заполняется значениями (численное
разложение). Необходимо отметить, что символьная фаза выполняется гораздо быстрее
численной, поэтому множество усилий исследователей направлено на оптимизацию и
распараллеливание численной фазы.</p>
      <p>
        Существует несколько методов выполнения численной фазы разложения Холецкого. Среди
них можно выделить три наиболее широко используемых на практике: ориентированный влево
(left-looking) [
        <xref ref-type="bibr" rid="ref3">4</xref>
        ], ориентированный вправо (right-looking) [
        <xref ref-type="bibr" rid="ref3">4</xref>
        ] и мультифронтальный
(multifrontal) [
        <xref ref-type="bibr" rid="ref4">5</xref>
        ]. Основное отличие между ними заключается в способе формирования
результирующей матрицы , а также в способе хранения и размещении в памяти промежуточных
результатов. Перечисленные методы показывают схожую производительность на различных
тестовых наборах матриц, но с точки зрения многих исследователей мультифронтальный метод
является наиболее перспективным для распараллеливания [
        <xref ref-type="bibr" rid="ref5 ref6">6, 7</xref>
        ]. По этой причине
мультифронтальный метод используется в качестве базового в данной работе.
3. Краткое описание мультифронтального метода
      </p>
      <p>
        Впервые мультифронтальный метод был представлен Даффом и Рейдом [
        <xref ref-type="bibr" rid="ref7">8</xref>
        ] в 1983 г., а
затем развит Лю [
        <xref ref-type="bibr" rid="ref8">9</xref>
        ], Амстоем и Даффом [
        <xref ref-type="bibr" rid="ref9">10</xref>
        ]. К числу основных достоинств мультифронтального
метода относят эффективное использование кэш-памяти всех уровней. При реализации с
использованием подходящих структур данных основными становятся операции с плотными
подматрицами, для выполнения которых может быть использован BLAS 3. Данный метод
используется в одном из широко распространенных решателей c открытым исходным кодом MUMPS.
К числу недостатков мультифронтального метода можно отнести высокие затраты памяти для
представления промежуточных результатов и большое число операций с плавающей точкой,
особенно для задач, полученных путем дискретизации трехмерного пространства [
        <xref ref-type="bibr" rid="ref10">11</xref>
        ].
Приведем краткое описание метода.
      </p>
      <p>
        Численная фаза разложения Холецкого применяется для заполнения уже сформированного
шаблона фактора матрицы численными значениями. Для этого в мультифронтальном методе
процесс факторизации разбивается на факторизацию небольших плотных подматриц,
называемых фронтальными (frontal matrix). При этом порядок получения столбцов фактора
определяется графом задач, который в случае симметричной положительно определенной матрицы
является деревом и называется деревом исключения (elimination tree). Каждый узел дерева
соответствует столбцу матрицы. Таким образом, мультифронтальный метод может быть представлен
как обход дерева исключения от листьев к корню. При посещении очередного узла происходит
построение фронтальной матрицы, в результате частичной факторизации которой алгоритм
формирует соответствующий столбец фактора. Для построения фронтальной матрицы
используются значения соответствующего столбца исходной матрицы, а также матриц обновления,
ассоциированных с детьми рассматриваемого узла в дереве исключения. После выполнения
частичной факторизации фронтальной матрицы формируется столбец фактора и матрица
обновления, которая будет использована при построении фронтальной матрицы родителя.
Высокоуровневое описание мультифронтального метода приведено ниже (алгоритм 1). Символом ⨁
обозначена операция расширяющего сложен(иexяtend add) [
        <xref ref-type="bibr" rid="ref4">5</xref>
        ].
      </p>
      <p>
        Процедуры init_frontal_matrix, assembly_frontal_matrix и form_update_matrix реализуются с
помощью вызовов соответствующих функций BLAS. Более подробное описание метода можно
найти в работах [
        <xref ref-type="bibr" rid="ref10 ref4">5, 11</xref>
        ]. Последовательная реализация мультифронального метода в решателе
ННГУ описана в работе [
        <xref ref-type="bibr" rid="ref11">12</xref>
        ].
      </p>
      <p>
        Недостатком базовой версии численной факторизации является неэффективное
использование кэш-памяти. Для решения этой проблемы на практике используются так называемые
суперноды (supernode). Супернодом называется группа столбцов фактора, имеющих одинаковый
шаблон ниже плотной треугольной подматрицы. Супернодальный мультифронтальный подход
впервые был предложен Эшкрафтом, Гримсом, Льюисом, Пейтоном и Симоном [
        <xref ref-type="bibr" rid="ref12">13</xref>
        ] в 1987 г., а
затем исследован Нг и Пейтоном [
        <xref ref-type="bibr" rid="ref13">14</xref>
        ]. Суперноды позволяют формировать фактор по
несколько столбцов за итерацию с использованием функций BLAS третьего уровня, что повышает
эффективность использования кэш-памяти. Именно эта редакция мультифронтального метода
используется в качестве базовой для данной работы.
Алгоритм 1. Высокоуровневое описание мультифронтального метода
1 foreach node i of elimination tree in topological order
2 init_frontal_matrix(Fi)
3 foreach son j of i do
4 U ← U ⨁ Uj
5 end for
6 assembly_frontal_matrix(F,U)
7 factorize(F)
8 form_update_matrix(Ui)
9 Li←F(1,*)
10 end for
4. Схемы распараллеливания
      </p>
      <p>В мультифронтальном методе могут быть использованы два способа организации
параллелизма: применение параллельных функций BLAS и параллельное решение независимых друг
от друга задач в соответствии со структурой дерева исключения. Рассмотрим перспективы
применения этих методов.
4.1 Использование параллельного BLAS</p>
      <p>Большая часть вычислений в мультифронтальном методе приходится на процедуры BLAS,
такие как умножение плотных матриц и решение плотных систем линейных уравнений с
треугольной матрицей. Поэтому использование существующих библиотек для
высокопроизводительных вычислений, таких как, например, Intel MKL, является самым естественным способом
распараллеливания численной фазы разложения Холецкого. К сожалению, эксперименты
показывают, что применение этого подхода чаще всего приводит к разочаровывающим результатам.
Этот факт объясняется тем, что большинство вспомогательных матриц, возникающих в ходе
выполнения алгоритма, имеют маленькую размерность и поэтому накладные расходы,
связанные с организацией параллелизма не компенсируются последующей параллельной обработкой.
Таким образом, необходимую производительность можно получить, только если в качестве
основного метода распараллеливания использовать распараллеливание по дереву исключения.
4.2 Распараллеливание по дереву исключения</p>
      <p>
        Распараллеливание мультифронтального метода может быть выполнено на основе дерева
исключения T, содержащего информацию о зависимостях по данным, возникающих в ходе
вычислений. Пусть T[k] – часть дерева исключения с корнем в вершине k. Показано [
        <xref ref-type="bibr" rid="ref10">11</xref>
        ], что два
столбца i и j фактора L могут быть вычислены параллельно тогда и только тогда, когда
поддеревья T[i] и T[j] не пересекаются, то есть не имеют общих узлов. Этот результат является
основной для построения алгоритмов параллельной факторизации. При этом в качестве единицы
работы (задачи) можно рассматривать построение фронтальной матрицы, соответствующей
очередному узлу дерева. Основная проблема, возникающая при разработке параллельной
редакции метода, заключается в наличии существенного дисбаланса между вычислительной
трудоемкостью возникающих задач. Решение данных задач предполагает выполнение операций
над матрицами, размеры которых могут отличаться на порядки от узла к узлу при сохранении
общей тенденции укрупнения матриц при перемещении от листьев к корню. Для решения
проблемы балансировки нагрузки могут использоваться как статические, так и динамические
схемы.
4.3 Статические схемы распараллеливания
      </p>
      <p>
        Существует множество методов, использующих статическую схему распараллеливания,
однако большинство из них были разработаны для систем с распределенной памятью. В
последнее время предпринимаются усилия [
        <xref ref-type="bibr" rid="ref14">15</xref>
        ] для переноса одного из наиболее эффективных
методов статического распараллеливания – алгоритма Гейста-Нг [
        <xref ref-type="bibr" rid="ref15">16</xref>
        ] для работы в системах с
общей памятью. Идея алгоритма заключается в нахождении некоторого слоя в дереве
исключения, то есть множества узлов, которые не обязательно находятся на одном уровне, но при этом
не имеют общих потомков. Найденный слой должен обладать свойством сбалансированности,
так чтобы количество операций, необходимых для обработки узлов поддеревьев с корнями в
узлах найденного слоя, удовлетворяло заданному порогу и было примерно одинаковым. При
реализации алгоритма свойство сбалансированности можно понимать как число операций с
плавающей точкой, либо как оценку времени, необходимого для обработки узла.
      </p>
      <p>На рисунке 1 приведен пример работы алгоритма. Найденный слой представляет срез
дерева в узлах 6, 11, 14. Выделенные цветом поддеревья могут быть обработаны параллельно.
Рис. 1. Пример разбиения дерева исключения с использованием алгоритма Гейста-НГ. Разными цветами
отмечены поддеревья, которые могут быть обработаны параллельно
5. Двухуровневый параллельный алгоритм</p>
      <p>Одним из основных недостатков статических схем является невозможность достаточно
точно оценить объем работы, необходимый для обработки каждого узла дерева исключения.
Поэтому в данной работе предлагается другой способ балансировки нагрузки, основанный на
динамической схеме.
Рис. 2. Пример работы мультифронтального метода на основе двухуровневой схемы распараллеливания
В рамках динамической схемы строится пул задач и на каждом шаге алгоритма поток
достает задачу из очереди и приступает к ее выполнению. Каждая задача соответствует
вычислению соответствующего столбца фактора и состоит из четырех подзадач: вычисление матрицы
узла, вычисление фронтальной матрицы, формирование из фронтальной матрицы столбца
фактора, вычисление матрицы обновления. Пул задач организуется в виде приоритетной очереди.</p>
      <p>
        Для формирования очереди задач используется алгоритм, который учитывает различные
характеристики узлов дерева для достижения лучшей балансировки [
        <xref ref-type="bibr" rid="ref2">3</xref>
        ]. Алгоритм обходит все
узлы дерева в соответствии с топологической перестановкой, сформированной раннее, и на
каждой итерации цикла добавляет рассматриваемый узел в очередь. Приоритет узла в очереди
складывается из основного и второстепенного, где первый отвечает за правильный обход
столбцов в параллельном мультифронтальном методе, а второй – за улучшение балансировки.
      </p>
      <p>Основной приоритет равен количеству детей узла в дереве исключения, а второстепенный
вычисляется как оценка трудоемкости решения соответствующих подзадач. Трудоемкость
решения задачи оценивается как количество операций с плавающей точкой.</p>
      <p>Представленная схема позволяет эффективно использовать вычислительные ресурсы на
нижних уровнях дерева исключения, но при приближении к корню возможности для
параллелизма по задачам становятся ограниченными, при этом размеры обрабатываемых матриц
значительно увеличиваются. В этот момент целесообразно изменить схему распараллеливания
таким образом, чтобы вычислительные потоки использовались внутри вызовов многопоточные
реализации функций BLAS (алгоритм 2).
17
18
19
20
21
22
23
24
25
26
27
28
29
30
while(task_queue.hasTaskET())
#pragma omp critical (queue)</p>
      <p>i←task_queue.get_task_with_highest_priority();
process_node(i)
#pragma omp critical (queue)</p>
      <p>task_queue.increase_task_primary_priority(parent(i))
end while
while(task_queue.hasTask())
i←task_queue.get_task_with_highest_priority();
process_node(i)
task_queue.increase_task_primary_priority(parent(i))
end while
end procedure
6. Результаты вычислительных экспериментов
6.1 Тестовая инфраструктура</p>
      <p>
        Результаты экспериментов получены с использованием узла кластера, содержащего два
восьмиядерных процессора Intel Sandy Bridge E5-2660 2.2 GHz, 64GB RAM, работающего под
управлением ОС Linux CentOS 6.4. Использовался компилятор Intel C++ Compiler и библиотека
Intel MKL BLAS из пакета Intel® Parallel Studio XE 2013 SP1. Для проведения экспериментов
были выбраны матрицы из коллекции университета Флориды [
        <xref ref-type="bibr" rid="ref16">17</xref>
        ]. Характеристики тестовых
матриц представлены ниже (таблица 1). Все они являются симметричными положительно
определенными. В качестве перестановок, уменьшающих заполнение фактора, использовался
METIS [
        <xref ref-type="bibr" rid="ref17">18</xref>
        ], но также могут быть использованы другие переупорядочиватели [
        <xref ref-type="bibr" rid="ref18 ref19">19, 20</xref>
        ].
      </p>
      <p>Таблица 1. Характеристики тестовых матриц
Название
матрицы
Pwtk
Msdoor
parabolic_fem
tmt_sym
boneS10
Emilia_923
audkiw_1
bone010_M
bone010
ecology2
thermal2
StocF-1465
Hook_1498
Flan_1565
G3_circuit
Порядок
6.2 Использование параллельных библиотек BLAS</p>
      <p>Наиболее простым способом распараллеливания мультифронтального метода является
использование высокопроизводительных параллельных библиотек BLAS. Для этого не требуется
изменять исходный код, необходимо лишь собрать его с соответствующей реализацией BLAS.
На диаграмме (рисунок 3; слева) показано ускорение численной фазы разложения Холецкого
при запуске с различным числом потоков BLAS.
Каждый многоугольник на рисунке соответствует запуску с определенным количеством
потоков. По осям отложено время работы на соответствующей матрице. Для матрицы
Hook_1498 указано время работы в 8 потоков (при работе в 16 потоков запуск завершается с
ошибкой из-за нехватки памяти).</p>
      <p>Исходя из результатов запусков версии с параллельной библиотекой BLAS (рисунок 3;
слева) можно сделать следующие выводы. Все тестовые матрицы можно разделить на 2 группы
в зависимости от степени их заполненности. Для первой группы, где матрицы больше и
плотность их выше (матрицы Flan_1565, Emilia923, audikw1, bone010, StocF-1465, Hook_1498),
использование параллельной библиотеки BLAS позволяет получить ускорение до 6 раз при
запуске в 16 потоков. Для второй группы, где матрицы либо маленькие, либо сильно
разреженные (матрицы G3_circuit, pwtk, msdoor, parabolic_fem, tmt_sym, boneS10, bone010_M, ecology2,
thermal2) ускорения при увеличении числа потоков BLAS практически не наблюдается. Также
стоит отметить, что MKL BLAS имеет встроенный контроль размера матриц и не производит
параллельную обработку, если размер матрицы слишком маленький. Таким образом,
отсутствие ускорения на матрицах из второй группы можно считать хорошим результатом, так как при
отсутствии подобного контроля за размером матрицы можно было бы наблюдать замедление.</p>
      <p>
        Рис. 3. Сравнение ускорения численной фазы разложения Холецкого:
при запуске с разным числом потоков BLAS (слева); при запуске в 16 потоков с использованием
параллельного BLAS и динамической схемы (справа)
В работе [
        <xref ref-type="bibr" rid="ref2">3</xref>
        ] мы предложили использовать динамическую схему распараллеливания
мультифронтального метода. Сравнивая ускорение с использованием различных схем
распараллеливания (рисунок 3; справа) можно видеть, что для 4 из 6 матриц первой группы (Emilia923,
audikw1, bone010, Hook_1498) использование параллельного BLAS дает лучшее ускорение в
среднем в 1.7 раза. Тем не менее, для остальных матриц предпочтительнее использовать
динамическую схему. Этот факт говорит о том, что комбинация указанных методов
распараллеливания (алгоритм 2) может дать потенциально лучшее ускорение по сравнению с каждой схемой
в отдельности, что в дальнейшем подтверждается вычислительными экспериментами.
6.3 Выбор момента переключения между схемами распараллеливания
Важнейшим элементом алгоритма, влияющим на время работы численной фазы при
использовании двухуровневой схемы распараллеливания, является критерий переключения
между схемами (по узлам дерева; в рамках одного узла при помощи BLAS). Анализ параллельных
запусков динамической схемы распараллеливания, использующей параллелизм на уровне
логических задач в сочетании с последовательным BLAS, показал, что основным фактором,
ограничивающим итоговое ускорение, является недостаток свободных задач, начиная с некоторого
момента подъема по дереву исключения. В связи с этим предлагается использовать в качестве
критерия сравнение числа необработанных задач с некоторым пороговым значением,
выбираемым экспериментально. После срабатывания данного критерия происходит переход к
последовательной обработке узлов дерева с использованием параллельного BLAS (алгоритм 2).
      </p>
      <p>Для изучения вопроса о выборе порогового значения были выбраны 4 матрицы,
представляющие 4 возможных класса: «небольшие разраженные» (parabolic_fem), «небольшие плотные»
(pwtk), «большие разреженные» (G3_Circuit) и «большие плотные» (audikw_1).</p>
      <p>Результаты приведены на диаграмме (рисунок 4). По горизонтальной оси отложено
пороговое значение, а по вертикальной – время работы двухуровневого алгоритма, отнесенное к
времени работы с использованием динамической схемы (в зависимости от матрицы). Во всех
запусках использовалось 16 вычислительных ядер. Значения, меньшие единицы, соответствуют
преимуществу двухуровневой схемы над обычной.</p>
      <p>Для небольших более плотных матриц и больших сильно разреженных время работы при
изменении порога не изменяется, кроме того оно практически совпадает с временем работы при
распараллеливании с использованием динамической схемы, отношение времен колеблется
около единицы. Для больших более плотных матриц наблюдается значительное ускорение
относительно динамической схемы, причем оно наблюдается уже при небольших значениях
параметра и в дальнейшем практически не меняется.</p>
      <p>Рис. 4. Зависимость времени работы двухуровневого алгоритма
от момента переключения между двумя параллельными схемами
Этот факт говорит о том, что большая часть работы сосредоточена в небольшой
окрестности корня дерева, где параллелизм по задачам ограничен, но есть ресурс для использования
параллельных библиотек BLAS. Ниже этой окрестности фронтальных матриц больше, они имеют
средний размер, и использование параллелизма по задачам и параллелизма BLAS дает схожий
результат. Для матриц из последней группы ситуация выглядит противоположным образом.
Размер фронтальных матриц настолько мал, что использование параллельного BLAS сразу же
приводит к замедлению. Однако таким замедлением можно пожертвовать, так как абсолютное
время работы составляет менее 1 секунды.
Рис. 5. Сравнение времени работы мультифронтального метода при использовании</p>
      <p>динамической и двухуровневой схем
На диаграмме (рисунок 5) приведено абсолютное время работы мультифронтального
метода с использованием различных схем распараллеливания. Во всех запусках использовались 16
ядер. Значение порога переключения схем для всех матриц было выбранным одинаковым и
равнялось 200. Можно видеть, что для всех представленных матриц, время работы на которых
превышает 5 секунд, новый двухуровневый метод показывает лучшие результаты. Данный
эффект проявляется наиболее явно на матрице bone010, где удалось получить ускорение в 3 раза.</p>
      <p>Отдельного внимания заслуживает вопрос об объеме используемой памяти. Так,
фронтальные матрицы на верхних уровнях дерева исключения имеют больший размер. В связи с этим,
при использовании параллелизма на задачах для обработки узлов верхних уровней требуется
хранение вспомогательных структур данных для каждого из 16 потоков, что приводит к
большим затратам памяти. Напротив, в двухуровневой схеме фронтальные матрицы узлов верхних
уровней обрабатываются потоками совместно, что позволяет значительно сократить размер
вспомогательных структур данных. В частности, применение описанных методов позволило
получить правильное решение для матрицы Hook_1498 при использовании 16 потоков, в
отличие от базовой динамической схемы.
6.4 Сравнение с известными решателями</p>
      <p>Был проведен ряд экспериментов на тестовых матрицах с использованием следующих
известных и широко распространенных решателей:

</p>
      <p>
        MKL PARDISO из Intel Math Kernel Library в составе Intel Parallel Studio XE 2013 SP1
[
        <xref ref-type="bibr" rid="ref20">21</xref>
        ];
      </p>
      <p>
        MUMPS (лучшее время работы из двух актуальных версий ver. 4.10.0, ver 5.0.0) [
        <xref ref-type="bibr" rid="ref21">22</xref>
        ].
Для всех пакетов использовались одинаковые перестановки, полученные с помощью
METIS, а также функции BLAS и ScaLAPACK из библиотеки Intel MKL. Полученные
результаты приведены на диаграмме (рисунок 6).
Рис. 6. Сравнение численных фаз решателей. По осям отложено время работы.
      </p>
      <p>За единицу взято время работы MKL PARDISO
Из результатов можно сделать следующие выводы. Для запусков в 1 поток реализованный
мультифронтальный метод показывает схожие результаты с MUMPS. Это объясняется тем
фактом, что в обоих решателях в качестве метода численного разложения используется
мультифронтальный метод. В тоже время оба решателя проигрывают PARDISO на 6 матрицах (msdoor,
tmt_sym, ecology2, thernaml2, G3_circuit, parabolic_fem), на 4 матрицах (audikw_1, bone010,
StocF-1465, Flan_1565) заметен выигрыш, в остальных случаях время работы сопоставимо.
Наибольший выигрыш разработанного решателя по сравнению с PARDISO получен на матрице
audikw_1 и составляет 14%, а наибольшее отставание, в 1.5 раза, на матрице ecology2.</p>
      <p>Рассматривая результаты экспериментов для запусков решателей в 16 потоков можно
видеть, что PARDISO сохраняет преимущество во времени работы и показывает лучшие
результаты на 5 матрицах. Сравнивая двухуровневый алгоритм и MUMPS, нужно отметить
преимущество первого на 6 матрицах (parabolic_fem, audikw_1, bone010_M, bone010, StocF-1465,
Flan-1565). В свою очередь MUMPS также выигрывает на 6 матрицах (pwtk, msdoor, tmt_sym,
ecology2, thermal2, G3_circuit). Однако, если обратиться к диаграмме (рисунок 5), можно
видеть, что время работы на этих матрицах достаточно маленькое по сравнению с матрицами, на
которых получен выигрыш. Сравнивая время работы двухуровневого алгоритма и PARDISO
можно отметить, что ситуация во многом схожая: матрицы, на которых отставание наиболее
заметно (pwtk, msdoor, ecology2, thermal2, G3_circuit), обрабатываются численно фазой
достаточно быстро и по причинам, описанным в предыдущем разделе, дают худшее
масштабирование. В остальных запусках время работы численной фазы обоих решателей в большей степени
сопоставимо.
7. Заключение</p>
      <p>Основным результатом работы является комбинированная схема распараллеливания
мультифронтального метода. Данная схема сочетает лучшие свойства двух подходов к организации
параллелизма при обработке дерева исключения. Так, большое число «легковесных задач»,
соответствующих нижним уровням дерева, решается в рамках парадигмы распараллеливания по
задачам с динамической балансировкой нагрузки. При этом на верхних узлах дерева малое
число «тяжеловесных задач» решается путем применения многопоточного BLAS. В работе
сформулирован критерий переключения между схемами, показан выигрыш в
производительности и памяти по сравнению с ранее подготовленной реализацией, выполнено сравнение с MKL
PARDISO и MUMPS.
В дальнейшем планируется рассмотреть возможность усовершенствования разработанных
программных реализаций за счет сокращения накладных расходов на организацию
параллелизма. В частности, представляют интерес перспективы применения разных реализаций
приоритетных очередей. Другим направлением дальнейших исследованием является разработка
гетерогенных реализаций, использующих для расчетов не только традиционные процессоры, но
и ускорители вычислений.
Литература
Two-level parallel strategy for multifrontal sparse Cholesky
factorization
Sergey Lebedev, Dmitry Akhmedzhanov, Evgeniy Kozinov, Iosif Meyerov, Anna Pirova and
Alexander Sysoyev
In this paper we consider the problem of parallelization of Cholesky factorization numerical
phase for sparse symmetric positive definite matrices. A new strategy for parallelization of the
multifrontal method for shared-memory systems is suggested. This strategy combines two
approaches to parallelism organization depending on the elimination tree level. At the bottom
of the tree, parallel computing of nodes from a priority queue takes place. At the top levels of
the tree, nodes are calculated sequentially, employing multithreaded BLAS procedures.
Experimental results show that the implementation of the scheme described is commensurable
with MUMPS and MKL PARDISO solvers.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Li</surname>
            <given-names>X</given-names>
          </string-name>
          .
          <article-title>Direct Solvers for Sparse Matrices</article-title>
          . URL: http://crd-legacy.lbl.gov/~xiaoye/SuperLU/SparseDirectSurvey.pdf (дата обращения:
          <volume>15</volume>
          .
          <fpage>06</fpage>
          .
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          3.
          <string-name>
            <surname>Lebedev</surname>
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Akhmedzhanov</surname>
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kozinov</surname>
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Meyerov</surname>
            <given-names>I</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pirova</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sysoyev</surname>
            <given-names>A</given-names>
          </string-name>
          .
          <article-title>Dynamic Parallelization Strategies for Multifrontal Sparse Cholesky Factorization //Parallel Computing Techologies</article-title>
          . -
          <string-name>
            <surname>Springer</surname>
            <given-names>LNCS</given-names>
          </string-name>
          ,
          <year>2015</year>
          <article-title>(принята к печати).</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Davis</given-names>
            <surname>Timothy</surname>
          </string-name>
          <article-title>A. Direct methods for sparse linear systems</article-title>
          . Vol.
          <volume>2</volume>
          .
          <string-name>
            <surname>Siam</surname>
          </string-name>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          5.
          <string-name>
            <surname>Liu</surname>
            <given-names>J. W. H.</given-names>
          </string-name>
          <article-title>The multifrontal method for sparse matrix solution: Theory and</article-title>
          practice // SIAM review.
          <year>1992</year>
          . Vol.
          <volume>34</volume>
          , No. 1. P.
          <volume>82</volume>
          -
          <fpage>109</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          6.
          <string-name>
            <surname>Kalinkin</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Arturov</surname>
            <given-names>K.</given-names>
          </string-name>
          <article-title>Asynchronous approach to memory management in sparse multifrontal methods</article-title>
          on multiprocessors // Applied Mathematics.
          <year>2013</year>
          . Vol.
          <volume>4</volume>
          , No.
          <year>12A</year>
          . P.
          <volume>33</volume>
          -
          <fpage>39</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          7.
          <string-name>
            <surname>George</surname>
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Saxena</surname>
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gupta</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Singh</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Choudhury</surname>
            <given-names>A. R.</given-names>
          </string-name>
          <article-title>Multifrontal factorization of sparse SPD matrices on GPUs //</article-title>
          <source>Parallel &amp; Distributed Processing Symposium (IPDPS)</source>
          ,
          <year>2011</year>
          . P.
          <volume>372</volume>
          -
          <fpage>383</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          8.
          <string-name>
            <surname>Duff</surname>
            <given-names>I.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Reid</surname>
            <given-names>J.K.</given-names>
          </string-name>
          <article-title>The multifrontal solution of indefinite sparse symmetric linear //</article-title>
          <source>ACM Transactions on Mathematical Software (TOMS)</source>
          .
          <year>1983</year>
          . Vol.
          <volume>9</volume>
          , No. 3. P.
          <volume>302</volume>
          -
          <fpage>325</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          9.
          <string-name>
            <surname>Liu</surname>
            <given-names>J.W.</given-names>
          </string-name>
          <article-title>The multifrontal method and paging in sparse Cholesky factorization //</article-title>
          <source>ACM Transactions on Mathematical Software (TOMS)</source>
          .
          <year>1989</year>
          . Vol.
          <volume>15</volume>
          , No. 4. P.
          <volume>310</volume>
          -
          <fpage>325</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          10.
          <string-name>
            <surname>Amestoy P.R.</surname>
          </string-name>
          , et al.
          <article-title>Vectorization of a multiprocessor multifrontal code //</article-title>
          <source>International Journal of High Performance Computing Applications</source>
          .
          <year>1989</year>
          . Vol
          <volume>3</volume>
          , No. 3. P.
          <volume>41</volume>
          -
          <fpage>59</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          11.
          <string-name>
            <surname>L'Excellent J.Y.: Multifrontal</surname>
            <given-names>Methods</given-names>
          </string-name>
          : Parallelism,
          <string-name>
            <given-names>Memory</given-names>
            <surname>Usage</surname>
          </string-name>
          and Numerical Aspects // Ph.D. thesis, Ecole normale superieure de lyon-
          <source>ENS LYON</source>
          .
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          12.
          <string-name>
            <surname>Лебедев</surname>
            <given-names>С. А.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Козинов</surname>
            <given-names>Е</given-names>
          </string-name>
          . А.
          <article-title>Разработка нового решателя разреженных систем линейных уравнений // Высокопроизводительные параллельные вычисления на кластерных системах: Материалы XIII Всероссийской конференции</article-title>
          . / Изд-во
          <source>ННГУ: Н. Новгород</source>
          ,
          <year>2013</year>
          . С.
          <volume>301</volume>
          -
          <fpage>306</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          13.
          <string-name>
            <surname>Ashcraft</surname>
            <given-names>C.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grimes</surname>
            <given-names>R.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lewis</surname>
            <given-names>J.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Peyton</surname>
            <given-names>B.W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Simon H.D.</surname>
          </string-name>
          ,
          <string-name>
            <surname>Bjorstad</surname>
            <given-names>P.E.</given-names>
          </string-name>
          <article-title>Progress in sparse matrix methods for large linear systems on vector supercomputers //</article-title>
          <source>International Journal of High Performance Computing Applications</source>
          .
          <year>1987</year>
          . Vol
          <volume>1</volume>
          , No. 4. P.
          <volume>10</volume>
          -
          <fpage>30</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          14.
          <string-name>
            <surname>Ng</surname>
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Peyton</surname>
            <given-names>B.W.</given-names>
          </string-name>
          <article-title>A supernodal Cholesky factorization algorithm for shared-memory multiprocessors //</article-title>
          <source>SIAM Journal on Scientific Computing</source>
          .
          <year>1993</year>
          . Vol
          <volume>14</volume>
          , No. 4. P.
          <volume>761</volume>
          -
          <fpage>769</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          15.
          <string-name>
            <surname>L'Excellent</surname>
            <given-names>J.Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sid-Lakhdar</surname>
            <given-names>M.W.</given-names>
          </string-name>
          <article-title>Introduction of shared-memory parallelism in a distributedmemory multifrontal solver</article-title>
          // Research Report.
          <year>2013</year>
          . RR-
          <volume>8227</volume>
          &lt;
          <fpage>hal</fpage>
          -
          <lpage>00786055</lpage>
          &gt;.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          16.
          <string-name>
            <surname>Geist</surname>
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ng</surname>
            <given-names>E.</given-names>
          </string-name>
          <article-title>Task scheduling for parallel sparse Cholesky factorization</article-title>
          //
          <source>International Journal of Parallel Programming</source>
          .
          <year>1989</year>
          . Vol.
          <volume>18</volume>
          , No. 4. P.
          <volume>291</volume>
          -
          <fpage>314</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          17.
          <string-name>
            <surname>Davis</surname>
            <given-names>T.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hu</surname>
            <given-names>Y</given-names>
          </string-name>
          . The university of Florida sparse matrix collection //
          <source>ACM Transactions on Mathematical Software (TOMS)</source>
          .
          <year>2011</year>
          . Vol
          <volume>38</volume>
          , No.
          <volume>1</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          18.
          <string-name>
            <surname>Karypis</surname>
            <given-names>G.</given-names>
          </string-name>
          , et al.
          <article-title>A Fast and Highly Quality Multilevel Scheme for Partitioning Irregular Graphs //</article-title>
          <source>SIAM Journal on Scientific Computing</source>
          .
          <year>1999</year>
          . Vol.
          <volume>20</volume>
          , No. 1. P.
          <volume>359</volume>
          -
          <fpage>392</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          19. Pellegrini F.
          <source>Scotch and libScotch 6</source>
          .
          <article-title>0 User's Guide /</article-title>
          / Tech. rep.,
          <source>LaBRI</source>
          .
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          20.
          <string-name>
            <surname>Pirova</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Meyerov</surname>
            <given-names>I.</given-names>
          </string-name>
          <article-title>MORSy - a new tool for sparse matrix reordering //</article-title>
          <source>In Proceedings of an International Conference on Engineering and Applied Sciences Optimization</source>
          .
          <year>2014</year>
          . P.
          <year>1952</year>
          -
          <fpage>1963</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          21. Intel Math Kernel Library Reference Manual. URL: [https://software.intel.com/en-us/node/470282
          <source>] (дата обращения 15.06</source>
          .
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          22.
          <article-title>MUltifrontal Massively Parallel Solver (MUMPS 5.0.0) User's guide URL:</article-title>
          [http://mumps.enseeiht.
          <source>fr/doc/userguide_5.0.0.pdf] (дата обращения 15.06</source>
          .
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>