Тема: Исследование технологий реализации алгоритмов линейной алгебры с использованием технологии CUDA
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
Глава 1 УМНОЖЕНИЕ МАТРИЦ БОЛЬШИХ РАЗМЕРНОСТЕЙ НА ЭЛЕКТРОННО-ВЫЧИСЛИТЕЛЬНОЙ МАШИНЕ 7
1.1 Применение матричного умножения в современном мире 7
1.2 Общий вид умножения матриц 13
1.3 Математическое описание 14
1.4 Архитектура графического процессора 18
1.5 Описание вычислителя на графическом процессоре лаборатории
распределенных вычислений ТГУ 20
Глава 2 РЕАЛИЗАЦИЯ МАТРИЧНОГО УМНОЖЕНИЯ 27
2.1 Сравнение различных технологий внедрения параллельного
программного обеспечения 27
2.2 Особенности решения систем линейных алгебраических уравнений на
CUDA 28
2.3 Реализация и тестирование алгоритмов матричного умножения 30
2.3.1 Умножение матриц при ленточной схеме разделения данных 30
2.3.2 Метод Фокса 33
Глава 3 АНАЛИЗ ЭФФЕКТИВНОСТИ РАЗРАБОТАННЫХ АЛГОРИТМОВ . 38
3.1 Разработка технологии анализа эффективности алгоритмов 38
3.2 Описание эксперимента и их анализ полученных данных 44
3.2.1 Умножение матриц при ленточной схеме разделения данных 44
3.2.2 Метод Фокса 44
3.3 Проведение экспериментов по эффективности 45
3.4 Анализ эффективности 48
ЗАКЛЮЧЕНИЕ 50
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ 51
ПРИЛОЖЕНИЕ
📖 Введение
Ускоренные вычисления с GPU- это использование графического процессора (GPU) вместе с процессором CPU для ускорения научных, аналитических, инженерных, потребительских и корпоративных приложений. Впервые они были открыты компанией NVIDIA® в 2007 году, ускорители GPU стали энергоэффективными центрами обработки данных в государственных лабораториях, университетах, предприятиях, а также широко используются на малых и средних предприятиях по всему миру. Графические процессоры ускоряют приложения на платформах, начиная от автомобилей, мобильных телефонов и планшетов, до беспилотных летательных аппаратов и роботов.
Существует много преимуществ использования суперкомпьютеров. Во- первых, использование графических ускорителей NVIDIA позволяет значительно увеличить скорость вычислений, она становится в тысячу раз быстрее обычного персонального компьютера, что очень полезно, например, при прогнозировании погоды. Потребовались бы десять дней для ПК, чтобы спрогнозировать прогноз погоды всего на одни сутки, что нельзя сказать о суперкомпьютере, который значительно отливается своей мощностью, а следовательно и скоростью выполнения сложных операций. Второе преимущество суперкомпьютера заключается в то, что он обладает самым передовым технологическим уровнем, например, арсенид Галлума (GaAS).Третий аспект, касающийся этих удивительных машин, которые помогают людям во всем мире, заключается во множестве конкретных архитектурных решений, направленных на повышение быстродействия выполняемых задач.
Суперкомпьютеры дали возможность решению задач огромного размера. Стало возможным приступить к реализации реалистических математических моделей сложных физических явлений и технических устройств, которые ранее невозможно было решать на маломощных последовательных компьютерах[6].
В течение десятилетий суперкомпьютеры стремились к повышению производительности. Но, кроме умопомрачительного повышения быстродействия одного микропроцессора, производители суперкомпьютеров зачастую увеличивали число процессоров в целом. Их труды не прошли даром, потому что в наше время суперкомпьютеры насчитывают десятки и сотни тысяч согласованно работающих процессорных ядер[1].
Производительность в разы увеличилась благодаря распараллеливанию алгоритмов под многоядерные цифровые преобразователи (ЦП), но, к сожалению, увеличивать скорость на традиционных архитектура становится с каждым годом сложнее.
В настоящее время, применение дополнительных ускорителей, которые принимают на себя часть вычислительной нагрузки, является актуальным для высокопроизводительной обработки данных
Основной отличительной чертой современных GPU является включение в архитектуру CUDA (Compute Unified Device Architecture) унифицированного шейдерного конвейера, который в свою очередь позволяет программе задействовать разнообразные фрифмитически-логические устройства (АЛУ), входящее в микросхему [1].
Данное добавление средств было произведено с целью расширения возможности решения спектра задач, начиная от традиционных задач компьютерной графики и заканчивая вычислениями общего назначения.
Производительность вычислений на GPU может в разы увеличиться за счет количества ядер и других архитектурных особенностей. Таким образом, мы приходим к тому, что решение задач матричного умножения на программно-аппаратной архитектуре параллельных вычислений NVidia CUDA является актуальной.
Практическая новизна работы заключается в сравнительном анализе программных технологий перемножения матриц на графическом процессоре с учетом архитектурных особенностей плат NVidia Tesla K10.
Объектом бакалаврской работы является вычислительный процесс умножения матриц на аппаратно-программной платформе CUDA.
Предмет бакалаврской работы - параллельные алгоритмы и программная реализация процесса умножения матриц.
Цель работы: анализ эффективности разработанных алгоритмов матричного умножения с использованием программно-аппаратной архитектуры параллельных вычислений NVidia CUDA.
Задачами работы являются:
1. Изучить методы параллельных алгоритмов матричного умножения.
2. Спроектировать параллельные алгоритмы матричного умножения.
3. Реализовать параллельные алгоритмы умножения матриц на языке CUDA C/C++.
4. Протестировать и исследовать эффективность разработанных алгоритмов матричного умножения.
Бакалаврская работа состоит из трех глав.
Первая глава работы посвящена анализу матричного умножения и численных способов решения под ЭВМ с распараллеливанием. А также анализу суперкомпьютера ТГУ, технологии CUDA и архитектуры NVidia Kepler.
Вторая глава описывает особенности умножения матриц под технологию CUDA, реализацию алгоритмов решения и их тестирование.
Третья глава посвящена процессу анализа эффективности реализованных алгоритмов матричного умножения и их улучшению.
В заключении подводится общая оценка данных реализаций алгоритма, анализ возникших при разработке трудностей, а также перспективы применения алгоритма в различных ситуациях.
✅ Заключение
Для хорошо распараллеливаемых вычислений и сложных алгоритмов использование CUDA дает лучший результат.
На примере умножения матриц мы видим эффективность и способы оптимизации реализации параллельных алгоритмов на технологии Nvidia Cuda. Серия экспериментов выявила один небольшой недостаток, заключающийся в том, что передача данных в видеопамять и обратно требует много времени.
Графические процессоры от NVIDIA и программно-аппаратная архитектура параллельных вычислений NVidia CUDA позволяют программистам использовать тысячи CUDA ядер для параллельных вычислений. Для простых вычислений глубокие знание архитектуры GPU не требуются. Однако только реализация программ под конкретную архитектуру конкретного GPU даст максимальную производительность.



