Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Параллельные вычисления общего назначения на графических процессорах

Покупка
Артикул: 799079.01.99
Доступ онлайн
300 ₽
В корзину
В учебном пособии изложены основные принципы организации высокоскоростных параллельных вычислений на графических процессорах. Рассмотрены подходы к программированию графических процессоров с использованием шейдерной модели и NVIDIA CUDA. Проанализированы примеры. Пособие предназначено для проведения практических занятий по программированию графических процессоров для магистрантов.
Параллельные вычисления общего назначения на графических процессорах : учебное пособие / К. А. Некрасов, С. И. Поташников, А. С. Боярченков, А. Я. Купряжкин. - Екатеринбург : Изд-во Уральского ун-та, 2016. - 104 с. - ISBN 978-5-7996-1722-6. - Текст : электронный. - URL: https://znanium.com/catalog/product/1936334 (дата обращения: 20.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Министерство образования и науки Российской Федерации
Уральский федеральный университет
имени первого Президента России Б. Н. Ельцина

К. А. Некрасов, С. И. Поташников, 
А. С. Боярченков, А. Я. Купряжкин

Параллельные вычисления 
общего назначения 
на графических процессорах

Учебное пособие

Рекомендовано методическим советом УрФУ
для студентов, обучающихся по направлениям подготовки
14.04.02 — Ядерная физика и технологии;
09.04.02 — Информационные системы и технологии;
14.04.01 — Ядерные реакторы и материалы

Екатеринбург
Издательство Уральского университета
2016

УДК 004.032.24:004.383.5(075.8)
ББК 32.97я73
          П18
Авторы:
Некрасов К. А., Поташников С. И., Боярченков А. С., Купряжкин А. Я.

Рецензенты:
Институт теплофизики УрО РАН (д‑р физ.‑мат. наук, проф. В. Г. Байда‑
ков); гл. науч. сотр. лаборатории математического моделирования Ин‑
ститута промышленной экологии УрО РАН д‑р физ.‑мат. наук, проф. 
А. Н. Вадаксин

П18
    Параллельные вычисления общего назначения на графических процессорах : учебное пособие / К. А. Некрасов, С. И. Поташников, А. С. Боярчен‑
ков, А. Я. Купряжкин. — Екатеринбург : Изд‑во Урал. ун‑та, 2016. — 104 с.

ISBN 978‑5‑7996‑1722‑6

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

Библиогр.: 22 назв. Рис. 24. Табл. 3. Прил. 1.
УДК 004.032.24:004.383.5(075.8)
ББК 32.97я73

ISBN 978‑5‑7996‑1722‑6 
© Уральский федеральный 
 
     университет, 2016

Введение

Д

ля предсказания характеристик и поведения больших си‑
стем широко используется вычислительное моделирова‑
ние, наиболее принципиальным методом повышения про‑
изводительности которого является распараллеливание вычислений. 
До последнего времени наиболее доступными системами для парал‑
лельных расчетов были кластеры персональных компьютеров или 
близких к ним по архитектуре машин, в которых вычисления про‑
изводились на центральных процессорах общего назначения (CPU). 
Однако такие кластеры достаточно дороги и сложны в эксплуатации. 
К тому же архитектура CPU персональных компьютеров не оптими‑
зирована для интенсивных математических вычислений, поскольку 
основной задачей таких процессоров является исполнение последо‑
вательных программ со сложным ветвлением.
Во второй половине 1990‑х годов началось быстрое развитие графических 
процессоров (GPU) — дополнительных вычислительных 
устройств для ускоренного исполнения алгоритмов визуализации трех‑
мерных сцен [1–3]. Поскольку трехмерная визуализация допускает 
эффективное распараллеливание расчетов, графические процессоры 
разрабатывались как поточно‑параллельные системы с большим ко‑
личеством вычислительных блоков, конвейерной обработкой данных 
и памятью с максимальной пропускной способностью.
Современные графические процессоры выполняют не только стан‑
дартные алгоритмы визуализации, но и сложные пользовательские 
программы, что позволяет решать на них задачи общего назначения, 
включая физико‑математическое моделирование [4–6]. При парал‑
лельных расчетах GPU может обеспечить производительность класте‑
ра из сотен обычных персональных компьютеров. По соотношению 
производительности и цены графические процессоры имеют большое 
преимущество перед другими вычислительными системами, в том чис‑
ле перед специализированными суперкомпьютерами.

1. Структура и возможности  
вычислительной системы  
с графическим процессором

1.1. Задача компьютерной визуализации трехмерных сцен
В

о многих областях использования компьютеров существует 
задача визуализации (представления на экране) трехмерных 
изображений (в дальнейшем — сцен). Трехмерная (3D) визу‑
ализация необходима, например, в компьютерных играх, при созда‑
нии анимации и спецэффектов, а также для инженерного проектиро‑
вания, наглядного представления физико‑математических моделей. 
Поскольку графические процессоры создавались именно для реше‑
ния задачи визуализации, рассмотрим ее основные составляющие.
Пусть, для определенности, трехмерная сцена представляет со‑
бой совокупность поверхностей, разбитых для дискретной компью‑
терной обработки на плоские треугольники. В некоторых массивах, 
которые обычно называют текстурами, хранится информация о цве‑
тах треугольников. Кроме того, известны положения и характеристи‑
ки источников света. Задача визуализации состоит в том, чтобы сфор‑
мировать изображение этой сцены на плоскости экрана, положение 
которой определяется точкой зрения наблюдателя.
Процесс формирования изображения включает в себя следующие 
основные этапы:
· проектирование треугольников, представляющих сцену, на пло‑
скость экрана;
· разбиение полученных проекций на отдельные пиксели, для ко‑
торых будут определяться цвета (стадия растеризации треуголь‑
ников);

1.2. Архитектура графического процессора (GPU)

· определение видимого цвета элементов поверхности треуголь‑
ников с учетом исходного цвета и отражающих свойств самой 
поверхности, прозрачности других поверхностей, освещенно‑
сти и теней.
Обрабатываемые сцены обычно состоят из очень многих треуголь‑
ников, которые разбиваются на еще большее количество пикселей, так 
что их визуализация требует больших вычислительных ресурсов. Вме‑
сте с тем и вершины, и пиксели можно обрабатывать почти или со‑
всем независимо друг от друга. Соответственно задача визуализации 
допускает очень эффективное распараллеливание.
Именно в целях распараллеливания графических вычислений цен‑
тральные процессоры персональных компьютеров стали суперска-
лярными — получили возможность одновременного (векторного) 
исполнения некоторых операций сразу над несколькими числами (рас‑
ширения 3DNow! и SSE).
Большинство центральных процессоров ПК состоит из несколь‑
ких ядер, что дополнительно увеличивает их потенциал как систем 
для параллельных вычислений. Тем не менее исторически сложилось 
так, что наиболее эффективными устройствами для распараллелива‑
ния вычислений на ПК стали и до сих пор остаются специализиро‑
ванные графические процессоры (GPU). Эти процессоры, разраба‑
тывавшиеся именно для обработки графики, практически полностью 
ориентированы на параллельную обработку данных.

1.2. Архитектура графического процессора (GPU)

1.2.1. Распараллеливание вычислений по данным

Конструктивно графический процессор представляет собой вычис‑
лительное устройство, работающее отдельно от центрального процес‑
сора, параллельно с ним. Обычно графические процессоры размещают 
на отдельных печатных платах с собственной системой охлаждения, 
которые называют графическими ускорителями (или видеокартами). 
Вместе с GPU на плате графического ускорителя расположена видеопамять — специализированная оперативная память, в которой хра‑
нятся обрабатываемые графическим процессором массивы данных.

1. СтруктурА и возможноСти вычиСлительной СиСтемы С грАфичеСким процеССором 

На рис. 1.1 в качестве примера показана архитектура графическо‑
го процессора G80 — одного из процессоров компании NVIDIA [4]. 
Главной (и общей для всех графических процессоров) характеристи‑
кой этой архитектуры является то, что GPU представляет собой си‑
стему из параллельных вычислительных устройств, каждое из которых 
применяет заданную, единую для всех устройств, программу (вычис-
лительное ядро, англ. kernel) к различным элементам входных мас‑
сивов данных, расположенных в общей памяти.

Центральный процессор (Host)

Устройство управления вычи-

слительными процессами 
(Tread Execution Manager) 

SM
SM
SM
SM
ј

16 мульти-
процессоров

Кеш графического процессора, доступный всем мультипроцессорам. 

Центральному процессору доступен частично и только для записи 

Общая память для размещения входных данных и результатов 

(видеопамять, Global Memory), доступная как всем мультипроцессорам 
GPU, так и центральному процессору. Размер − до нескольких гигабайтов 

Отдельный «вычислитель» (процессор), 
осуществляющий конвейерную обработку 
данных 

Параллельный кеш данных (Parallel Data
Cache, Shared Memory) – разделяемая память, 
одновременно доступная всем «вычислителям» 
одного мультипроцессора 

SM
SM
SM
SM

SM

Рис. 1.1. Архитектура графического процессора NVIDIA G80 [4]

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

1.2. Архитектура графического процессора (GPU)

Концепция программирования, заключающаяся в потоко‑
вой обработке данных, известна под аббревиатурой SIMD (от англ. 
Single Instruction — Multiple Data — одна инструкция для множества 
данных, рис. 1.2). Процессор, работающий по принципу SIMD, пре‑
образует поток данных в поток результатов, используя программу как 
функцию преобразования.

GPU

Данные
Результаты

Инструкции
(вычислитель-

ное ядро)

Рис. 1.2. Поточно‑параллельная обработка данных SIMD

Выбор концепции SIMD для графических процессоров обусловлен 
тем, что она обеспечивает параллельное использование большого ко‑
личества «вычислителей» без явного управления ими: распределения 
задач, синхронизации вычислений и коммуникации между параллель‑
ными расчетами. Разработчикам GPU это позволяет за счет упроще‑
ния архитектуры добиваться большей производительности, а при про‑
граммировании сокращает работу.
C 2001 по 2006 годы графические процессоры включали в себя «вы‑
числители» двух типов: вершинные и пиксельные конвейеры (или 
шейдеры, см. пояснения ниже) [7–8]. Первые были предназначены для 
проектирования на плоскость экрана вершин, задающих отображае‑
мые поверхности, а вторые — для расчета цветов пикселей на экране. 
Так выпущенные в 2006 году процессоры ATI Radeon X1900–1950 име‑
ли 8 вершинных и 48 пиксельных конвейеров, которые к тому же были 
суперскалярными (одновременно обрабатывали по 4 компоненты век‑
тора).
В 2007 году производители GPU перешли от различающихся вер‑
шинных и пиксельных конвейеров к унифицированным потоковым 
процессорам, заменяющим как вершинные, так и пиксельные конвей‑
еры. Графические процессоры 2014–2015 годов выпуска ATI Radeon 
Fiji XT и NVIDIA GM200–400 включают 4096 и 3072 потоковых процес‑

1. СтруктурА и возможноСти вычиСлительной СиСтемы С грАфичеСким процеССором 

сора (для 32‑битовых вычислений «одинарной» точности) при несколь‑
ко различной внутренней архитектуре. При этом производительность 
графических процессоров продолжает быстро увеличиваться.

1.2.2. Взаимодействие графического и центрального процессоров

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

GPU

Общая память GPU (видеопамять)

Оперативная память

компьютера
Пользователь
Внешние устройства

Вычислительные 

блоки GPU

Программа 

для GPU

Кеш для 
констант

Регистры и разделяемая память вычислительных блоков 

Языки программирования высокого 

уровня для CPU 

•
• Драйвер графического процессора

Графический ускоритель (видеокарта)

Языки для GPU: HLSL, CUDA

CPU

Шина данных PCI-Express либо AGP

CPU

Шина данных PCI-Express либо AGP

CPU

Шина данных PCI-Express либо AGP
Шина данных (обычно − PCI-Express)

•
•
•

•

Рис. 1.3. Схема взаимодействия CPU и GPU с памятью и между собой

Графические ускорители подключаются к системной плате персо‑
нального компьютера через высокоскоростную шину данных (в на‑
стоящее время PCI‑Express). Посредством этой шины центральный 
процессор получает доступ к видеопамяти, а также к некоторым раз‑
делам кеш‑памяти, расположенной на самом графическом процессо‑
ре. Через эту же шину CPU загружает в графический процессор про‑
грамму и запускает ее.

1.2. Архитектура графического процессора (GPU)

Перед запуском программы, исполняемой на GPU, центральный 
процессор передает графическому процессору данные двух видов:
· значения констант, используемых в программе;
· один или несколько больших массивов данных для потоковой 
обработки.
К константам необходим постоянный и быстрый доступ, поэто‑
му они записываются в кеш‑память (или регистры), расположенную 
на кристалле графического процессора. Массивы данных часто быва‑
ют настолько велики, что целиком в кеш‑память не помещаются. Од‑
нако при простейшей потоковой обработке каждый из элементов мас‑
сивов данных используется только один раз. Так что для хранения этих 
массивов предназначена видеопамять (общая память), представляю‑
щая собой отдельные микросхемы на плате графического ускорителя. 
Она работает медленнее кеш‑памяти и регистров, зато имеет бόльший 
объем, до нескольких гигабайтов.
Результаты своей работы графический процессор может сразу за‑
писывать в раздел видеопамяти, называемый буфером кадра, откуда 
они передаются на монитор. Но существует также возможность вооб‑
ще не отображать расчет на экране, а копировать результаты из видео‑
памяти в оперативную память компьютера, где они становятся доступ‑
ными для дальнейшей обработки центральным процессором. На этом 
и основано использование графических процессоров для вычислений 
общего назначения, не связанных с обработкой графики.
На схеме (рис. 1.3) указаны также типы программ, которые исполня‑
ются центральным и графическим процессорами на различных этапах 
обработки данных. Такие программы будут далее подробно рассмотрены.

1.2.3. Иерархия памяти, доступной центральному  
и графическому процессорам

Как показано на схемах (рис. 1.1, рис. 1.3), в программах для гра‑
фических процессоров используется память нескольких разновидно‑
стей с различными характеристиками и назначением. Это так, посколь‑
ку время, затрачиваемое центральным и графическим процессорами 
на операции чтения данных из памяти и записи в память, является 
одним из важнейших факторов, определяющих быстродействие про‑
грамм для графических процессоров.

1. СтруктурА и возможноСти вычиСлительной СиСтемы С грАфичеСким процеССором 

Использование памяти различных типов обусловлено необходимо‑
стью баланса между объемом памяти и скоростью доступа к данным. 
Разновидности памяти, имеющие наибольшую емкость, обычно ха‑
рактеризуются бόльшим временем доступа к данным, и наоборот. Бы‑
стродействие памяти, в свою очередь, определяется двумя характери‑
стиками — латентностью и пропускной способностью.
Латентность — это время доступа к памяти, точнее, время ожида‑
ния процессором данных после запроса. Латентностью определяется 
производительность вычислений при решении задач, требующих ча‑
стого обращения к различным по расположению неупорядоченным 
ячейкам памяти (произвольный доступ к памяти). Такой обмен 
с памятью характерен для интерактивных приложений (программы, 
интенсивно взаимодействующие с другими приложениями и с поль‑
зователями), а также для приложений, управляющих сложными про‑
цессами. Подобные алгоритмы обычно исполняются центральным 
процессором.
Как можно меньшая латентность памяти необходима современ‑
ным центральным процессорам, работающим на очень высоких ча‑
стотах, еще и потому, что таким частотам должна соответствовать вы‑
сокая скорость доступа к данным.
Пропускная способность памяти характеризует объем данных, ко‑
торые могут быть переданы к процессору или от процессора за еди‑
ницу времени. Высокая пропускная способность оказывается эф‑
фективнее низкой латентности в задачах, позволяющих организовать 
последовательный доступ к памяти — считывание (или запись) 
данных из ячеек памяти, расположенных друг за другом, непрерыв‑
ным потоком.
При поточно‑параллельной обработке данных предпочтителен 
именно последовательный доступ к памяти, поэтому видеопамять, 
предназначенная для обмена данными с графическим процессо‑
ром, должна обладать максимальной пропускной способностью даже 
в ущерб латентности.
Иерархия памяти, используемой центральным и графическим про‑
цессорами, уже отчасти отражена на рис. 1.1 и рис. 1.3. На рис. 1.4 при‑
ведена еще одна схема, иллюстрирующая основные принципы исполь‑
зования памяти различных типов. Особенности и назначение каждого 
вида памяти кратко пояснены рядом и будут подробнее прокоммен‑
тированы в примерах.

Доступ онлайн
300 ₽
В корзину