Исследование влияния шаблона доступа к глобальной памяти графического процессора на производительность
Автор: Арзуманян Роман Вадимович, Сухинов Александр Иванович
Журнал: Вестник Донского государственного технического университета @vestnik-donstu
Рубрика: Информатика, вычислительная техника и управление
Статья в выпуске: 2 (85) т.16, 2016 года.
Бесплатный доступ
Целью данной работы является изучение влияния загруженности вычислительных ядер графического процессора и шаблона обращения к памяти на пропускную способность шины памяти и ускорение масштабирования. Предмет исследования - задача масштабируемости производительности параллельных вычислений и их ускорение. В ходе работы была проверена следующая гипотеза: при обработке изображений для мно-гоядерных систем с общей памятью закон Густафсона - Барсиса более важен, нежели шаблон обращения к памяти при недостаточной загруженности вычислительных ядер графического процессора. Методология проведения исследования - вычислительный эксперимент с последующим анализом полученных данных. В ходе исследования подтверждена выдвинутая гипотеза. Для этого был проведен ряд экспериментов на различных гетерогенных вычислительных системах с поддержкой стандарта OpenCL. Анализ результатов позволяет сделать следующие выводы. Шаблон доступа к памяти начинает накладывать ограничения на производительность алгоритма только при достаточной загруженности вычислительных ядер. Видеокарты, оснащенные собственной памятью, показывают более стабильные результаты работы по сравнению с теми, что используют память, общую с центральным процессором. Область применения полученных данных - разработка алгоритмов и программного обеспечения для высокопараллельных вычислительных систем.
Доступ к памяти
Короткий адрес: https://sciup.org/14250196
IDR: 14250196 | DOI: 10.12737/19687
Текст научной статьи Исследование влияния шаблона доступа к глобальной памяти графического процессора на производительность
Введение. В настоящее время признано, что графические процессоры (graphical processing unit — GPU) являются мощным инструментом решения задач, хорошо поддающихся распараллеливанию (General-purpose computing for graphics processing units, GPGPU — неспециализированные вычисления на графических процессорах). Однако лишь малая часть существующего программного обеспечения эффективно использует мощности графических процессоров.
-
* Работа выполнена в рамках инициативной НИР.
-
* *E-mail: roman.arzum@gmail.com , sukhinov@gmail.com
-
* **The research is done within the frame of the independent R&D.
Информатика, вычислительная техника и управление
В качестве причин могут быть названы относительная новизна (широкое распространение технологии GPGPU получили в 2008-2010 гг.) и существенное архитектурное отличие от процессоров приложений (большее количество ядер, малый суммарный объем кэш-памяти).
Вопросу оптимизации алгоритмов для GPU посвящено немало руководств по программированию от ведущих производителей видеокарт. Среди них можно отметить документы от Nvidia [1], AMD [2] и ARM [3]. Во всех перечисленных источниках организация доступа потоков графического процессора к памяти представлена как важный аспект в достижении высокой производительности многоядерных систем. Однако в периодической научной литературе авторам не удалось найти работы, систематически исследующие, каким образом на производительность систем влияет шаблон доступа к памяти различных систем с графическими процессорами. Ранее влияние операций обмена информацией при обращении к памяти и при межпроцессорных пересылках рассматривались в работах [4-6].
В руководствах в общих чертах сказано о том, что доступ к памяти нужно организовывать определенным образом — так, чтобы соседние потоки обращались к соседним ячейкам памяти [1]. Желательно, чтобы при этом использовались векторные операции чтения/записи [2, 3]. На практике это не всегда возможно по ряду причин (шаблон доступа жестко задан алгоритмом, используется структура данных в формате изображения, которая не позволяет организовать такое обращение к оперативной памяти, и т. п.).
В этой связи интересно выяснить, на какой уровень производительности можно рассчитывать при обработке изображений с использованием различных шаблонов доступа, необходимых, чтобы определить, насколько «неудачный» шаблон может снизить скорость работы алгоритма. Также важно ответить на вопрос: является ли доступ к памяти тем фактором, который ограничивает производительность алгоритма в первую очередь? Помимо вышеперечисленного интерес представляет проведение экспериментов на компьютерах, в которых центральный и графический процессоры используют физически общую память, поскольку в данном случае возрастает нагрузка на общий контроллер памяти и результаты могут быть менее предсказуемыми.
Гипотеза. Как и для всякой вычислительной системы с массовым параллелизмом, для GPU важен закон Густафсона — Барсиса [7, 8]:
S p = g + (1 - g ) Р , (1)
где g — доля последовательных расчетов, p — количество процессоров, Sp — ускорение масштабирования.
В качестве модельной выберем задачу копирования изображения с различным числом потоков. Обработка изображений является типичной задачей для GPU. Выдвинем гипотезу: «Количество задействованных потоков в вычислениях оказывает большее влияние на быстродействие алгоритма для GPU, нежели шаблон доступа к памяти при малом количестве потоков». Несмотря на кажущуюся очевидность данного утверждения, не следует забывать о том, что в случае неудачной организации доступа к памяти запросы могут быть сериализованы [1, 2], что приведет к увеличению g .
Цель работы. Предполагается ответить на ряд вопросов.
— Является ли доступ к памяти тем фактором, который ограничивает производительность алгоритмов на GPU в первую очередь?
— Существует ли шаблон доступа, одинаково подходящий для большинства GPU?
— Каков разброс результатов для видеокарт с собственной памятью и тех, что используют память из общего с CPU объема?
Экспериментальная часть. Каждый эксперимент представляет собой запуск OpenCL ядра, которое осуществляет копирование монохромного изображения 384x512 пикселов с 8-битным цветом. При этом используется уникальный шаблон доступа к памяти.
Ширина изображения в пикселах обозначалась W ; высота изображения в пикселах — H , количество потоков по оси 0 Х — Thx , количество потоков по оси 0 Y — Th у .
Всего использовалось 9 шаблонов доступа, что дает столько же экспериментов (табл. 1).
Описание экспериментов
Таблица 1
Шаблон |
Размерность |
Число потоков |
Особенности копирования пикселов потоком |
Simple |
Th x =W Th y =H |
196608 |
Копирует один пиксел |
Row4 |
Th x =W/ 4 Th y =H |
49152 |
Векторно копирует строку из 4 пикселов |
Row16 |
Th x =W/ 16 Th y =H |
12228 |
Векторно копирует строку из 16 пикселов |
Coll4 |
Th x =W Th y =H/ 4 |
49512 |
Поэлементно копирует столбец из 4 пикселов |
Col16 |
Th x =W Th y =H/ 16 |
12228 |
Поэлементно копирует столбец из 16 пикселов |
Row4x4 |
Th x =W/ 4 Th y =H/ 4 |
12228 |
В цикле векторно копирует строку из 4 пикселов |
Row16*16 |
Th x =W/ 16 Th y =H/ 16 |
768 |
В цикле векторно копирует строку из 16 пикселов |
Col4x4 |
Th x =W/ 4 Th y =H/ 4 |
12228 |
В цикле поэлементно копирует столбец из 4 пикселов |
Col16x16 |
Th x =W/ 16 Th y =H/ 16 |
768 |
В цикле поэлементно копирует столбец из 16 пикселов |
Эксперименты проводились на четырех тестовых компьютерах (табл. 2).
Характеристики тестовых компьютеров
Таблица 2
Система |
CPU |
GPU |
Тип памяти GPU |
Windows 8.1 |
Core i5 4200U |
AMD Radeon |
Дискретная, 1Gb DDR3 800 MHz, 128 bit |
Windows 7 |
AMD A10-5700K |
8670M |
Общая с CPU, DDR3 900 MHz, 128 bit |
Linux |
ARM CortexA15 |
ARM Mali T624 |
Общая с CPU, DDR3 800 Mhz, 64 bit |
Windows Server 2008 |
AMD Opteron 6100 |
Nvidia Tesla C2075 |
Дискретная, 6Gb DDR5 3600 MHz, 384 bit |
Тестовые ПК можно разделить на две категории:
-
1) процессор и видеокарта используют общую память из объема ОЗУ;
-
2) видеокарта оснащена собственной памятью.
Это важно, потому что использование общей памяти создает дополнительную нагрузку на контроллер памяти.
Стандарт OpenCL позволяет использовать общую память и для видеокарт с дискретной памятью — в этом случае операции чтения/записи выполняются неявно для пользователя. Поэтому эксперименты проводились в двух режимах. Слева на графике (рис. 1) — вариант с использованием памяти видеокарты. Справа — вариант с использованием общей памяти. По оси абсцисс — название эксперимента.
Информатика, вычислительная техника и управление
8,00
7,00
6,00
5,00
4,00
3,00
2,00
1,00
0,00
Radeon 8670M


Рис. 1. Экспериментальные результаты для видеокарты AMD Radeon 8670M
Данная видеокарта основана на RISC-архитектуре GCN [8]. При использовании памяти видеокарты пропускная способность почти всегда высокая (около 50 % от пиковой) и всегда стабильная. При использовании разделяемой памяти ограничителем скорости является шина PCI-Е 2.0 Х4, к которой подключен GPU. Отчетливо видно, что при малом числе потоков (эксперименты Row16*16 и Col16*16) результаты схожи, несмотря на различный шаблон доступа. При этом результаты экспериментов с большим числом потоков (Row16 и Col16) различаются более чем в 2 раза — следовательно, шаблон доступа к памяти в данном случае имеет значение.
Карта Radeon 7660D основана на VLIW-архитектуре Terascale, предшествовавшей GCN. Несмотря на большую пиковую пропускную способность (21 Гбайт/с) по сравнению с предыдущим экспериментом, полученные результаты в среднем хуже и, что более важно, существенно менее стабильны. Ситуация с экспериментами Row16, Col16, Row16*16 и Col16*16 в точности повторяет результаты предыдущей видеокарты (рис. 2).
Radeon 7660D

Mali T624 — видеокарта для мобильных устройств [9]. Данный GPU основан на VLIW-архитектуре ARM Midgard. В данном случае видна сильная зависимость результата от длины векторных команд чтения/записи. С ростом длины команды пропускная способность также возрастает. В то же время поэлементный доступ к элементам изображения предсказуемо медленный. Примечательно, что использование собственной или разделяемой памяти никак не сказывается ни на пропускной способности, ни на разбросе результатов. В данном случае шаблон доступа к памяти имеет гораздо большее значение, чем число потоков. Это можно объяснить тем, что видеокарта оснащена всего 8 ALU, и даже относительно малое число потоков загружает графический процессор (рис. 3).
2,50
2,00
1,50
1,00
0,50
0,00
Mail T624



Рис. 3. Экспериментальные результаты для видеокарты ARM Mali T624
Tesla C2075 — это флагманский ускоритель вычислений Nvidia на архитектуре Fermi [10]. Данная карта оборудована 6 Гб собственной памяти. По результатам экспериментов можно сделать вывод о том, что объем задачи недостаточен для такого мощного решения, т. к. максимальная достигнутая пропускная способность составляет всего 12 % от пиковой. Использование собственной или разделяемой памяти никак не отразилось на результатах, потому что ускоритель подключен через шину PCI-E 2.0 X16, которая не является сдерживающим фактором. В данном эксперименте шаблон доступа к памяти также становится важен при большом числе потоков (эксперименты Row4 и Col4). При меньшем числе потоков (эксперименты Row16*16 и Col16*16) шаблон доступа оказывает не такое большое влияние на производительность (рис. 4).
Tesla C2075

Выводы. По результатам проведенных экспериментов можно сделать вывод о том, что для тестовых систем высказанная гипотеза является справедливой — а именно, шаблон доступа к памяти начинает накладывать ограничения на производительность алгоритма только при достаточно большом количестве запущенных потоков.
В ходе экспериментов не найден метод, который показывал бы одинаково хороший результат на всех проте- стированных системах, несмотря даже на малое их количество.
Видеокарты, оснащенные собственной памятью, предсказуемо показывают более стабильные результаты работы, но при этом накладывают ограничения на совместное использование данных центральным и графическим процессорами. Напротив, видеокарты, использующие общую с центральным процессором память, могут сохранять стабильность результатов при использовании общей памяти, а также давать больший разброс показателей.
Информатика, вычислительная техника и управление
Список литературы Исследование влияния шаблона доступа к глобальной памяти графического процессора на производительность
- OpenCL Programming Guide for the CUDA Architecture/NVIDIA corporation. -Santa Clara: NVIDIA, 2009. -60 p.
- AMD Accelerated Parallel Processing OpenCL Programming Guide/Advanced Micro Devices. -Sunnyvale: ADM, 2013. -294 p.
- Mali T600 Series OpenCL GPU Developer Guide /ARM. -Режим доступа: http://infocenter.arm.com/help/topic/com.arm.doc.dui0538e/DUI0538E_mali_t600_opencl_dg.pdf (дата обращения: 16.04.16).
- Сухинов, А. И. Двумерные схемы расщепления и некоторые их приложения/А. И. Сухинов//Москва: МАКС Пресс, 2005. -408 с.
- Николаев, И. A. О распараллеливании треугольных итерационных методов на специализированной многопроцессорной системе/И. A. Николаев, А. И. Сухинов, О. Д. Харина//Автоматика и телемеханика. -1986. -Вып. 5. -С. 135-142.
- Сухинов, А. И. Локально-двумерные схемы для решения многомерных параболических уравнений на вычислительных системах матричного типа/А. И. Сухинов//Известия вузов. Математика. -1984. -№ 11. -С. 45-53.
- Encyclopedia of Parallel Computing/Ed. D. Padua. -New York: Springer, 2011. -2176 p.
- Quinn, M.-J. Parallel Programming in C with MPI and OpenMP/M.-J. Quinn. -New York: McGraw-Hill, 2003. -516 p.
- AMD Graphic Core Next /Advanced Micro Devices//AMD Fusion Developer Summit 2013. -Режим доступа: http://developer.amd.com/wordpress/media/2013/06/2620_final.pdf (дата обращения: 16.04.16).
- Global Internet Phenomena Report /Sandvine. -Режим доступа: https://www.sandvine.com/trends/global-internet-phenomena/(дата обращения: 16.04.16).