Тип работы:
Предмет:
Язык работы:


ИТЕРАЦИОННЫЙ МЕТОД РЕШЕНИЯ СЛАУ НА ОСНОВЕ МОДИФИЦИРОВАННОГО СТАБИЛИЗИРОВАННОГО МЕТОДА БИСПОРЯЖЁННЫХ ГРАДИЕНТОВ С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ CUDA

Работа №68253

Тип работы

Дипломные работы, ВКР

Предмет

информатика

Объем работы78
Год сдачи2018
Стоимость4200 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
229
Не подходит работа?

Узнай цену на написание


ВВЕДЕНИЕ 4
1. СОВРЕМЕННЫЕ МЕТОДЫ РЕШЕНИЯ СЛАУ 7
1.1 Основные понятия и определения 7
1.2 Практическое применение СЛАУ 9
1.3 Прямые методы решения СЛАУ 10
1.3.1 Метод Крамера 11
1.3.2 Метод Гаусса 12
1.3.3 Метод обратной матрицы 14
1.4 Итерационные методы решения СЛАУ 15
1.4.1 Метод Якоби и метод Зейделя 16
1.4.2 Метод сопряженных градиентов 20
1.5 Способы хранения разреженных матриц в памяти вычислительных
устройств 22
1.5.1 Координатный формат хранения 23
1.5.2 Разреженный строчный формат 26
2. РАЗРАБОТКА МОДИФИЦИРОВАННОГО АЛГОРИТМА РЕШЕНИЯ
СЛАУ МЕТОДОМ СТАБИЛИЗИРОВАННЫХ БИСОПРЯЖЕННЫХ ГРАДИЕНТОВ 28
2.1 Стабилизированный метод бисопряженных градиентов 28
2.2 Итерационный алгоритм стабилизированного метода бисопряженных
градиентов 30
2.3 Использование CSR формата для хранения разреженных матриц
при решении СЛАУ стабилизированным методом бисопряженных градиентов 35
3. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ СТАБИЛИЗИРОВАННОГО
МЕТОДА БИСОПРЯЖЕННЫХ ГРАДИЕНТОВ С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ CUDA 38
3.1 Программная реализация последовательной версии алгоритма 38
3.2 Программная реализация параллельной версии алгоритма 43
3.3 Оценка эффективности модификации итерационного алгоритма на
основе проведения вычислительных экспериментов 48
ЗАКЛЮЧЕНИЕ 55
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 57
ПРИЛОЖЕНИЕ 61

На сегодняшний день, с активным ростом потребности в решении сложных вычислительных задач, наблюдается высокий спрос на разработку программного обеспечения, позволяющего корректно производить точные расчеты с использованием современной вычислительной техники.
Применение программного обеспечения, разработанного для автоматизации решения различных технических задач, и в частности, для произведения сложных и трудоемких вычислительных расчетов, наблюдается в строительстве, машиностроении, авиастроении, а также в системах автоматизированного проектирования.
Из известных математических проблем и задач, наибольшую потребность в оптимизации использования вычислительных ресурсов представляют задачи, в которых присутствуют многочисленные однотипные вычислительные операции, выполняемые над предельно большими массивами данных, и в частности над матрицами.
В трудоемких математических задачах, обычно, в качестве входных или промежуточных данных, выступают матрицы больших размерностей. С точки зрения условий подобных задач, матрицы представляются в виде систем алгебраических линейных уравнений (СЛАУ). Очевидно, что корректным результатом такой задачи, является нахождение решения промежуточной или входной СЛАУ.
Среди многочисленных методов решения систем алгебраических линейных уравнений, выделяется один из часто используемых и устойчивых методов - стабилизированный метод бисопряженных градиентов (англ. Biconjugate gradient stabilized method, BiCGStab).
Основное преимущество BiCGStab, помимо устойчивости, заключается в том, что данный метод, использует, в основном, стандартные вычислительные операции, производимые над векторами и матрицами, которые в целом, можно оптимизировать, посредством их программной параллелизации.
Основной целью данной выпускной квалификационной работы является разработка и программная реализация итерационного алгоритма решения СЛАУ на основе модифицированного стабилизированного метода бисопряженных градиентов с использованием технологии NVIDIA CUDA. Поставленная цель достигается решением следующих задач:
• Обзор существующих методов решения систем линейных алгебраических уравнений;
• Разработка модифицированного алгоритма стабилизированного метода биспоряженных градиентов с экономией видеопамяти;
• Программная реализация разработанного алгоритма с использованием технологии CUDA;
• Оценка эффективности разработанного алгоритма на основе проведения вычислительных экспериментов;
Выпускная квалификационная работа включает в себя: введение, три главы, и заключение.
В первой главе производится сравнительный анализ, существующих итерационных методов предназначенных для решения систем линейных алгебраических уравнений. Подробно описываются и сравниваются оптимизированные форматы хранения разреженных матриц в памяти вычислительных устройств.
Вторая глава посвящена подробному описанию стабилизированного метода биспоряженных градиентов. Приводится описание модификаций метода, связанных со значительной оптимизацией вычислений при работе с разреженными матрицами. С использованием языка блок-схем описывается итерационный процесс предлагаемого метода.
В третьей главе описываются аспекты разработки программного средства с использованием технологии CUDA. Производится анализ результатов вычислительного эксперимента, полученных в ходе тестирования последовательной и параллельной версии разработанного приложения с использованием данных, представленных в виде разреженных матриц различной размерности и плотности.
В заключении приводится краткий анализ полученных в ходе работы результатов. Подробно описываются итоги проделанной работы, а также преимущества и недостатки разработанного программного средства.
Выпускная квалификационная работа состоит из 78 страниц, 14 рисунков, 9 таблиц и приложения.


Возникли сложности?

Нужна помощь преподавателя?

Помощь студентам в написании работ!


Цель данной выпускной квалификационной работы заключалась в разработке и программной реализации итерационного алгоритма решения СЛАУ на основе модифицированного стабилизированного метода биспоряженных градиентов с использованием технологии NVIDIA CUDA.
В первой главе были проанализированы основные современные методы решения систем линейных алгебраических уравнений. Исходя из результатов полученного анализа, было выявлено, что большинство предлагаемых прямых и итерационных методов, являются не оптимизированными, с точки зрения расхода памяти.
Во второй главе был предложен итерационный алгоритм решения несимметричных систем линейных алгебраических уравнений, а также его модификации, позволяющие значительно сократить общий объем памяти, выделяемый под результаты промежуточных вычислений.
В третьей главе был подробно описан процесс реализации последовательной и параллельной версии программ, позволяющих решать системы линейных алгебраических уравнений посредством модифицированного и стабилизированного метода биспоряженных градиентов. Результаты проведенных вычислительных экспериментов, а в частности, полученное в ходе расчетов среднее ускорение равное 3, доказывают, что разработанная параллельная версия приложения значительно оптимизирует итерационный процесс разработанного метода.
Исходя из общих данных, полученных путем проведения многочисленных вычислительных экспериментов над разработанным приложением, можно сделать вывод, что параллельная версия реализованного приложения корректно выполняет задачу решения систем алгебраических уравнений, при этом минимально расходуя аппаратные ресурсы вычислительного устройства.
Стоит отметить, что использование GPU, в качестве основного инструмента повышения производительности разработанной программы, в целом, положительно скажется на скорости работы приложения, при использовании новых, актуальных и соответственно более мощных видеокарт. Стремительное совершенствование графических процессоров, предполагает значительное повышение оптимизации и скорости работы приложений разработанных, на базе технологии NVIDIA CUDA.
Таким образом, можно отметить, что разработанное программное приложение, исходя из корректности полученных результатов и очевидной скорости вычисления конечного решения с минимальными затратами памяти и в общем, рациональным расходом аппаратных ресурсов, можно использовать для решения различных прикладных задач.



1. Александреску А. Современное проектирование на C++ [Текст] / А. Александреску. - Москва.: Вильямс, 2015, - 336с.
2. Амосов, А.А. Вычислительные методы для инженеров [Текст] / А.А. Амосов, Ю.А. Дубинский, Н.В. Копченова. - Москва.: Высшая школа,2014.- 672с.
3. Амосов, А.А. Вычислительные методы. Учебное пособие [Текст] / А.А. Амосов, Ю.А. Дубинский, Н.В. Копченова. - Санкт-Петербург.: Питер, 2014. - 672с.
4. Богачев, К.Ю. Основы параллельного программирования [Текст] / К.Ю. Богачев. - Москва.: БИНОМ. Лаборатория знаний, 2015 - 344с.
5. Боресков, А.В. Основы работы с технологией CUDA [Текст] / А.В. Боресков, А.А. Харламов. - Москва.: ДМК Пресс, 2010, - 232с.
6. Борзунов, С.В. Практикум по параллельному программированию [Текст] /
С.В. Борзунов, С.Д. Кургалин, А.В. Флегель. - Санкт-Петербург.: Питер,
2017. - 236с.
7. Брюс Экель. Философия C++. Введение в стандартный C++ [Текст] / Брюс Экель. - Санкт-Петербург.: Питер, 2004. - 572с.
8. Бубнов, А.А. Вычислительная математика для программистов. Учебное пособие [Текст] / А.А. Бубнов, С.А. Бубнов, Е.Н. Проказникова. - Москва.: Курс, 2018, - 144с.
9. Бурова, И.Г. Алгоритмы параллельных вычислений и программирование. Курс лекций [Текст] / И.Г. Бурова, Ю.К. Демьянович. - Санкт-Петербург.: Издательство СПбГУ, 2007, - 208с.
10. Бьерн Страуструп. Программирование. Принципы и практика использования C++ [Текст] / Бьерн Страуструп. - Москва.: Вильямс,
2016. - 1328с.
11. Вабищевич, П.Н. Вычислительные технологии. Профессиональный уровень [Текст] / П.Н. Вабищевич. - Москва.: Ланад, 2017, - 352с.
12. Воеводин, В.В. Параллельные вычисления [Текст] / В.В. Воеводин, Вл.В. Воеводин. - Санкт-Петербург.: Питер, 2004. - 608с.
13. Гельфанд, И.М. Лекции по линейной алгебре [Текст] / И.М. Гельфанд. - Москва.: КДУ, 2009, - 320с.
14. Герб Саттер. Решение сложных задач на C++ [Текст] / Герб Саттер. - Москва.: Вильямс, 2017, - 400с.
15. Герб Саттер. Стандарты программирования на C++ [Текст] / Герб Саттер, А. Александреску. - Москва.: Вильямс, 2016, - 224с.
16. Гэри Маклин Холл. Адаптивный код: гибкое кодирования с помощью паттернов проектирования и принципов SOLID [Текст] / Гэри Маклин Холл. - Москва.: Вильямс, 2017, - 448с.
17. Демьянович, Ю.К. Теория распараллеливания и синхронизация [Текст] / Н.А. Демьянович, Т.О. Евдокимова. - Санкт-Петербург.: Издательство СПбГУ, 2005, - 112с.
18. Джейсон Сандрэс. Технология CUDA в примерах. Введение в программирование графических процессоров [Текст] / Джейсон Сандрэс, Эдвард Кэндрот. - Москва.: ДМК Пресс, 2011, - 232с.
19. Ездаков А.Л. Функциональное и логическое программирование [Текст] / А.Л. Ездаков. - Москва.: БИНОМ. Лаборатория знаний, 2009 - 120с.
20. Зализняк, В.Е. Численные методы. Основы научных вычислений. Учебник и практикум [Текст] / В.Е. Зализняк. - Москва.: Юрайт, 2017, - 356с.
21. Зимина, О.В. Линейная алгебра и аналитическая геометрия [Текст] / О.В. Зимина. - Ростов-на-Дону.: Феникс, 2015, - 384с.
22. Ильин, В.А. Линейная алгебра [Текст] / В.А. Ильин, Э.Г. Позняк. - Москва.: ФИЗМАТЛИТ, 2014, - 280с.
23. Калиткин, Н.Н. Численные методы [Текст] / Н.Н. Калиткин. - Санкт- Петербург.: БХВ-Петербург, 2011. - 592с.
24. Камерон Хьюз. Параллельное и распределенное программирование с использованием C++ [Текст] / Камерон Хьюз, Трейси Хьюз. - Москва.: Вильямс, 2004, - 672с.
25. Кейт Грегори. C++ AMP. Построение массивно параллельных программ с помощью Microsoft Visual C++ [Текст] / Кейт Грегори, Эйд Миллер. - Москва.: ДМК Пресс, 2012, - 412с.
26. Келвин Лин. Принципы параллельного программирования. Учебное пособие [Текст] / Келвин Лин, Лоуренс Снайдер. - Москва.: Издательство МГУ, 2013, - 388с.
27. Корнюшин, П.Н.. Численные методы [Текст] / П.Н. Корнюшин. - Владивосток.: Издательство дальневосточного универстета, 2002, - 104с.
28. Лизунова, Н.А. Матрицы и системы линейных уравнений [Текст] / Н.А. Лизунова, Шкроба С.П. - Москва.: ФИЗМАТЛИТ, 2007, - 352с.
29. Панюкова, Т.А. Численные методы [Текст] / Т.А. Панюкова. - Москва.: Либроком, 2018, - 224с.
30. Перепёлкин, Е.Е. Вычисления на графических процессорах (GPU) в задачах математической и теоритической физики [Текст] / Е.Е. Перепёлкин, Б.И. Садовников, Н.Г. Иноземцева. - Москва.: URSS, 2014, - 176с.
31. Расс Миллер. Последовательные и параллельные алгоритмы [Текст] / Расс Миллер, Лоренс Боксер. - Москва.: БИНОМ. Лаборатория знаний, 2015 - 408с.
32. Робер Седжвик. Алгоритмы на C++ [Текст] / Робер Седжвик. - Москва.: Вильямс, 2017, - 1056с.
33. Роберт К. Мартин. Чистый код. Создание анализ и рефакторинг. Библиотека программиста [Текст] / Роберт К. Мартин. - Санкт- Петербург.: Питер, 2018, - 464с.
34. Род Стивенс. Алгоритмы. Теория и практическое применение [Текст] / Род Стивенс. - Москва.: Эксмо, 2017, - 544с.
35. Самарский, А.А. Введение в численные методы [Текст] / А.А. Самарский. - Санкт-Петербург.: Лань, 2009, - 288с.
36. Скотт Майерс. Эффективный и современный С++. 42 рекомендации по использованию C++11 и C++14 [Текст] / Скотт Майерс. - Москва.: Вильямс, 2017. - 304с.
37. Скотт Миллет. Предметно-ориентированное проектирование. Паттерны, принципы и методы [Текст] / Скотт Миллет, Ник Тьюн. - Санкт- Петербург.: Питер, 2017, - 832с.
38. Фадеев, Д.К. Вычислительные методы линейной алгебры. Учебник [Текст] / Д.К. Фадеев, В.Н. Фадеева. - Санкт-Петербург.: Лань, 2009, - 736с.
39. Энтони Уильямс. Параллельное программирование на С++ в действии. Практика разработки многопоточных программ [Текст] / Энтони Уильямс. - Москва.: ДМК Пресс, 2016, - 672с.
40. Якобовский, М.В. Введение в параллельные методы решения задач. Учебное пособие [Текст] / М.В. Якобовский. - Москва.: Издательство МГУ, 2013, - 328с.


Работу высылаем на протяжении 30 минут после оплаты.




©2024 Cервис помощи студентам в выполнении работ