Паралеллный алгоритм решения систем линейных алгебраических уравнений с многодиагональной матрицей коэффициентов

Тип работы:
Реферат
Предмет:
Физико-математические науки


Узнать стоимость

Детальная информация о работе

Выдержка из работы

НАУЧНОЕ ИЗДАНИЕ МЕТУ ИМ. Н. Э. БАУМАНА
НАУКА и ОБРАЗОВАНИЕ
Эл № ФС77 — 48 211. Государственная регистрация № 421 200 025. КБМ 1994−0408
электронный научно-технический журнал
Паралеллный алгоритм решения систем линейных алгебраических уравнений с многодиагональной матрицей коэффициентов
# 07, июль 2013
DOI: 10. 7463/0713. 590 785
Желдаков А. В., Федорук В. Г.
УДК 004. 942, 519. 876. 5
Россия, МГТУ им. Н. Э. Баумана www. streeter@mail. ru fedoruk. bmstu@mail. ru
Введение
При решении задач математической физики численными методами, такими как метод конечных элементов [1], метод конечных разностей [2], часто возникает необходимость нахождения решения систем линейных алгебраический уравнений (СЛАУ) [3] высоких порядков, матрица коэффициентов которых имеет выраженный диагональный (ленточный) характер. С распространением многопроцессорных вычислительных систем появилась возможность адаптации точных алгоритмов решения СЛАУ к данной архитектуре. Работы в этом направлении ведутся продолжительное время [4], разработано большое количество алгоритмов для вычислительных систем различной архитектуры [5−7]. Однако, предложенные алгоритмы рассматривают диагональную ленту матрицы коэффициентов как полностью заполненную ненулевыми элементами, хотя в практических задачах эта лента, как правило, содержит большое количество ненулевых диагоналей. Поэтому актуальной является задача разработки алгоритма, учитывающего внутреннюю разреженность диагональной ленты матрицы коэффициентов, что должно повысить его экономичность.
В работе предложен алгоритм параллельного решения СЛАУ с многодиагональной (многоленточной) матрицей коэффициентов на многопроцессорной вычислительной системе с общей памятью. Данный алгоритм реализует метод Гаусса [3] и состоит из трёх основных этапов: трансформация задачи, прямой ход алгоритма, обратный ход алгоритма.
1. Постановка задачи
Задача нахождения решения СЛАУ может быть представлена в виде
Дх = с, (1)
где A — квадратная ленточная матрица коэффициентов с шириной ленты L, х — вектор-столбец неизвестных, с — вектор-столбец свободных членов. В общем случае A, х и с имеют вид
Под решением задачи понимают такую совокупность чисел и1г112, …, 11п, которая при
подстановке на место неизвестных Х±, Х2,--, Хп обращает все уравнения этой системы в тождества. Для большинства практических задач определитель матрицы, А отличен от 0, следовательно, задача (1) имеет единственное решение.
Следует отметить следущую особенность решения СЛАУ с ленточной матрицей коэффициентов. Исходная матрица в практических задачах является сильно разреженной, однако, в ходе решения прямыми методами (таким, например, как метод Гаусса) лента полностью заполняется новыми ненулевыми элементами, что резко замедляет ход как последовательного, так и параллельного решения.
2. Трансформация задачи
На данном этапе производится изменение задачи (1) с целью уменьшения количества новых ненулевых элементов матрицы коэффициентов и упрощения процедуры распределения нагрузки между процессорами вычислительной системы.
Пусть N — число диагоналей, содержащих отличные от нуля элементы матрицы А
(ненулевые диагонали),
ак, кЕ1: Щ
— вектор, содержащий элементы к-ой ненулевой диагонали. Размерность векторов & lt-4 постоянна и равна п. Индексы компонентов векторов
Лк, кб[ 1: Н соответствуют индексам строк матрицы А, в которых они находятся. Если какой-
либо компонент векторов, к € [1: «] выходит за пределы матрицы А, то данные компоненты тождественно равны 0. Будем считать, что диагональ матрицы А, представленная вектором йх, не содержит нулевых элементов.
Введем смещение 5 — натуральное число, лежащее в интервале [0,ЛГ-1]. Значение 5 определяется по формуле
Расширим вектор х задачи (1), добавив в его начало? переменных, а также введём в систему дополнительных уравнений
где %2& gt- - неизвестные, добавленные в (1). Введённым уравнениям присвоим номера
^ _ _. Тогда модифицированная задача примет вид
Ах'- = с, (3)
Ап … ?1.
: Аа:
А* …
где А'- - матрица коэффициентов, х'- - вектор-столбец неизвестных и с'- - вектор-столбец свободных членов. Размерность матрицы, А составит (п + ^)2, размерности векторов х'- и с'- будут равны О1 5}.
Далее к строкам матрицы, А с индексом * € [1: 5] прибавим строки матрицы, А, полученные после модификации (1), по следующему правилу — к строке с индексом I € [1: 5] прибавляется строка с индексом / = 1 + 71
Рассмотрим пример трансформации исходной задачи (1) размерности 5×5 со смещением 5 = 2,1 = 5 и N = 3. Исходная задача имеет вид
%1%
0зд 0 0
0 & amp-2,2 0 & amp-2,2 0
1,3 0 0
0 02,4 0
0 0 сї і - 0 (?2. 5
*
^2
^3
*4
(4)
Отметим, что в данной задаче Б = (йі, й2, й3). Модифицируем задачу (4), используя рассмотренный выше алгоритм.
Так как? = 2, добавим две дополнительные переменные и два уравнения в задачу (4):
хл х? X* х5 Хв х7
0 0 03.1 0 0
0 0 02,2 03,2 0
0 0 °Д.З 02,3 0 ^3,3
0 0 0 ^ 1,4 02,4 0
0 0 0 0 & lt-*1.5 0 ^2,5
1 0 0 0 0 0 0
0 1 0 0 0 0 0
*
*2
^3
х±
Ї6
Прибавим последние две строки матрицы А'- к первым двум по вышеуказанному правилу, получим
хі х? хя х4×5 Хв х7
1 0 0зд 0 0
0 1 02,2 0 & amp-2,2 0
0 013 02,3 0 ^3,3
0 0 01,4 02,4 0
0 0 0 0 0 ^2,5
1 0 0 0 0 0 0
0 1 0 0 0 0 0
*
Х2
*2.
^4
^6
(5)
Отметим, что в модифицированной задаче (5) векторы ненулевых диагоналей имеют вид
1 = (1| 1|1,31 ^1,41 ^1,5!2 = 02, 12, 212,31 & amp-2А>-2,в ^3 = 0*3,1& gt-3,2 & gt-3,31 0, 0).
На основе теоремы Кронекера — Капелли легко показать существование и единственность решения задачи (3) при условии существования и единственности решения задачи (1).
Необходимо отметить, что проведённая трансформация системы уравнений привела её матрицу коэффициентов к верхнетреугольному виду с нижним окаймлением. Это означает, что в прямом ходе метода Г аусса все подлежащие исключению ненулевые элементы матрицы (в том числе и вновь возникающие) располагаются только в её? последних строках.
3. Представление данных
В задаче (3), как правило, матрица, А является сильно разреженной, поэтому нецелесообразно хранить все элементы матрицы. Так уже при п = 10 000 для хранения матрицы А, каждый элемент которой представлен числом с плавающей точкой двойной точности, требуется около 745 Мб.
Матрица А. полностью определяется следующими параметрами и векторами:
• п — размерность одной строки матрицы А-
•? — смещение матрицы А-
• Ь — ширина ленты матрицы А-
• N — число ненулевых диагоналей матрицы А
. & amp-к, к € [1: Л/]
— векторы размерностью п, содержащие элементы к-ой ненулевой
диагонали матрицы А
• р — вектор размерности N где равен номеру /'--ой ненулевой
диагонали, отсчитанному от
Вектора с и х сохраняют свое представление, указанное в (2).
Для матрицы А'- дополнительно введем векторы О: *!. Каждый из этих векторов
имеет размерность Ь и содержит отличные от 0 элементы строки матрицы А'- с номером
(та + Т), I е [1: 5]
При таком подходе к представлению данных система из 10 000 уравнений с N = 3 и
^ = 100 занимает около 0,3 Мб. Без введения вектора р эта же задача занимала бы в памяти 7,62 Мб (нет возможности учесть диагонали, состоящие из нулей внутри ленты).
4. Прямой ход алгоритма
Первоначально первые? уравнений задачи (3) вычитаются из последних? уравнений
системы по следующему правилу: из уравнения с номером /? [н + 1: 71 + 5] вычитается уравнение с номером I — V — та Для примера (4) получим систему
*1 *2 *3×4 хБ *6 х7
1 0 & amp-2,1 03 д 0 0
0 1 02,2 03,2 0
0 01,3 02,3 0 ^3,3
0 0 0 °Д4 02,4 0
0 0 0 0 (?15 0 ^2,5
0 0 ~^2,1 0 ~& amp-2л 0 0
0 0 0 — (?2,2 0 ~& amp-2,2 0
*
Х2
*3
*6
Тогда векторы Ь*,?е[1: 2] принимают вид1 — (& lt-^2д, 0, ^зд^^),
Ь2 = ^2,2& gt-^г~^3,2>-^).
Далее начинается итерационный процесс, состоящий из (Ц ~ 5) итераций. Каждая
и Ь+А € 1: 51 л
итерация состоит из двух шагов. На первом шаге компоненты векторов г 1 1 и с
вычисляются по формулам
К,} =
— К, ¦ с'-. ,
«1. 1+3
)=?т, тЕ[ 1: Л/], 1 ?[1: п-5]Д? [1: 5]. (6)
В выражении (6) индекс / - номер итерации, / - номер ненулевой диагонали в векторе Р, стоящий на позиции т, — значение /-го компонента вектора Ьг на итерации с номером /, С «+? -значение компоненты вектора с'- с индексом (Л + ?) на итерации с номером /.
На втором шаге итерации выполняется циклический сдвиг векторов ^ (Д ^ [ 1: 5] на один элемент влево.
Из выражения (6) легко видеть возможность независимого вычисления компонентов
векторов Ь|. ,?с[1:5+ 1] ЧТо позволяет параллельно производить вычисления в общем
случае на (5 & quot- N) независимых узлах вычислительной системы.
После выполнения (и 5) итераций в правом нижнем углу матрицы коэффициентов образуется (возможно, полностью заполненная) подматрица Q размерности? х?. Для примера (4) получаем
*1 *2 *2×4 хБ х& amp- х7
1 0 ?2,1 03,1 0 0
0 1 0 ?2,2 0 ?3,2 0
0 0 ?1,3 0 ?2,3 0 ?3,3
0 0 0 ^ 1,4 0 ?2,4 0
0 0 0 0 ?1.5 0 ?2,5
0 0 0 0 0 Ч1.1 Ц. 1,2
0 0 0 0 0 Чг,і 42,2
ж
^2
^3
Х4
*6
При этом векторы Ь|. ,?е[1:2] имеют вид1 — 0, $ 1/1г $ 1,2),
Ь: = 0.0.0., : у: :.¦. в частном случае некоторые диагональные элементы
(7иде[1: 5]
могут быть равны нулю, что потребует переупорядочивания последних? строк матрицы А
Перед выполнением следующего этапа требуется синхронизировать работу программы. Для последних? уравнений задачи (3) выполняется прямой ход метода Гаусса. Для примера (4) имеем
хл *7 Хд х4×5 *6 х7
1 0 ?2,1 0 ?3,1 0 0
0 1 0 ?2,2 0 ?3,2 0
0 0 ?1,3 0 ?2,3 0 ?3,3
0 0 0 ?1,4 0 ?2,4 0
0 0 0 0 ?1,5 0 ?2,5
0 0 0 0 0 1 Ч 1,2
0 0 0 0 0 0 1
*
*2
^2
Ї6
Тогда вектора Г € [1: 2] примут вид1 — (0,0,1, С{ 12) з — (0,0, О, 0,1)
5. Обратный ход алгоритма
Обратный ход алгоритма полностью совпадает с аналогичным этапом канонического метода Гаусса.
6. Схема метода для многопроцессорной вычислительной системы
Рассматриваем вычислительную систему с общей памятью, включающую р процессоров. Схема метода решения задачи на вычислительной системе данной архитектуры выглядит следующим образом.
1) Какой-либо из процессоров назначается главным (таяїєг-процессор), а все остальные — вспомогательными (?7ауе-процессоры). На шаБІег-процессоре запускается основной процесс алгоритма.
2) В оперативную память системы загружаются исходные данные решаемой задачи.
3) На master-процессоре выполняем модификацию задачи (1) согласно изложенному
выше алгоритму.
4) Запускается р потоков управления, каждому из которых передаётся на обработку
векторов Ь tft е[1: 5|. Если S не кратно р, то последний поток управления получит
меньше векторов? ? [1: 5] Чем остальные. Распределение потоков управления по процессорам выполняется планировщиком операционной системы. При обработке данных участвуют как master-процессор, так и slave-процессоры.
5) Каждый поток управления, используя (6), производит модификацию
векторов bt! t ft/'-Z+lii^+l)1 z]r где i — номер потока управления.
6) На master-процессоре выполняется прямой ход стандартного метода Гаусса для
последних S уравнений модифицированной задачи.
7) На master-процессоре выполняется обратный ход метода Г аусса.
7. Аналитическая оценка эффективности алгоритма
Для начала оценим время выполнения итерации алгоритма на одном процессоре. На
каждой итерации требуется выполнить не более чем S операций деления, 5 ¦ А/ операции
умножения и 5 ¦ N операций вычитания.
Пусть среднее время выполнения одной операции деления над числами с плавающей
точкой двойной точности задаётся константойдел, а время выполнения прочих арифметических
операций — константойарф. Тогда аналитическое выражение для времени выполнения прямого хода для всей системы имеет вид
Г (та, N, S) = (n-S) (S)-(2-N-?арф + ?дея) + 53 — ?арф, (7)
где ^ '-нрф — слагаемое, введенное для учета верхней границы числа арифметических операций, требуемых для решения СЛАУ из S уравнений в конце выполнения прямого хода
алгоритма. Константы ^арф-'-дел определяются экспериментально.
Оценим время выполнения данного алгоритма на многопроцессорной системе с общей оперативной памятью, используя рассмотренную выше схему метода:
Гмп (та, N, S, р) = Торг + TgbPl (n, N, 5, р) (8)
В (8) время Т0рг. накладные расходы на модификацию задачи (1), запуск р потоков и
распределения их по процессорам, Т'-выч время выполнения вычислительных операций всеми процессорами:
TSM4(n, N, S, p) = maxi=1. i<-p (Ti (7i, NlZy) + 53 -?арф. (9)
В формуле (9) величина — время решения части задачи г-ым процессором. В
данную величину следует включить время обращения процессора к общей оперативной памяти.
В случае, если все процессоры системы имеют одинаковую производительность и не имеют дополнительной вычислительно нагрузки, выражение (8) принимает вид
Отсюда получаем выражение для ускорения вычислительного процесса
Т (п^, 5)
'- (11)
81Ш (д, ЛГ, 5, р) =
ТяоСч. ЛГАР) •
Ниже приведены результаты аналитического исследования алгоритма.
Пример 1. Отобразим зависимость ?, шСр), р е [1: 64]
для матрицы с п = 25 000 000,
N 5,? = 2500. Количество вспомогательных векторов? Е [1: 5] При модификации задачи составляет 2500, объем требуемой памяти — 1,02 Гб. Организационное время на создание одного
потока принимается постоянным и составляет Полученная зависимость приведена на рисунке 1.
0,0003 сек, ^арф
6,4- 10 10сек/оп.
Рисунок 1. Зависимостьтр 0^ N г р) от ЧИсла процессоров р для примера 1
На рисунке 2 дан график зависимости ускорения от смещения? ленты матрицы коэффициентов при фиксированном количестве процессов р=8.
Рисунок 2. Зависимость 5^0п, ЛГ, 5, р) от смещения для примера 1
Пример 2. Здесь приводятся зависимости ускорения 5щСрХр? [1: 64] при
5 = 5000 и ^(5), 5 € [1:~ 1] для задачи с п = 100 000 000, N = 10 000, остальные
исходные данные аналогичны примеру 1. Ниже на рисунках 3 и 4 приведены зависимости аналогичные зависимостям на рисунках 1 и 2.
Рисунок 3. Зависимость (п, Nг 5, р) от числа процессоров Р для примера 2
5
З
2

у







у V 15 20 25 30 35 40 45 50 55 60 65 Б
О
Рисунок 4. Зависимость 5^(71, N, 5,?) от смещения для примера 2
Пример 3. Здесь даны зависимости ускоренияыпСрХр € [1: 64] при 5 — 700 и Е [1.- - 1] дЛЯ матрицы с71 = 3 000 000, N = 5, Ниже на рисунках 5 и 6
приведены зависимости аналогичные зависимостям на рисунках 1 и 2.
5тр (р)

56
48
40
32
24
16








8 12 ТЬ 20 24 28 32 36 ЇЇ 44 48 52 56 60 64 р
Рисунок 5. Зависимость от числа процессоров р для примера 3
Рисунок 6. Зависимость Ялт (п, Л/, 5, р)от смещения для примера 2
А=
Пример 4. Здесь исследуется зависимость ускорения Ялт (р), Р? [1: 64] для задачи небольшой размерности 71 = 10 000, Л7 = 100,5 = 505 результат представлен на рисунке 7.
5тр (р!
С2
36
30
12



1
/


12 16 20 21 28 32 36 4 ?7 44 18 52 56 60 64
Рисунок 7. Зависимость, 1р) от числа процессоров р для примера 4
Из рассмотренных выше примеров очевидно, что ускорение слабо зависит от размерности задачи, а зависит лишь от смещения. Ступеньки на рисунках 1, 3, 5, 7 появились из-за несбалансированности загрузки системы, полученной в результате некратности чисел? и р. Так при увеличении р не всегда стоит ожидать кратного увеличения ускорения. Из рисунков 2, 4, 6 видно, как с ростом смещения падает ускорение, это связано с преобладанием слагаемого
^? в (9). Наибольшая эффективность алгоритма достигается при равенстве количества
процессоров системы р и смещения ?.
8. Программная реализация
Алгоритм реализован на языке высокого уровня С++ [8] с использованием стандартных библиотек многопоточного программирования операционной системы ЦМХ [9].
Ниже приведены результаты численных экспериментов для некоторых СЛАУ.
п = 100 000,? = 400, N = 5.
Кол-во ядер 1 2 3 4
Тмп (сек.) 8,12 4,42 3,03 2,09
1,00 1,83 2,67 3. 87
Кол-во ядер 1 2 3 4
Гмп (сек.) 31,40 16,22 11,17 8,19
1,00 1,93 2,81 3,83
п = 3 000 000,? = 400, N = 5.
Кол-во ядер 1 2 3 4
Тпп (сек.) 243 127 86 64
мп 1,00 1,910 2,820 3,790
п = 3 000 000,? = 700, N = 5.
Кол-во ядер 1 2 3 4
Тмп (сек.) 957 492 322 254
1,00 1,94 2,97 3,76
Далее для п = 3 000 000, N = 5 приведена зависимость ускорения Э^от? при использовании четырёхядерной вычислительной системы.
? 16 32 64 128 256 512 1024 2048
мп (сек.) 0,001 0,095 3,15 7,39 75,11 93 1192 11 260
?1 (сек.) 0,0037 0,254 11,28 26,17 266,93 328 2250 18 353
3,70 3,58 3,58 3,55 3,55 3,52 1,88 1,63
Данные результаты полностью согласуются с аналитической оценкой эффективности алгоритма. Так с ростом ширины ленты эффективность алгоритма падает, а при одинаковой ширине ленты ускорение практически не зависит от размерности исходной задачи п.
Заключение
В статье предложен новый параллельный алгоритм решения систем линейных алгебраических уравнений с диагонально-ленточной матрицей коэффициентов, учитывающий наличие нулевых элементов в отдельных диагоналях внутри ленты.
Основными достоинствами алгоритма являются следующие.
— Простота программной реализации.
— Высокие показатели ускорения для задач с малым смещением ленты матрицы коэффициентов.
— Экономия памяти вычислительной системы.
— Возможность простой адаптации под различные вычислительные системы с общей памятью.
— Отсутствие множественного доступа по записи к исходным данным.
К недостаткам алгоритма относятся следующие.
— Падение ускорения с увеличением смещения? ленты матрицы А.
— Необходимость выделения дополнительной памяти на этапе модификации исходной задачи.
— Возможная несбалансированность нагрузки процессоров вычислительной системы.
Список литературы
1. Ильин В. А., Позняк Э. Г. Линейная алгебра. М.: Физматлит, 1999. 280 с.
2. Ильин В. А., Ким Г. Д. Линейная алгебра и аналитическая геометрия. М.: Проспект, 2007. 400 с.
3. Ортега Дж. Введение в параллельные и векторные методы решения линейных систем: пер. с англ. М.: Мир, 1991. 367 с. [Ortega J.M. Introduction to Parallel and Vector Solution of Linear Systems. NY.: Plenum Press, 1988. 305 p. ]
4. Tewarson R.P. Solution of linear equations with coefficient matrix in band form // BIT Numerical Mathematics. 1968. Vol. 8, iss. 1. P. 53−58. DOI: 10. 1007/BF01939979
5. Saad Y., Schultz H. Parallel direct methods for solving banded linear systems // Linear Algebra Appl. 1987. Vol. 88−89. P. 623−650. http: //dx. doi. org/10. 1016/0024−3795(87)90128−5
6. Polizzi E., Sameh A. SPIKE: A parallel environment for solving banded linear systems // Computers
& amp- Fluids. 2007. Vol. 36, no. 1. P. 113−141. http: //dx. doi. org/10. 1016/j. compfluid. 2005. 07. 005
7. Kruger J., Westermann R. GPU Gems 2. Chapter 44. A GPU Framework for Solving Systems of Linear Equations. Режим доступа:
http: //http. developer. nvidia. com/GPUGems2/gpugems2 chapter44. html (дата обращения 19. 06. 2013).
8. Эккель Б. Философия C++. Введение в стандартный C++. СПб.: Питер, 2004. 572 с. [Eckel B. Thinking in C++: Introduction to Standard C++. NY.: Prentice Hall, 2000. 814 p. ]
9. Чан Т. Системное программирование на C++ для Unix. М.: BHV, 1997. 490 с. [Chan T. UNIX System Programming using C++. Prentice Hall, 1997. 598 p. ]
SCIENTIFIC PERIODICAL OF THE BAUMAN MSTU
SCIENCE and EDUCATION
EL № FS77 — 48 211. № 421 200 025. ISSN 1994−0408
electronic scientific and technical journal
Parallel algorithm for solving systems of linear algebraic equations with a multi-diagonal coefficient matrix
# 07, July 2013
DOI: 10. 7463/0713. 590 785
Jeldakov A.V., OegopyK B. r.
Bauman Moscow State Technical University, 105 005, Moscow, Russian Federation
www. streeter@mail. ru fedoruk. bmstu@mail. ru
This article describes a parallel algorithm for solving systems of linear algebraic equations with a multi-diagonal (band) coefficient matrix. A scheme of the algorithm for multi-processor shared-memory computing systems is also presented in the article. Data structures for a compact storage of sparse band matrices were implemented. Theoretical and experimental investigations of efficiency of the algorithm were conducted using various problems. Dependences of the program’s speedup on various parameters of the problem and the number of processors were given in this work. The conclusion presents pros and cons of the algorithm.
Publications with keywords: parallel algoritm, system of linear equations, multidiagonal matrix of coefficients, band matrix of coefficients, multiprocessor system
Publications with words: parallel algoritm, system of linear equations, multidiagonal matrix of coefficients, band matrix of coefficients, multiprocessor system
References
1. Il'-in V.A., Poznyak E.G. Lineynaya algebra [Linear algebra]. Moscow, Fizmatlit, 1999. 280 p.
2. Il'-in V.A., Kim G.D. Lineynaya algebra i analiticheskaya geometriya [Linear algebra and analytical geometry]. Moscow, Prospekt, 2007. 400 p.
3. Ortega J.M. Introduction to Parallel and Vector Solution of Linear Systems. NY, Plenum Press, 1988. 305 p. (Russ. ed.: Ortega Dzh. Vvedenie vparallel'-nye i vektornye metody resheniya lineynykh system. Moscow, Mir, 1991. 367 p.).
4. Tewarson R.P. Solution of linear equations with coefficient matrix in band form. BIT Numerical Mathematics, 1968, vol. 8, iss. 1, pp. 53−58. DOI: 10. 1007/BF01939979
5. Saad Y., Schultz H. Parallel direct methods for solving banded linear systems. Linear Algebra Appl., 1987, vol. 88−89, pp. 623−650. http: //dx. doi. org/10. 1016/0024−3795(87)90128−5
6. Polizzi E., Sameh A. SPIKE: A parallel environment for solving banded linear systems. Computers & amp- Fluids, 2007, vol. 36, no. 1, pp. 113−141. http: //dx. doi. org/10. 1016/j. compfluid. 2005. 07. 005
7. Kruger J., Westermann R. GPU Gems 2. Chapter 44. A GPU Framework for Solving Systems of Linear Equations. Available at:
http: //http. developer. nvidia. com/GPUGems2/gpugems2 chapter44. html, accessed 19. 06. 2013.
8. Eckel B. Thinking in C+ +: Introduction to Standard C++. NY, Prentice Hall, 2000. 814 p. (Russ. ed.: Ekkel'- B. Filosofiya C++. Vvedenie v standartnyy C++. St. Petersburg, Piter, 2004. 572 p.).
9. Chan T. UNIX System Programming using C+ +. Prentice Hall, 1997. 598 p. (Russ. ed.: Chan T. Sistemnoeprogrammirovanie na C++ dlya Unix. Moscow, BHV, 1997. 490 p.).

ПоказатьСвернуть
Заполнить форму текущей работой