Статья опубликована в рамках: Научного журнала «Студенческий» № 1(297)
Рубрика журнала: Информационные технологии
Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4, скачать журнал часть 5, скачать журнал часть 6, скачать журнал часть 7, скачать журнал часть 8, скачать журнал часть 9, скачать журнал часть 10, скачать журнал часть 11
СРАВНИТЕЛЬНЫЙ АНАЛИЗ РАБОТЫ ПАРАЛЛЕЛЬНЫХ АЛГОРИТМОВ МАТРИЧНЫХ ОПЕРАЦИЙ ДЛЯ ПОЛНЫХ И РАЗРЕЖЕННЫХ МАТРИЦ В МНОГОЯДЕРНЫХ CPU-СИСТЕМАХ
COMPARATIVE ANALYSIS OF PARALLEL ALGORITHMS OF MATRIX OPERATIONS FOR FULL AND SPARSE MATRICES IN MULTI-CORE CPU SYSTEMS
Khamilla Khabaeva
student, Department of Information Technologies and Systems, North Caucasus Mining and Metallurgical Institute (State Technological University),
Russia, Vladikavkaz,
Alisher Kulchimaev
student, Department of Computer Modeling and Automation of Design, North Caucasus Mining and Metallurgical Institute (State Technological University),
Russia, Vladikavkaz
АННОТАЦИЯ
В рамках работы был проведен аналитический обзор предметной области, выбрана математическая модель, минимизирующая время работы параллельных алгоритмов матричных операций, разработаны параллельные алгоритмы, использующие для работы многоядерные вычислительные системы. Также создан программный комплекс, реализующий данные параллельные алгоритмы для операций над полными и разреженными матрицами. Была проведена серия экспериментов, подтверждающая адекватность выбранной математической модели и эффективность программного комплекса.
ABSTRACT
As part of the work, an analytical review of the subject area was conducted, a mathematical model was selected that minimizes the running time of parallel algorithms of matrix operations, parallel algorithms were developed that use multi-core computing systems for operation. A software package was also created that implements these parallel algorithms for operations on full and sparse matrices. A series of experiments were conducted to confirm the adequacy of the selected mathematical model and the effectiveness of the software package.
Ключевые слова: распараллеливания, умножение матриц, c++, сложение матриц, умножение матрицы на константу, транспонирование матриц, сравнительный анализ, многоядерные cpu-системы, параллельный алгоритм.
Keywords: parallelization, matrix multiplication, C++, matrix addition, matrix multiplication by a constant, matrix transposition, comparative analysis, multi-core CPU systems, parallel algorithm.
Введение
С развитием вычислительных систем и расширением возможностей многоядерных процессоров актуальность исследований в области параллельных алгоритмов для операций над матрицами значительно возросла.
Особый интерес представляют нам сравнительные анализы эффективности таких алгоритмов при работе с полными и разреженными матрицами в многоядерных CPU-системах.
Работа посвящена исследованию и сопоставлению работы параллельных алгоритмов матричных операций для обеих типов матриц с целью определения оптимальных стратегий вычислений. Акцент делается на эффективности использования ресурсов и скорости выполнения операций в контексте многоядерных архитектур, что и имеет важное значение для ряда прикладных задач, таких как обработка изображений, машинное обучение, численное моделирование и другие.
Таким образом это исследование направлено на выявление эффективности различных алгоритмов в данной сфере, что имеет потенциал для улучшения производительности и оптимизации вычислительных процессов.
Проведение эксперимента
Для выполнения сравнительного анализа, проверки адекватности выбранной математической модели и оценки эффективности разработанного программного комплекса была проведена серия экспериментов.
Цели экспериментов:
- Определение времени, необходимого для выполнения матричных операций;
- Нахождение коэффициентов k из уравнений;
- Проверка корректности уравнений.
Эксперименты проводились на ПК с характеристиками, представленными в Таблице 1. Основной параметр, исследуемый в работе программного комплекса, — это время его выполнения.
Для измерения времени выполнения программы использовался класс Stopwatch. Время выполнения сохраняется в Stopwatch.Elapsed.
Таблица 1
Характеристики ПК
Производитель процессора |
Intel |
Тип процессора |
Core i5-10300H |
Количество ядер процессора |
4 |
Макс. такт. частота |
2496 МГц |
Оперативная память (RAM) |
8Гб |
Частота памяти |
2933 Мгц |
Производитель видеокарты |
NVIDIA |
Графический контроллер |
GeForce GTX 1650 |
Жесткий диск (HDD) |
1000ГБ |
ОС |
Windows 10 PRO (64 bit) |
В рамках работы была проведена серия экспериментов с целью определения двух зависимостей:
- зависимость времени выполнения матричной операции от количества используемых потоков и размера матрицы;
- зависимость времени выполнения от размера матрицы при использовании одного потока и оптимального количества потоков.
Ход эксперимента:
В ходе эксперимента для матричной операции умножения полной и разреженной матриц брались исходные матрицы размером: 2000, 3000, 4000, 5000, 6000. Количество потоков менялось от 1 до 6. Было проведено по 50 замеров для каждого размера матрицы. Полученное время записывалось в файл.
В ходе проведения экспериментов мною замечен некоторый разброс во времени, что я могу объяснить влиянием операционной системы, и чтобы отбросить плохие показания, мною применен доверительный интервал равный среднеквадратичному отклонению σ для каждого количества пикселей и потоков.
Таблица 2
Результаты вычисления дисперсии и среднеквадратичного отклонения матричной операции умножения полных матриц
N |
|
1 |
2 |
3 |
4 |
5 |
6 |
20002 |
D(X) |
0,00016303 |
0,00188616 |
0,00220017 |
0,00333420 |
0,004174 |
0,001939 |
σ |
0,012768152 |
0,043429939 |
0,046905975 |
0,057742557 |
0,064604 |
0,044036 |
|
30002 |
D(X) |
0,0003069 |
0,0014519 |
0,002669 |
0,004236 |
0,004142 |
0,007339 |
σ |
0,017518 |
0,0381043 |
0,051662 |
0,065082 |
0,064359 |
0,085666 |
|
40002 |
D(X) |
0,0018932 |
0,00146461 |
0,00426819 |
0,0053013 |
0,0041777 |
0,005635 |
σ |
0,04351088 |
0,03827025 |
0,06533137 |
0,0728103 |
0,0646355 |
0,07507 |
|
50002 |
D(X) |
0,00646645 |
0,0065579 |
0,007771 |
0,024781 |
0,018167 |
0,005822 |
σ |
0,08041423 |
0,0809812 |
0,088152 |
0,157418 |
0,134784 |
0,0763 |
|
60002 |
D(X) |
0,0083682 |
0,0065435 |
0,0094996 |
0,0436786 |
0,0107152 |
0,026754 |
σ |
0,0914779 |
0,0808922 |
0,0974657 |
0,2089943 |
0,1035143 |
0,163565 |
Таблица 3.
Время выполнения матричной операции умножения для полных матриц разным числом потоков в зависимости от размера матриц
N\x |
1 |
2 |
3 |
4 |
5 |
6 |
20002 |
0,512211 |
0,316174 |
0,283503 |
0,320021 |
0,332067 |
0,388246 |
30002 |
1,1314 |
0,626793 |
0,489935 |
0,49413 |
0,520417 |
0,548786 |
40002 |
2,056181 |
1,101207 |
0,831873 |
0,806826 |
0,760382 |
0,783868 |
50002 |
3,271071 |
1,757814 |
1,326836 |
1,224893 |
1,173437 |
1,147612 |
60002 |
4,685598 |
2,455861 |
1,721829 |
1,46238 |
1,546163 |
1,648655 |
Рисунок 1. Время работы алгоритма разным числом потоков в зависимости от размера матрицы
Коэффициент корреляции между временем и числом процессоров получился отрицательный, потому что с увеличением числа процессоров время уменьшается. Коэффициент корреляции между временем и количеством элементов матрицы положительный, так как с возрастанием размера матрицы растет и время. А коэффициент корреляции между числом процессоров и количеством элементов матрицы равен нулю потому, что они не зависят друг от друга.
Ниже представлена таблица, в которой записаны коэффициенты
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19:
Таблица 4.
Коэффициенты ki для билинейной интерполяции
k10 |
k11 |
k12 |
k13 |
k14 |
0,072 |
-1,166*10-8 |
0,027 |
5,205*10-9 |
-0,135 |
0,59 |
-5,783*10-8 |
-0,031 |
9,778*10-9 |
-1,411 |
-0,154 |
-8,492*10-8 |
0,144 |
1,616*10-8 |
-0,014 |
k15 |
k16 |
k17 |
k18 |
k19 |
1,432*10-7 |
0 |
0 |
0 |
0 |
2,447*10-7 |
0,823 |
-6,55*10-8 |
0 |
0 |
Рисунок 2. Сумма квадратов разности (St) и средняя ошибка аппроксимации (At)
Результат:
В результате эксперимента на основе выражения (2.5) получены следующие данные:
Таблица 5
Аналитические данные времени работы
Размер матрицы |
Время выполнения операции |
|||||
Количество потоков |
||||||
1 |
2 |
3 |
4 |
5 |
6 |
|
20002 |
0.491 |
0.319 |
0.294 |
0.305 |
0.33 |
0.363 |
30002 |
1.149 |
0.646 |
0.527 |
0.505 |
0.521 |
0.556 |
40002 |
2.071 |
1.104 |
0.854 |
0.784 |
0.787 |
0.825 |
50002 |
3.257 |
1.692 |
1.274 |
1.144 |
1.129 |
1.171 |
60002 |
4.706 |
2.41 |
1.788 |
1.584 |
1.547 |
1.594 |
Рисунок 3. Аналитическая и экспериментальная зависимости времени счета от числа потоков при размере матрицы, равным 30002
Рисунок 4. Зависимость времени решения функции одним потоком и оптимальным количеством потоков
Таблица 6.
Время выполнения умножения разреженных матриц разным числом потоков в зависимости от размера матриц
N\x |
1 |
2 |
3 |
4 |
5 |
6 |
20002 |
0.130771 |
0.147200 |
0.150879 |
0.172055 |
0.159087 |
0.171799 |
30002 |
0.273758 |
0.238180 |
0.246785 |
0.272610 |
0.248235 |
0.275068 |
40002 |
0.483907 |
0.368095 |
0.342284 |
0.407074 |
0.415192 |
0.387777 |
50002 |
0.772305 |
0.503385 |
0.472291 |
0.567689 |
0.590396 |
0.608549 |
60002 |
1.108748 |
0.717748 |
0.622438 |
0.789885 |
0.736474 |
0.803914 |
Рисунок 5. Время выполнения операции разным числом потоков в зависимости от размера матрицы
Множественный коэффициент корреляции равен 0,943.
Коэффициент корреляции между временем и числом процессоров получился отрицательный, потому что с увеличением числа процессоров время уменьшается. Коэффициент корреляции между временем и количеством элементов матрицы положительный, так как с возрастанием размера матрицы растет и время. А коэффициент корреляции между числом процессоров и количеством элементов матрицы равен нулю потому, что они не зависят друг от друга.
Для операции умножения разреженных матриц у меня используется математическая модель 2.4, в которой были найдены коэффициенты k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 (Таблица 4.9).
Таблица 7.
Коэффициенты ki для операции умножения разреженных матриц
k10 |
k11 |
k12 |
k13 |
k14 |
0,205 |
-4,636*10-9 |
-0,014 |
3,361*10-9 |
-0,191 |
0,231 |
1,313*10-8 |
-0,017 |
1,388*10-9 |
-0,254 |
0,653 |
-1,092*10-7 |
-0,116 |
3,02*10-8 |
7,836*10-3 |
k15 |
k16 |
k17 |
k18 |
k19 |
3,18*10-8 |
0 |
0 |
0 |
0 |
-1,199*10-8 |
0,04 |
2,825*10-8 |
0 |
0 |
-2,272*10-9 |
-0,947 |
1,889*10-9 |
0,403 |
-7,697*10-8 |
Таблица 8
Сумма квадратов разности (St) и средняя ошибка ап- аппроксимации (At)
Результат:
В результате эксперимента на основе выражения (2.6) получены следующие данные:
Таблица 9
Аналитические данные времени работы
Размер матрицы |
Время выполнения операции |
|||||
Количество потоков |
||||||
1 |
2 |
3 |
4 |
5 |
6 |
|
20002 |
0.124 |
0.148 |
0.165 |
0.172 |
0.173 |
0.169 |
30002 |
0.277 |
0.235 |
0.242 |
0.261 |
0.272 |
0.267 |
40002 |
0.493 |
0.357 |
0.35 |
0.385 |
0.41 |
0.404 |
50002 |
0.769 |
0.513 |
0.489 |
0.545 |
0.588 |
0.591 |
60002 |
1.107 |
0.705 |
0.659 |
0.74 |
0.806 |
0.797 |
Рисунок 6. Аналитическая и экспериментальная зависимости времени счета от числа потоков при количестве элементов матрицы, равным 50002
Проведем сравнительный анализ при параллельном и последовательном режиме. На графике 4.5. показана зависимость времени решения функции на одном потоке и на оптимальном числе потоков.
Таблица 10.
Время решения на одном и на оптимальном количестве потоков
Размерность матрицы |
T1(N) |
Tопт(N) |
20002 |
0,130772 |
0,130772 |
30002 |
0,273758 |
0,238181 |
40002 |
0,483907 |
0,342285 |
50002 |
0,772305 |
0,472291 |
60002 |
1,108749 |
0,622438 |
Рисунок 7. Зависимость времени решения одним и оптимальным количеством потоков
Эксперимент показал эффективность разработанного программного комплекса, так как реализованный мною параллельный алгоритм дал значительный прирост производительности, в сравнении с последовательно работающим алгоритмом. Также показал адекватность выбранной математической модели, так как экспериментальные данные практически совпали с аналитическими.
Результаты проведенных экспериментов показывают, что поставленная цель выпускной работы достигнута, а задачи выполнены.
Заключение
В данной работе проведен сравнительный анализ работы параллельных алгоритмов матричных операций для полных и разреженных матриц в многоядерных CPU-системах. Основной целью исследования было выявление эффективности различных алгоритмов при работе с разными типами матриц, а также оценка их производительности на современных многоядерных процессорах.
В ходе работы были выполнены следующие задачи:
- Разработаны и реализованы параллельные алгоритмы для выполнения основных матричных операций, таких как сложение и умножение, для полных и разреженных матриц.
- Проведены экспериментальные исследования производительности разработанных алгоритмов на различных типах матриц и в различных режимах параллельного выполнения.
- Осуществлен анализ полученных результатов с точки зрения времени выполнения, использования вычислительных ресурсов и масштабируемости.
Список литературы:
- Мирошников А. С. Система управления параллельной обработки данных в локальных вычислительных сетях. Дисс… канд. техн. наук. Владикавказ, 2000.
- Голубев В. В. "Численные методы линейной алгебры". - М.: Триумф, 2003. – 806 с.
- Воронов В. В., Базылев П. Н. "Линейная алгебра и численные методы"- М.: Аст, Астрель, 2006. – 446 с.
- Фаддеев Д. К., Фаддеева В. Н. "Вычислительные методы линейной алгебры" - 2009. – 576 с.
- Пономарев А. Г. "Алгоритмы и методы оптимизации". — 2006. — С. 390. — 879
- Преображенский Н. А. "Математические методы и алгоритмы обработки разреженных матриц" - М.: Триумф, 2009. – 396 с.
- Ильин В. А., Ким В. П. "Методы вычислений" - 2006. – 446 с.
- Эндрю Троелсен: Язык программирования C++. М.: Вильямс 2018 - 4-е изд. 1344 с.
Оставить комментарий