ВВЕДЕНИЕ 3
1. Решение системы линейных уравнений методом сопряженных градиентов 4
2. Гибридная модель программирования OpenMP и CUDA 10
3. Реализация метода сопряженных градиентов 16
ЗАКЛЮЧЕНИЕ 30
СПИСОК ЛИТЕРАТУРЫ 31
Приложение 1 – Реализация однопоточного метода 32
Приложение 2 – Реализация гибридного метода 36
Приложение 3 – Реализация многопоточного алгоритма для CPU 44
Читать дальше
В этой работе был рассмотрен один из способов решения систем линейных уравнений, а именно метод сопряженных градиентов, который представляет собой численный итеративный алгоритм. Для этого метода возможно параллельное выполнение отдельных его участков. В рамках данной работы был реализован однопоточный алгоритм, а также вариации алгоритма, использующая параллельные выполнение операций на отдельных участках.
Изучена гибридная модель программирования, предполагающая использование гетерогенной аппаратной среды. В частности, для реализации гибридной модели, изучалась связка технологий CUDA и OpenMP.
Таким образом, реализация алгоритма предполагает исполнение как на центральном процессоре, так и на графическом оборудовании.
Проведены эксперименты с обоими реализациями, в ходе которых наблюдалась предсказуемое увеличение времени выполнения для однопоточного алгоритма, а также многопоточного алгоритма, исполняемого на центральном процессоре, и весьма хаотичное поведение для гибридной реализации метода, использующий ресурсы графического оборудования. Тем не менее, на основе полученных результатов можно утверждать, что существует некоторый предел сложности задачи, когда гибридная реализация становится эффективнее, чем однопоточная. В данном случае было выявлено, что для систем линейных уравнений с размером приблизительно меньше чем 1500 эффективнее однопоточный алгоритм, а для задач большего размера – гибридный. Однако, если центральный процессор имеет большой потенциал для параллельного выполнения, то почти всегда многопоточный алгоритм, исполняемый на CPU будет эффективнее однопоточного алгоритма, исполняемого на CPU.
Читать дальше
1. Решение СЛУ методом сопряженных градиентов [Электронный ресурс]. - Режим доступа: http://www.hpcc.unn.ru/?dir=847 / (дата обращения: 14.06.2021).
2. Барахнин В.Б., Шапеев В.Б. Введение в численный анализ. – Санкт-Петербург–Москва–Краснодар: Лань, 2005. – 99с
3. CUDA LLVM Compiler [Электронный ресурс]. - Режим доступа: https://developer.nvidia.com/cuda-llvm-compiler / (дата обращения: 02.12.2021).
4. Clang, Введение [Электронный ресурс]. - Режим доступа: https://habr.com/ru/post/354718/ / (дата обращения: 14.06.2021).
5. CUDA Toolkit Documentation [Электронный ресурс]. - Режим доступа: https://docs.nvidia.com/cuda/index.html / (дата обращения: 14.06.2021).
6. Henk A. van der Vorst. Iterative Krylov Methods for Large Linear System. — Cambridge University Press, 2003. — 221 с.
7. Parallel Processing via MPI & OpenMP, M. Firuziaan, O. Nommensen. Linux Enterprise, 2007. — 245 с.
Читать дальше