Тема: ИСПОЛЬЗОВАНИЕ ТЕХНОЛОГИИ CUDA В РЕШЕНИИ ГРАФИЧЕСКИХ И ВЫЧИСЛИТЕЛЬНЫХ ЗАДАЧ
Характеристики работы
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
Введение 5
1. Сравнение центрального и графического процессора 7
1.1 Архитектура CPU 7
1.2 Архитектура GPU 8
1.3 Различия в архитектурах 8
2. Создание программ под графический процессор 12
3. Описание Nvidia Cuda 13
4. Программирование с использованием технологии CUDA 16
4.1 Действия выполняемые на CPU 18
4.2 Программирование ядра на GPU 18
5. Решение задач с использованием технологии CUDA 20
5.1 Графические задачи 20
5.1.1 Трассировка лучей 20
5.1.2 Имитация распространения тепла 22
5.1.3 Моделирование столкновения шаров 24
5.2 Неграфические задачи 27
5.2.1 Реализация алгоритма транспонирования матрицы 27
5.2.2 Реализация алгоритма умножения матриц 28
5.2.3 Реализация алгоритма нахождения обратной матрицы 30
5.3 Общий шаблон решения задач 32
6. Анализ эффективности полученных решений 33
6.1 Анализ алгоритма транспонирования матрицы 33
6.2 Анализ алгоритма умножения матриц 35
6.3 Анализ алгоритма обращения матрицы 38
7. Интерфейс приложения 40
Заключение 42
Список использованных источников 44
Приложение 45
Приложение А. Вспомогательные макросы 45
Приложение Б. Исходный код ядра транспонирования матрицы 45
Приложение В. Исходный код ядра умножения матриц 45
Приложение Г. Исходный код оптимизированного ядра умножения матриц 46
Приложение Д. Исходный код ядер элементарных преобразований.. 47
Приложение Е. Исходный код функции обращения матрицы 49
Приложение Ж. Исходный код ядра трассировки лучей 51
Приложение З. Исходный код ядра процесса распределения тепла ... 53
Приложение И. Исходные коды ядер необходимых для имитации столкновения шаров 54
📖 Введение
Параллельные вычисления — это способ организации компьютерных вычислений, при котором в один момент времени выполняется несколько вычислительных процессов. Использование такой организации вычислений является одной из наиболее актуальных и приоритетных тем для исследования. Многие крупнейшие IT компании уже давно занимаются проектированием и разработкой высокопроизводительных вычислительных систем, работа которых базируются на параллельной обработке данных. Актуальность данной темы заключается в том, что в последнее время усиливается потребность в использовании высокопроизводительных вычислительных систем в научных исследованиях и в других областях, в которых существует необходимость проведения сложных численных экспериментов. Множество таких задач крайне велико, сюда входит анализ и обработка изображений, симуляция физических процессов, прогнозирование различных событий или явлений, анализ спутниковых данных, моделирование химических реакций и многие другие. Центральный процессор просто не может выполнить решение этих задач за приемлемое время из-за огромного объема данных, решением этой проблемы могут стать графические процессоры, которые изначально проектируются для обработки больших объемов информации.
GPGPU - технология использования графического процессора видеокарты для решения задач общего назначения (неграфические задачи, которые обычно решаются с использованием CPU) [1]. Для создания программ, основанных на данном принципе, были разработаны следующие языки и технологии программирования: CUDA, OpenCL, OpenACC и другие.
Одной из лучших реализаций GPGPU является технология CUDA от компании NVIDIA. Данная технология позволяет разработчику по своему усмотрению организовывать выполнение необходимых вычислений на GPU и достаточно гибко работать с памятью видеокарты, что в свою очередь дает возможность организовывать на нем сложные алгоритмы с использованием параллельных вычислений. В основе CUDA лежит язык C/C++ с небольшими структурными модификациями. Решения, реализованные с использованием данной технологии можно легко встраивать в уже существующие проекты, что позволяет произвести улучшении их производительности за счет передачи сложных вычислений на GPU.
Целью данной работы является детальное исследование возможности использования графических процессоров для решения неграфических задач, а также показать возможность применения CUDA для графических решений. Помимо этого провести анализ о целесообразности использования данной технологии для каждого типа задач. Выделить общую последовательность действий, которые помогают при написании программ при использовании технологии CUDA.
✅ Заключение
В результате проделанной работы был проведен сравнительный анализ архитектуры центрального и графического процессоров, изучены существующие технологии программирования на GPU, основное внимание было уделено теоретическим особенностям программирования с использованием технологии CUDA, а так же приобретены практические навыки написания программ, использующих графический процессор для вычислений.
Реализация параллельных алгоритмов транспонирования, умножения и обращения матриц показала, что при использовании технологии CUDA значительно увеличивается скорость их работы, особенно на данных больших размерностей. Результаты проведенного тестирования показали, улучшения во времени, которое занимает выполнение алгоритмов, по сравнению с аналогичными решениями для CPU. На основе проведенных исследований были сделаны выводы о том, что использование GPU для решения вычислительных задач является оптимальным.
Несмотря на то, что программно-аппаратная архитектура NVIDIA CUDA изначально проектировалась с целью предоставить разработчикам набор различных инструментов для программирования алгоритмов решающих неграфические задачи на GPU, эту технологию можно использовать и при решении графических задач. Но целесообразность реализации таковых на CUDA зависит от самой задачи, ведь во многих случаях быстрее и удобнее написать программу с использованием шейдеров.
В заключение можно с уверенностью сказать, что нельзя полностью заменить центральные процессоры на GPU, но зато графические процессоры могут взять на себя выполнение наиболее трудоемких и сложных задач, с которыми CPU может и не справиться.



