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


ИСПОЛЬЗОВАНИЕ ТЕХНОЛОГИИ CUDA В РЕШЕНИИ ГРАФИЧЕСКИХ И ВЫЧИСЛИТЕЛЬНЫХ ЗАДАЧ

Работа №46625

Тип работы

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

Предмет

информатика

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

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


Обозначения и сокращения 4
Введение 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.


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

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

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


Технология CUDA является доступной каждому разработчику, владеющему навыками программирования на языке С/С++ и разбирающемуся в его специфике. Нужно будет только освоить особенность программирования, которая используется при создании программ с параллельными вычислениями. Если алгоритм обладает высокой степенью параллелизма, то временные затраты на изучение CUDA обязательно принесет большую выгоду. Так скорость объемных вычислений, которые выполняется на GPU, по сравнению с CPU в зависимости от алгоритма может быть в десятки или даже в сотни раз больше.
В результате проделанной работы был проведен сравнительный анализ архитектуры центрального и графического процессоров, изучены существующие технологии программирования на GPU, основное внимание было уделено теоретическим особенностям программирования с использованием технологии CUDA, а так же приобретены практические навыки написания программ, использующих графический процессор для вычислений.
Реализация параллельных алгоритмов транспонирования, умножения и обращения матриц показала, что при использовании технологии CUDA значительно увеличивается скорость их работы, особенно на данных больших размерностей. Результаты проведенного тестирования показали, улучшения во времени, которое занимает выполнение алгоритмов, по сравнению с аналогичными решениями для CPU. На основе проведенных исследований были сделаны выводы о том, что использование GPU для решения вычислительных задач является оптимальным.
Несмотря на то, что программно-аппаратная архитектура NVIDIA CUDA изначально проектировалась с целью предоставить разработчикам набор различных инструментов для программирования алгоритмов решающих неграфические задачи на GPU, эту технологию можно использовать и при решении графических задач. Но целесообразность реализации таковых на CUDA зависит от самой задачи, ведь во многих случаях быстрее и удобнее написать программу с использованием шейдеров.
В заключение можно с уверенностью сказать, что нельзя полностью заменить центральные процессоры на GPU, но зато графические процессоры могут взять на себя выполнение наиболее трудоемких и сложных задач, с которыми CPU может и не справиться.



[1] GPGPU: General Purpose Computation On Graphics Hardware / Luebke D., Harris M., Kruger J. - Изд. «SIGGRAPH», 2005. - 276 c.
[2] Что такое CUDA? // NVIDIA [Электронный ресурс] / NVIDIA Corporation, 2018 (URL: http://www.nvidia.ru/object/cuda-parallel- computing- ru.html)
[3] Параллельные вычисления на GPU. Архитектура и программная модель CUDA: учебное пособие. / Боресков А.В. - Изд. «Переплет», 2012. -336 с.
[4] Nvidia CUDA — неграфические вычисления на графических
процессорах (URL: http://www.ixbt.com/video3/cuda-1.shtml)
[5] Технология CUDA в примерах. Введение в программирование графических процессоров / Сандерс Д., Кэндрот Э. - Изд-во «ДМК-Пресс», 2013 - 56c.
[6] Основы работы с технологией CUDA. / Боресков А.В., Харламов А.А. - Изд. «ДМК Пресс», Москва, 2010г.
[7] Трассировка лучей // Wikipedia [Электронный ресурс] / (URL:
https://ru. wikipedia.org/wiki/Т рассировка_лучей)
[8] NVIDIA CUDA Programming Guide / NVIDIA Corporation, 2018 - 15 с.


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



Подобные работы


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