Алгоритм ilu(0)-разложения с использованием OpenMP

УДК 519.612

Е.В. Лежнин, Р.Р. Ахунов, С.П. Куксенко

Алгоритм 1Ьи(0)-разложения с использованием OpenMP

Приведен алгоритм Ши(0)-разложения, использующий разрежённый строчный формат. Разработана параллельная версия алгоритма с использованием стандарта OpenMP. Проведен вычислительный эксперимент, показавший возможность получения ускорения до 1,85 раза. Ключевые слова: система линейных алгебраических уравнений, 1Ьи(0)-разложение, итерационный метод, предобусловливание, разреженный строчный формат, OpenMP.

Из-за постоянного увеличения сложности радиоэлектронной аппаратуры (РЭА) целесообразен учёт электромагнитной совместимости (ЭМС) на этапе проектирования РЭА посредством имитационного моделирования с помощью специализированного программного обеспечения (ПО). При этом основные вычислительные затраты в задаче имитационного моделирования часто приходятся на решение СЛАУ с плотной матрицей большой размерности. Существуют два класса методов решения СЛАУ: точные методы (например, метод Гаусса) и итерационные методы. Для точных методов основные вычислительные затраты пропорциональны N (N - порядок матрицы), что существенно ограничивает использование таких методов, особенно при большом порядке матрицы СЛАУ. Для итерационных методов вычислительные затраты пропорциональны Nlt*N2 (Nlt - количество итераций). Из этого следует, что при Nlt < N (а это часто имеет место) использовать итерационные методы выгоднее. Для уменьшения вычислительных затрат в итерационных методах используют предобусловливание. Однако для предобусловливания необходимо хранить элементы дополнительной матрицы, что приводит к увеличению требуемой памяти компьютера. Между тем разреженность данной матрицы позволяет уменьшить дополнительную память и, кроме того, получать ускорение решения СЛАУ при использовании специализированных форматов хранения разреженных матриц [1]. Наиболее работоспособные методы построения неявного преобусловливания основаны на LU-разложении. Однако при этом происходит неконтролируемое появление новых ненулевых элементов, что при использовании разреженных форматов недопустимо, так как данные форматы могут стать неэффективными. В работе [2] предложен алгоритм ^и(0)-разложения, основанный на использовании разреженного строчного формата, позволяющий сократить количество обрабатываемых данных, тем самым увеличив скорость вычисления предобусловливателя. Однако существующая реализация алгоритма работает последовательно и остаётся неисследованной возможность использования параллельной версии для снижения времени решения СЛАУ. Для реализации параллельных циклов широко используется стандарт OpenMP [3].

Цель данной работы - разработка алгоритма ^и(0)-разложения с использованием OpenMP.

Для ясности дальнейшего изложения далее приведен алгоритм ^и(0)-разложения с использованием разреженного строчного формата [2].

Элементы матрицы хранятся в массиве aelem. С целью ускорения работы алгоритма используются массивы iptr, jptr, diag, tmpvec, tmpjptr, позволяющие избежать добавления дополнительных условий внутри цикла [2]. Алгоритм содержит внешний цикл (строки 1-25) и внутренние циклы (строки 4-7, 8-24, 21-24). Итерации циклов 1-25 и 8-24 имеют зависимости от предыдущих. Поэтому эти циклы нельзя распараллелить с помощью OpenMP. Циклы 4-7 и 21-24 не имеют зависимостей, и их можно распараллелить. Однако сложность цикла 4-7 невысока, и поэтому в данной работе он не рассматривается. Параллельная область создаётся внутри цикла 21-24 и данные делятся между потоками. Для этого используется директива #pragma parallel for.

Для вычислительного эксперимента использовался персональный компьютер с параметрами: платформа - Intel(R) Core(TM) i7 CPU 970; частота процессора - 3,20 ГГц; объем ОЗУ - 24 Гбайт; число ядер - 6; число виртуальных процессоров - 12; операционная система - Windows 7х64; компилятор Microsoft Visual C++ 2013.

Матрицы СЛАУ получены из задачи вычисления электрической ёмкости двух полосок на диэлектрическом слое над идеально проводящей плоскостью (рис. 1) в системе TALGAT [4]. За счёт изменения числа сегментов сформированы матрицы порядков 4800 и 9600.

182 СООБЩЕНИЯ

1 Для г = 2, ..., N

2 = 1р1г(/') - номер начального элемента

3 рг1 = Истина

4 Для ' = s1, ..., 1р1г

5 1шруее(]р1г (/'))=Истина

6 1шр]р1г(]р1г (/'))=/'

7 Увеличить'

8 Пока рг1 = Истина Продолжать

9 к =

10 Если к > г

11 Прервать текущий цикл

12 ае1еш

13 S2 = 51

14 51 = 51 + 1

15 У1 = 51

16 Уепё1 = iptr

17 у2 = diag(k)+1

18 Уепё2 = iptr

19 Если Уепё1 < У1 или Уепё2 < У 2 Тогда

20 Продолжить текущий цикл

21 Для ' = У2, Уепё2

22 Если 1шруее(]р1г(/'))=Истина

23 ае1еш(Шр]р1г(]р1г(/))) = ае1еш(1шр]р1г(]р1г(/'))) -

ае1еш

24 Увеличить '

25 Увеличить г

Алгоритм 1. 1Ьи(0)-разложение

Рис. 1. Исследуемая конфигурация из двух проводников и диэлектрика

В таблице приведено ускорение за счёт использования параллельной версии алгоритма при увеличении количества потоков от 2 до 12. Видно, что при плотности матрицы 100% для любых N быстрее всего оказывается реализация алгоритма, использующая 4 потока. Для плотности матрицы 61-62% эффективным оказывается реализация, использующая более 2 потоков, но менее 11 потоков. При плотности матрицы менее 60% последовательная реализация алгоритма оказывается более эффективной, чем параллельная. Этот факт объясняется тем, что при данной плотности начинают преобладать вычислительные затраты на создание потоков, а не на вычисление элементов матрицы.

Ускорение вычисления при использовании параллельной версии алгоритма !Ьи(0)-разложения относительно последовательной при _ разном количестве потоков

Количество потоков N = 4800 N = 9600

100% 61% 46% 100% 62% 57%

2 1,33 1,07 0,88 1,29 1,29 0,45

3 1,65 1,29 0,93 1,76 1,67 0,57

4 1,81 1,29 0,98 1,85 1,72 0,60

5 1,62 1,32 0,96 1,64 1,68 0,60

6 1,40 1,32 0,95 1,48 1,61 0,54

7 1,28 1,31 0,95 1,42 1,65 0,54

8 1,30 1,32 0,90 1,48 1,69 0,53

9 1,37 1,37 0,93 1,53 1,74 0,53

10 1,42 1,35 0,90 1,58 1,73 0,53

11 1,29 1,02 0,83 1,56 1,61 0,43

12 1,03 0,81 0,83 1,14 0,81 0,18

Таким образом, в работе приведены результаты разработки параллельной версии алгоритма 1Ьи(0)-разложения с использованием стандарта OpenMP. Получены результаты работы алгоритма при изменении порядка матриц, их плотности и количества используемых потоков. Из полученных результатов можно сделать вывод об областях параметров, при которых эффективно использовать параллельную реализацию алгоритма.

Литература

1. Писсанецки С. Технология разреженных матриц. - М.: Мир, 1988. - 410 с.

2. Ахунов Р.Р. Усовершенствование алгоритма 1ЬИ(0)-разложения, использующего разреженный строчный формат / Р.Р. Ахунов, С.П. Куксенко, В.К. Салов, Т.Р. Газизов // Численные методы и вопросы организации вычислений: Зап. научн. сем. ПОМИ. - 2012. - Т. 405. - C. 40-53.

3. Библиотека OpenMP [Электронный ресурс]. - Режим доступа: http://openmp.org/wp/, свободный (дата обращения: 06.10.2015).

4. Куксенко С.П. Новые возможности системы моделирования электромагнитной совместимости «TALGAT» / С.П. Куксенко, А.М. Заболоцкий, А.О. Мелкозеров, Т.Р. Газизов // Докл. Томск. гос. ун-та систем упр. и радиоэлектроники. - 2015. - № 2(36). - C. 45-50.

Лежнин Евгений Владимирович

Магистрант каф. автоматизированных систем управления ТУСУРа

Тел.: 8 (382-2) 41-34-39

Эл. почта: zlvlezhnin@gmail.com

Ахунов Роман Раисович

Аспирант каф. телевидения и управления (ТУ) ТУСУРа Тел.: 8 (382-2) 41-34-39 Эл. почта: arr@pop3.ru

Куксенко Сергей Петрович

Канд. техн. наук, доцент, каф. ТУ

Тел.: 8-983-237-75-19

Эл. почта: KSergP@mail.ru

Lezhnin E.V., Ahunov R.R., Kuksenko S.P. ILU(0)-factorization algorithm with the use of OpenMP

ILU(0) factorization with the use of compressed sparse row matrix is described. Parallel realization of the algorithm with the use of OpenMP is developed. Computational experiment showing acceleration of the paralleliza-tion up to 1.85 times is done.

Keywords: system of linear equations, ILU(0) factorization, iterative method, compressed sparse row format, preconditioning, OpenMP.