Модель крыши
Модель крыши — это интуитивно понятная визуальная модель производительности , используемая для оценки производительности данного вычислительного ядра или приложения, работающего на многоядерных , многоядерных или ускорительных процессорных архитектурах , путем демонстрации присущих аппаратных ограничений, а также потенциальных преимуществ и приоритета оптимизации . Объединив локальность , пропускную способность и различные парадигмы распараллеливания в единый показатель производительности, модель может стать эффективной альтернативой для оценки качества достигнутой производительности вместо использования простых оценок процента пиковой производительности, поскольку она дает представление как о реализации, так и о производительности. присущие ограничения производительности.
Простейшую модель линии крыши можно визуализировать, построив график зависимости производительности с плавающей запятой от пиковой производительности машины. [ нечеткий ] [ нужны разъяснения ] , пиковая пропускная способность машины и интенсивность арифметических вычислений . Результирующая кривая фактически является границей производительности, при которой существует производительность ядра или приложения, и включает в себя два потолка производительности для конкретной платформы. [ нужны разъяснения ] : потолок, полученный на основе пропускной способности памяти, и предел, полученный на основе пиковой производительности процессора (см. рисунок справа).
Связанные термины и показатели эффективности
[ редактировать ]Работа
[ редактировать ]Работа обозначает количество операций, выполняемых данным ядром или приложением. [1] Эта метрика может относиться к любому типу операции: от количества обновленных точек массива до количества целочисленных операций и количества операций с плавающей запятой (FLOP). [2] и выбор того или иного обусловлен удобством. Однако в большинстве случаев выражается как FLOPs . [1] [3] [4] [5] [6]
Обратите внимание, что работа является свойством данного ядра или приложения и, следовательно, лишь частично зависит от характеристик платформы.
Трафик памяти
[ редактировать ]Трафик памяти обозначает количество байтов передачи памяти, произведенных во время выполнения ядра или приложения. [1] В отличие от , сильно зависит от свойств выбранной платформы, таких как, например, структура иерархии кэша . [1]
Арифметическая интенсивность
[ редактировать ]Арифметическая интенсивность , также называемый эксплуатационной интенсивностью , [3] [7] это отношение работы к трафику памяти : [1] и обозначает количество операций на байт трафика памяти. Когда работа выражается как FLOPs , результирующая арифметическая интенсивность будет отношением операций с плавающей запятой к общему перемещению данных ( флопс/байт ).
Наивная линия крыши
[ редактировать ]Наивная линия крыши [3] получается путем применения простого анализа границ и узких мест. [8] В этой формулировке модели линии крыши есть только два параметра: пиковая производительность и пиковая пропускная способность конкретной архитектуры , а также одна переменная — арифметическая интенсивность . Пиковая производительность, обычно выражаемая как GFLOPS , обычно может быть получена в результате сравнительного тестирования , тогда как пиковая пропускная способность, которая, в частности, относится к пиковой пропускной способности DRAM , вместо этого получается с помощью руководств по архитектуре. [1] [3] Результирующий график, обычно с обеими осями в логарифмическом масштабе , затем выводится по следующей формуле: [1] где это достижимая производительность, это максимальная производительность , это пиковая полоса пропускания и - арифметическая интенсивность. Точка, в которой производительность достигает максимального уровня производительности. , то есть место пересечения диагональной и горизонтальной крыши, определяется как точка конька. [4] Точка гребня дает представление об общей производительности машины, обеспечивая минимальную арифметическую интенсивность, необходимую для достижения максимальной производительности, и с первого взгляда показывая объем усилий, необходимых программисту для достижения максимальной производительности. [4]
Данное ядро или приложение затем характеризуется точкой, определяемой его арифметической интенсивностью. (по оси х). Достижимая производительность затем вычисляется путем рисования вертикальной линии, пересекающей кривую линии крыши. Следовательно. ядро или приложение считаются привязанными к памяти, если . И наоборот, если , что вычисление Говорят привязано к вычислениям . [1]
Добавление потолков в модель
[ редактировать ]Простая линия крыши обеспечивает лишь верхнюю границу (теоретический максимум) производительности . Хотя он по-прежнему может дать полезную информацию о достижимой производительности, он не дает полной картины того, что на самом деле ее ограничивает. Если, например, рассматриваемое ядро или приложение работает намного ниже максимальной производительности, может быть полезно определить другие потолки производительности, помимо простой пиковой пропускной способности и производительности, чтобы лучше подсказать программисту, какую оптимизацию реализовать, или даже оценить пригодность используемой архитектуры по отношению к анализируемому ядру или приложению. [3] Добавленные потолки накладывают ограничение на достижимую производительность, которое находится ниже фактической линии потолка, и указывают на то, что ядро или приложение не могут преодолеть ни один из этих потолков без предварительного выполнения соответствующей оптимизации. [3] [4]
График линии крыши можно расширить по трем различным аспектам: связь , добавление потолков пропускной способности ; вычисления , добавляющие так называемые внутриядерные потолки ; и местность , добавляя стены местности .
-
Пример модели линии крыши с добавленными пропускной способности потолками . В этой модели два дополнительных потолка означают отсутствие программной предварительной выборки и NUMA- организации памяти .
-
Пример модели линии крыши с добавленными внутренними потолками , где два добавленных потолка представляют отсутствие параллелизма на уровне инструкций и параллелизма на уровне задач .
-
Пример модели линии крыши со стенами населенного пункта . Стенка, помеченная тремя буквами C, обозначает наличие всех трех типов промахов кэша : обязательных, пропусков емкости и конфликтных промахов. Стена, обозначенная цифрами 2 C, обозначает наличие либо обязательных и дееспособных, либо обязательных и конфликтных промахов. Последняя стенка обозначает наличие именно обязательных промахов.
Потолок пропускной способности
[ редактировать ]Потолки пропускной способности представляют собой диагонали полосы пропускания, расположенные ниже идеализированной пиковой диагонали полосы пропускания. Их существование связано с отсутствием какой-либо архитектурной оптимизации, связанной с памятью, такой как когерентность кэша , или оптимизации программного обеспечения, такой как плохое раскрытие параллелизма (что, в свою очередь, ограничивает использование полосы пропускания). [3] [4]
Внутренние потолки
[ редактировать ]Внутренние потолки представляют собой изгиб, напоминающий линию крыши, под фактической линией крыши, которая может присутствовать из-за отсутствия той или иной формы параллельности . Эти потолки эффективно ограничивают достижение высокой производительности. Производительность не может превысить внутренний потолок до тех пор, пока не будет выражено и использовано основное отсутствие параллелизма. Потолки также могут быть получены из руководств по архитектурной оптимизации, а не из эталонных тестов. [3] [4]
Стены местности
[ редактировать ]Если убрать идеальное предположение о том, что интенсивность арифметических вычислений является исключительно функцией ядра, и принять во внимание топологию кэша (и, следовательно, промахи в кэше ), интенсивность арифметических вычислений явно станет зависеть от комбинации ядра и архитектуры. Это может привести к ухудшению производительности в зависимости от баланса между результирующей интенсивностью арифметических вычислений и точкой гребня . В отличие от «правильных» потолков, полученные линии на участке линии крыши представляют собой вертикальные барьеры, через которые арифметическая интенсивность не может пройти без оптимизации. По этой причине их называют стенами локальности или стенами арифметической интенсивности . [3] [4]
Расширение модели
[ редактировать ]С момента своего появления, [3] [4] модель была дополнительно расширена для учета более широкого набора показателей и узких мест, связанных с аппаратным обеспечением. В литературе уже имеются расширения, учитывающие влияние NUMA- организации памяти . [6] внеочередного исполнения , [9] задержки памяти , [9] [10] и более детально смоделировать кэша иерархию [5] [9] чтобы лучше понять, что на самом деле ограничивает производительность, и управлять процессом оптимизации .
Кроме того, модель была расширена, чтобы лучше соответствовать конкретным архитектурам и связанным с ними характеристикам, таким как FPGA . [11]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Jump up to: а б с д и ж г час Офенбек, Г.; Штайнманн, Р.; Капаррос, В.; Спампинато, генеральный директор; Пюшель, М. (01 марта 2014 г.). «Применение модели линии крыши». 2014 Международный симпозиум IEEE по анализу производительности систем и программного обеспечения (ISPASS) . стр. 76–85. дои : 10.1109/ISPASS.2014.6844463 . ISBN 978-1-4799-3606-9 . S2CID 206992177 .
- ^ Дэвид А. Паттерсон, Джон Л. Хеннесси. Компьютерная организация и дизайн . п. 543.
- ^ Jump up to: а б с д и ж г час я дж Уильямс, Сэмюэл В. (2008). Автонастройка производительности на многоядерных компьютерах (доктор философии). Калифорнийский университет в Беркли.
- ^ Jump up to: а б с д и ж г час Уильямс, Сэмюэл; Уотерман, Эндрю; Паттерсон, Дэвид (01 апреля 2009 г.). «Линия крыши: содержательная модель визуальной производительности для многоядерных архитектур» . Коммун. АКМ . 52 (4): 65–76. дои : 10.1145/1498765.1498785 . ISSN 0001-0782 . S2CID 7766361 .
- ^ Jump up to: а б Илич, А.; Пратас, Ф.; Соуза, Л. (01 января 2014 г.). «Модель крыши с поддержкой кэша: модернизация чердака». Письма IEEE по компьютерной архитектуре . 13 (1): 21–24. дои : 10.1109/L-CA.2013.6 . ISSN 1556-6056 . S2CID 9208032 .
- ^ Jump up to: а б Лоуренс, Оскар Г.; Пенья, Томас Ф.; Найт, Джозеф К.; Пичел, Джон К.; Ривера, Франсиско Ф. (31 марта 2014 г.). «Использование расширенной модели Roofline для понимания привязки данных и потоков в системах NUMA» . Анналы многоядерного и графического программирования . 1 (1): 56–6 ISSN 2341-3158 .
- ^ «Модель производительности линии крыши» . Национальная лаборатория Лоуренса Беркли . Проверено 19 июня 2016 г.
- ^ Куртис, Корнилиос; Гумас, Георгиос; Козирис, Нектариос (1 января 2008 г.). «Оптимизация умножения разреженной матрицы на вектор с использованием сжатия индексов и значений». Материалы 5-й конференции по передовым технологиям . CF '08. Нью-Йорк, штат Нью-Йорк, США: ACM. стр. 87–96. CiteSeerX 10.1.1.140.9391 . дои : 10.1145/1366230.1366244 . ISBN 9781605580777 . S2CID 8038147 .
- ^ Jump up to: а б с Кабесас, ВК; Пюшель, М. (01 октября 2014 г.). «Расширение модели линии крыши: анализ узких мест с учетом микроархитектурных ограничений». Международный симпозиум IEEE по характеристикам рабочей нагрузки (IISWC) , 2014 г. стр. 222–231. дои : 10.1109/IISWC.2014.6983061 . ISBN 978-1-4799-6454-3 . S2CID 33023605 .
- ^ Лоренцо, Огайо; Пена, ТФ; Кабалейро, JC; Пичел, Дж. К.; Ривера, ФФ (26 марта 2014 г.). «3DyRM: динамическая модель линии крыши, включая информацию о задержке памяти». Журнал суперкомпьютеров . 70 (2): 696–708. дои : 10.1007/s11227-014-1163-4 . ISSN 0920-8542 . S2CID 5318695 .
- ^ да Силва, Бруно; Брекен, Ан; Д'Холландер, Эрик Х.; Тухафи, Абдалла (1 января 2013 г.). «Моделирование производительности для FPGA: расширение модели линии крыши с помощью инструментов синтеза высокого уровня» . Международный журнал реконфигурируемых вычислений . 2013 : 1–10. дои : 10.1155/2013/428078 . hdl : 1854/LU-4226966 . ISSN 1687-7195 .
Внешние ссылки
[ редактировать ]- Модель Roofline: педагогический инструмент для автонастройки ядер в многоядерных архитектурах
- Применение модели Roofline
- Расширение модели линии крыши: анализ узких мест с учетом микроархитектурных ограничений
- Набор инструментов для модели линии крыши
- Набор инструментов для модели линии крыши: практический инструмент для архитектурного и программного анализа - публикация, связанная с этим инструментом.
- Перфплот
- Расширенная модель крыши
- Intel Advisor — автоматизация модели крыши
- Видео на YouTube о том, как использовать Intel Advisor Roofline