Исследование влияния шаблона доступа к глобальной памяти графического процессора на производительность

Автор: Арзуманян Роман Вадимович, Сухинов Александр Иванович

Журнал: Вестник Донского государственного технического университета @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).
Еще
Статья научная