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


Аспекты реализации параллельных алгоритмов, практическое применение их в GPU в массивно-параллельной архитектуре

Работа №77558

Тип работы

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

Предмет

информатика

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

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


Список обозначений, сокращений, терминов 3
Введение 4
1. Техника общих вычислений на графическом процессоре 6
1.1 General-purpose graphics processing units 6
1.2 NVIDIA CUDA 10
1.3 AMD ATI Stream Technology 11
1.4 Преимущества CUDA 12
2. Архитектура NVIDIA CUDA 13
2.1. CUDA 13
2.2 Модель памяти CUDA 15
2.3. Мультипроцессоры 18
2.4. Программирование CUDA 19
3. Пример использования технологии NVIDIA CUDA 24
3.1 Однопроцессорная реализация расчетного алгоритма 24
3.2 Реализация расчетного алгоритма с использованием технологии CUDA. 25
4. Распараллеливание алгоритма вычисления интеграла 30
5. Реализация алгоритма графического отображения «Мерцающий цветок» посредством CUDA и OpenGl 34
6. Полученные результаты 40
Заключение 43
Список литературы 45
Приложение А. «Подсчет интеграла» 46
Приложение В. «Мерцающий цветок» 48
Файл .cpp 48
Файл .cu


Мы живем в удивительную эпоху, когда научно-технический подъем охватил, пожалуй, все сферы деятельности человека, у нас на глазах сменились около шести поколений вычислительной техники, прогресс не дает ни минутного снисхождения разработчикам и производителям.
Стоит только задуматься: за последние десять лет понятия как «Объем памяти» и «Производительность» характеризовали величину, прогрессирующую со столь впечатляющим темпом, что с трудом верится в целесообразность дальнейшей модернизации, равно как и в существование задач, способных подвергнуть современные аппаратные шедевры творения IT- корпораций из кремния и стали новым, неведомым ранее нагрузкам!
С возрастанием возможностей компьютеров человечество находит им применения в прикладной и научной сфере деятельности. Особенно требовательны к аппаратным ресурсам такие задачи, как обработка и рендеринг потокового аудиовизуального контента высокого качества, моделирование физических процессов и явлений, обработка экспериментальных данных, воссоздание поведенческих особенностей и подражание мозговой деятельности.
Обычному пользовательскому компьютеру с двух или четырехядерным CPU может понадобиться для таких расчетов несколько дней, а иногда недель или месяцев. Чаще всего нам необходимо оперативно получать результаты обработки (например, для обработки сейсмических данных или кодирования видео в режиме online).
Некоторые задачи научного характера способны рассчитать незамедлительно лишь единицы суперкомпьютеров во всем мире, а наиболее сложные решаются при помощи объединения высокопроизводительных серверных станций в кластеры.
Однако стоимость такого оборудования слишком высока. Например, суперкомпьютер производительностью (на тесте Linpack) 408 980 Тфлопс стоит не один миллиард рублей.
При выполнении данных операций используют параллельные вычисления, распределяя нагрузку между ресурсами CPU и процессорами компьютеров кластера.
Разработчики видеокарт нашли выход из такой ситуации. Они позволили увеличить на несколько порядков вычислительные возможности компьютеров, пропорционально уменьшив затраты на программное обеспечение.
Решением стала технология GPGPU. Она позволяет использовать ресурсы видеокарт для неграфических вычислений. И сегодня эта технология становится все более актуальной. Основными конкурентами- производителями видеокарт с аппаратной поддержкой GPGPU являются NVIDIA с комплексом CUDA и AMD с ATI Stream Technology.
CUDA поддерживается во всех видеокартах NVIDIA, начиная с простейших пользовательских, таких как GeForce 8100 mGPU, не говоря уже о специализированных мощных видеокартах. А также ускорение с помощью CUDA уже используют многие пользовательские приложения, например, Adobe Photoshop CS 4, Nero Burning или MatLab. И такие технологии проникают на каждый персональный компьютер.
Поэтому программирование, с использованием ресурсов видеокарты не-вероятно актуально. Мы получаем большую производительность за минимальную цену. Цель моей работы: рассмотрение аспектов реализации параллельных алгоритмов, практическое применение их в GPU в массивно-параллельной архитектуре. Также реализация алгоритма графического отображения «Мерцающего цветка» посредством CUDA и OpenGl для ускорения работы видеокарты путем распараллеливания, то есть использование графических процессоров GPU самой видеокарты.


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

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

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


В процессе выполнения работы были рассмотрены существующие решения для вычисления неграфических задач средствами GPU. Для реализации поставленной задачи была выбрана технология NVIDIA CUDA, как наиболее эффективное вычислительное средство, имеющая ряд преимуществ: доступность, легкость в изучении, поддержка практически любой современной видеокартой NVIDIA, наибольшая производительность и другие.
Анализ времени выполнения алгоритма на GPU , на CPU и на CPU c использованием параллельных алгоритмов, показал, что применение CUDA в разы сокращает время обработки данных. Но хотелось бы отметить, что не имеет смысла использовать технологию CUDA для работы с небольшими объемами данных. Для малых объемов входных данных ускорения практически не наблюдалось.
Теоретические исследования и различные практические эксперименты показывают, что при тщательной подготовке алгоритмов и подборе соответствующих задач с большими параллельно обрабатываемыми фрагментами время вычислений сокращается в десятки и сотни раз. Безусловно, следует потратить время на изучение технологии, постановки задач на GPU, но потраченное время дает затем значительный эффект.
Особенно значимые результаты можно наблюдать при использовании тандема (CPU, GPU) при достойном планировании ресурсов [7].
Подводя итог, хотелось бы отметить, что графический процессор, обладая колоссальными вычислительными способностями, однако по-прежнему не смог бы полностью заменить деятельность центрального процессора, без - условным преимуществом которого является универсальность, зато в его силах существенно разгрузить CPU, взяв на себя нагрузку, представляемую наиболее трудоемкими и сложными задачами.
Но сейчас видеочипы движутся постепенно в сторону CPU, становясь все более универсальными, так же и CPU становятся все более «параллельными», увеличивая количество ядер, используя многопоточность. Возможно, GPU и CPU в будущем просто сольются. Известно, что многие компании, в том числе Intel и AMD работают над подобными проектами. Но на данном этапе наиболее актуальной для объемных вычислений остается, и будет становиться все более популярной, технология GPGPU.
Рассматриваемая технология впервые поступила в массовое производство для рядового потребителя еще в 2008 году с выходом GeForce 8100 mGPU. Первоначальная версия этого графического процессора даже интегрировалась в блок материнских плат. На сегодняшний день о CUDA можно говорить как о весьма удачно нашедшей свое применение перспективной технологии, поддержка которой уже давно не роскошь, а напротив - весьма затруднительно будет найти чипсет, который бы ее не поддерживал


1. Goddeke D., GPGPU. - URL: http://gpgpu.org/
2. NVIDIA. CUDA Zone. -URL:
http: //www.nvidia.ru/obj ect/cuda_home_new_ru. html
3. NVIDIA. Дизайн OpenCL. - URL: http://opencl.ru/design
4. AMD. Вычислительные ускорители AMD . - URL: http://www.amd.com
5. Luebke D., Harris M., Kruger J., и др. GPGPU: General Purpose Computation On Graphics Hardware - SIGGRAPH, 2005. - 277 c.
6. Сандерс Д., Кэндрот Эю. NVIDIA CUDA в примерах: введение в программирование графических процессоров - ДМК Пресс -2011.
7. М.К. Буза - Параллельные вычисления на графических процессорах.
8. М.Е.Жуковский, Р.В.Усков - О применении графических процессоров видеоускорителей в прикладных задачах
9. Артеев Артём - Высокопроизводительные вычисления на видеокартах- 2010


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



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


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