Roofline: простая модель производительности

Этот раздел основан на статье Уильямса и Паттерсона (Williams, Patterson, 2008). В недавнем прошлом обычный здравый смысл в компьютерной архитектуре привел к сходным конструкциям микропроцессоров. Почти каждый настольный и серверный компьютер использует устройства кэш-памяти, конвейеризацию, выдачу суперскалярных инструкций, прогнозирование условных переходов и выполнение инструкций с изменением последовательности. Наборы инструкций варьируются, но все микропроцессоры принадлежат к одной и той же школе конструирования.

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

Учитывая растущее разнообразие, было бы весьма полезно иметь простую модель, предлагающую способ проникновения в суть производительности различных конструкций. Она не должна быть идеальной, достаточно, чтобы с ее помощью можно было постичь суть конструкции.

Аналогией может послужить модель трех «C», рассмотренная ранее. Эта модель неидеальна, поскольку в ней игнорируются потенциально важные факторы, такие как размер блока, политика распределения блоков и политика замены блоков. Кроме того, у нее есть свои особенности. Например, промах при обращении к кэш-памяти в одной конструкции может быть отнесен на счет ее объема, а в другой – на счет конфликта при кэш-памяти того же объема. Тем не менее, модель трех «С» была популярной в течение 20 лет, поскольку она предлагала проникновение в суть поведения программ, помогая как разработчикам архитектур, так и программистам, повышая их творческий потенциал, основанный на понимании сути происходящего благодаря этой модели.

Чтобы найти нужную нам модель, давайте начнем с 13 шаблонов конструирования, определенных в Университете Беркли. Идея шаблонов конструирования состоит в том, что производительность заданных приложений на самом деле является взвешенной суммой нескольких базовых компонентов, реализующих эти шаблоны конструирования. Здесь будет дана оценка отдельным базовым компонентам, но следует иметь в виду, что реальные приложения являются комбинацией множества базовых компонентов.

Хотя есть версии с различными типами данных, в ряде реализаций популярны числа с плавающей точкой. Следовательно, пиковая производительность при работе с числами с плавающей точкой выражается пределом скорости выполнения таких базовых компонентов на отдельно взятом компьютере. Для многоядерных кристаллов пиковая производительность при работе с числами с плавающей точкой является совокупностью пиковых производительностей всех ядер. Если в системе имеется несколько микропроцессоров, пиковая производительность, приходящаяся на один кристалл, должна быть умножена на общее количество кристаллов.

Требования к системе памяти могут быть оценены путем деления этой пиковой производительности при работе с числами с плавающей точкой на среднее количество операций с плавающей точкой.

Соотношение количества операций с плавающей точкой на байт обращений к памяти называется арифметической интенсивностью. Этот показатель может быть вычислен путем деления общего количества операций с плавающей точкой, имеющегося в программе, на общее количество байтов данных, переданных оперативной памяти в процессе выполнения программы. Арифметическая интенсивность, определенная как количество операций с плавающей точкой в выполняемой программе, деленное на количество байтов оперативной памяти, к которым было обращение (Williams, Patterson, 2006). Некоторые базовые компоненты имеют арифметическую интенсивность, которая масштабируется параллельно объему задачи, например Плотная матрица, но существует множество базовых компонентов, где арифметическая интенсивность не зависит от объема задачи. Для базовых компонентов из этой последней категории нестрогое масштабирование может привести к различным результатам, из-за того, что к системе памяти предъявляется меньше требований.





Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: