Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Исследование параллелизма при решении двухточечной краевой задачи на графических ускорителях NVIDIA (магистерская диссертация).docx
Скачиваний:
66
Добавлен:
28.06.2014
Размер:
1.59 Mб
Скачать

НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ

УНИВЕРСИТЕТ

«МЭИ»

Институт Автоматики и вычислительной техники

Кафедра Прикладной математики

НаправлениеПрикладная математика и информатика

___________________________________

МАГИСТЕРСКАЯ ДИССЕРТАЦИЯ

Программа: Математическое и программное обеспечение вычислительных машин и компьютерных сетей

Тема:Исследование параллелизма при решении двухточечной краевой задачи на графических ускорителях NVIDIA

___________________________________________________________________

Студент А-13-08 Логинов А. А.

группа подпись фамилия, и., о.,

Научный

руководитель доцент к.т.н. Шамаева О. Ю.

должность звание подпись фамилия, и., о.,

Консультант_____________________________________________________________

должность звание подпись фамилия, и., о.,

Консультант_____________________________________________________________

должность звание подпись фамилия, и., о.,

Магистерская диссертация допущена к защите

Зав.кафедрой_____________________________________________________________

звание подпись фамилия, и., о.,

Дата_________

МОСКВА 2014г.

Аннотация

Изучение архитектуры современных графических процессоров и средств для их программирования с целью эффективного решения сложных задач является актуальной темой для исследования на сегодняшний день. Целью данной работы было изучить возможности графических адаптеров и исследовать параллелизм при решении двухточечной краевой задачи методом параллельной блочной прогонки на графическом ускорителе NVIDIA. Разработанная параллельная программа позволяет принять решение об эффективности и целесообразности применения графического ускорителя для данной задачи. Программная реализация написана в двух вариантах с разными требованиями к ресурсам, что позволяет судить о возможностях подсистемы памяти ускорителя.

Research in the field of modern GPU architecture and programming tools aimed to develop effective solutions of complex task is a vital subject. The main goal of this work was to research the parallelism in solving the boundary value problem by the tridiagonal matrix algorithm using NVIDIA GPU. Developed program allows to make a decision about the usefulness of GPU for this task. There are two versions of software implementation, each with own approach to use accelerator resources that allows considering the possibilities of the accelerator memory subsystem.

Оглавление

Магистерская диссертация допущена к защите 1

Аннотация 2

ВВЕДЕНИЕ 5

1. Графические ускорители – как эффективный путь повышения производительности вычислительных архитектур 8

1.1. Этапы развития графических ускорителей и их устройство 8

1.1.1. Основная терминология и устройство графического адаптера 8

1.1.2. Архитектура современных GPU 10

1.2. Подход к использованию графических ускорителей для вычислений общего назначения 14

1.2.1. GPGPU подход 14

1.2.2. Гибридные вычислительные системы 18

1.2.3. Программная модель CUDA 22

1.3. OpenACC. Новейший стандарт разработки GPGPU-приложений 32

1.3.1. Возможности стандарта 32

1.3.2. Модель выполнения 33

1.3.3. Модель памяти 36

1.4. Выводы по разделу 1 38

2. Постановка задачи магистерской диссертации 39

2.1. Цели и задачи исследования 39

2.2. Математическая постановка задачи решения трехдиагональной системы линейных уравнений методом блочной прогонки 39

2.3. Разработка параллельного алгоритма для решения трехдиагональной системы линейных уравнений 43

2.4. Выводы по разделу 2 48

3. Реализация и исследование разработанного алгоритма 49

3.1. Структура параллельной программы и особенности реализации 49

3.2. Результаты тестирования 52

3.3. Анализ результатов 59

3.4. Выводы по разделу 3 60

ЗАКЛЮЧЕНИЕ 61

Список использованных источников 62

Приложение 1. История развития графических ускорителей и их устройство 63

1.1. Устройство графического адаптера 63

1.2. Рынок графических адаптеров 64

1.3. Архитектура GPU GT200 66

1.4. Современное положение дел 69

Приложение 2. Основная часть программного кода разработанного приложения 74

Введение

Наиболее перспективным и динамичным направлением увеличения скорости решения прикладных задач является широкое внедрение идей параллелизма в работу вычислительных систем. К настоящему времени спроектированы и внедрены сотни различных вычислительных систем, использующих в своей архитектуре тот или иной вид параллельной обработки данных.

Важной тенденцией в развитии таких систем являются гибридные комплексы и гетерогенные системы, которые с каждым годом все больше вытесняют традиционные многопроцессорные системы из списка самых мощных вычислительных комплексов. Использование графических процессоров в качестве сопроцессоров, пожалуй, является основным трендом в этом направлении. По данным на ноябрь 2013 года, в списке самых мощных суперкомпьютеров 53 системы используют графические процессоры.

Современные графические процессоры – GPU(GraphicsProcessing Unit), в том числе и те, что лежат в основе видеокарт, значительно превосходят классические центральные процессоры (CPU) по производительности. На их основе строятся гибридные вычислительные системы, которые обладают уникальными эксплуатационными характеристиками. Это стало возможным благодаря технологииGPGPU(General-purposeGPU) – технике использования GPU, который обычно имеет дело с обработкой только компьютерной графики, для выполнения расчётов и вычислений общего назначения, которые обычно проводитCPU.

Графический процессор, в отличие от универсального, обладает меньшим набором исполняемых команд, но большей производительностью. Современный графический процессор состоит из тысяч более простых (по архитектуре) и энергоэффективных ядер, созданных для обработки несколько задач одновременно.

Основные производители видеочипов NVIDIA и AMD разработали соответствующие платформы под названием CUDA (Compute Unified Device Architecture) и CTM (Close To Metal или AMD Stream Computing). Обе платформы предоставляют программисту прямой доступ к аппаратным возможностям видеокарты, но требуют от него определенного уровня знаний особенностей технологии. Помимо данных платформ существуют библиотеки, предоставляющие более высокоуровневый доступ к параллельным вычислениям. Подобные библиотеки не требуют от разработчика затрат времени на глубокое изучение технологии.

Для программирования GPU возможно использование широкого круга технологий, в том числе наиболее распространённой технологии CUDA, открытого стандарта OpenCLи, стремительно набирающего популярность, стандартаOpenACC.

Применение GPUдля вычислений общего назначения используется во многих научных и прикладных областях для решения, как сложных исследовательских задач, так и повседневных. В их числе молекулярное моделирование, квантово-химические программы, задачи поиска нефтяных месторождений.

Благодаря соотношению производительности на ватт потребляемой энергии и широкому распространению на рынке, графические ускорители всё больше оказывают влияние на архитектуру высокопроизводительных вычислений, которая развивается в сторону гетерогенных вычислительных систем. Использование графических ускорителей наряду с классическими микропроцессорами [1] сегодня является распространенной практикой в сфере параллельных вычислений на гетерогенных платформах, сочетающих в себе вычислительные элементы различного типа.

Таким образом, исследования, направленные на изучение и эффективное применение GPU для решения различных классов сложных задач являются актуальными. Одной из таких задач является решение двухточечной краевой задачи для обыкновенного дифференциального уравнения второго порядка методом прогонки. Двухточечные граничные задачи встречаются во всех областях науки и техники. Например, при решении уравнения изменения объёма производства в замкнутой экономической системе, решении уравнения гармонического осциллятора, решении уравнения затухающих (ангармонических) колебаний.

В данной работе рассмотрены вопросы параллелизма, связанные с графическими ускорителями; проведено исследование архитектуры GPUи программных средств, используемых для написания приложений дляGPU, с целью эффективного решения краевой задачи методом блочной прогонки.

В разделе 1 вопрос использования графических ускорителей NVIDIAдля эффективного решения поставленной задачи рассматривается с двух сторон: изучение архитектурыGPUи исследование программной моделиCUDA.

В разделе 2 описаны цели данного исследования, даны постановка и математическое описание задачи, разработан параллельный алгоритм для решения поставленной задачи методом блочной прогонки.

В разделе 3 описаны структурное деление разработанной программы на модули, этапы выполнения параллельной программы, а также основные директивы, которые использовались при написании OpenACC‑реализации параллельного алгоритма; приведены результаты тестирования параллельной программы и их анализ.