Пиковая производительность процессора

Несмотря на то, что VTune имеет множество встроенных профилей, специального профиля для измерения FLOPS у него пока нет. Но никто не мешает нам создать наш собственный пользовательский профиль за 30 секунд. Не утруждая вас основами работы с интерфейсом VTune (их можно изучить в прилагающимся к нему Getting Started Tutorial), сразу опишу процесс создания профиля и сбора данных.

  1. Создаем новый проект и указываем в качестве target application наше приложение matrix .
  2. Выбираем профиль Lightweight Hotspots (который использует технологию сэмплирования счетчиков процессора Hadware Event-based Sampling) и копируем его для создания пользовательского профиля. Обзываем его My FLOPS Analysis.
  3. Редактируем профиль, добавляем туда новые процессорные счетчики событий процессора Sandy Bridge (Events). На них остановимся чуть подробнее. В их названии зашифрованы исполнительные устройства (x87, SSE, AVX) и тип данных, над которыми выполнялась операция. Каждый такт процессора счетчики складывают количество вычислительных операций, назначенных на исполнение. На всякий случай мы добавили счетчики на все возможные операции с FP:
  • FP_COMP_OPS_EXE. SSE_PACKED_DOUBLE – векторы (PACKED) данных двойной точности (DOUBLE)
  • FP_COMP_OPS_EXE. SSE_PACKED_SINGLE – векторы данных одинарной точности
  • FP_COMP_OPS_EXE. SSE_SCALAR_DOUBLE – скалярые DP
  • FP_COMP_OPS_EXE. SSE_ SCALAR _SINGLE – скалярные SP
  • SIMD_FP_256.PACKED_DOUBLE – векторы AVX данных DP
  • SIMD_FP_256.PACKED_SINGLE – векторы AVX данных SP
  • FP_COMP_OPS_EXE.x87 – скалярые данные x87
Нам остается только запустить анализ и подождать результатов. В полученных результатах переключаемся в Hardware Events viewpoint и копируем количетво events, собранных для функции multiply3 : 34,648,000,000.

Далее мы просто подсчитываем значения FLOPS по формулам. Данные у нас были собраны для всех процессоров, поэтому умножение на их количество здесь не требуется. Операции данными двойной точности выполняются одновременно над четырмя 64-битными DP операндами в 256-битном регистре, поэтому умножаем на коэффициент 4. Данные с одинарной точностью, соответственно, умножаем на 8. В последней формуле не умножаем количество инструкций на коэффициент, так как операции сопроцессора x87 выполняются только со скалярными величинами. Если в программе выполняется несколько разных типов FP операций, то их количество, умноженное на коэффициенты, суммируется для получения результирующего FLOPS.

FLOPS = 4 * SIMD_FP_256.PACKED_DOUBLE / Elapsed Time
FLOPS = 8 * SIMD_FP_256.PACKED_SINGLE / Elapsed Time
FLOPS = (FP_COMP_OPS_EXE.x87) / Elapsed Time

В нашей программе выполнялись только AVX инструкции, поэтому в результатах есть значение только одного счетчика SIMD_FP_256.PACKED_DOUBLE.
Удостоверимся, что данные события собраны для нашего цикла в функции multiply3 (переключившись в Source View):

FLOPS = 4 *34.6Gops/7s = 19.7 GFlops
Значение вполне соответствует оценочному, подсчитанному в предыдущем пункте. Поэтому с достаточной долей точности можно говорить о том, что результаты оценочного метода и измерительного совпадают. Однако, существуют случаи, когда они могут не совпадать. При определенном интересе читателей, я могу заняться их исследованием и рассказать, как использовать более сложные и точные методы. А взамен очень хочется услышать о ваших случаях, когда вам требуется измерение FLOPS в программах.

Заключение
FLOPS – единица измерения производительности вычислительных систем, которая характеризует максимальную вычислительную мощность самой системы для операций с плавающей точкой. FLOPS может быть заявлена как теоретическая, для еще не существующих систем, так и измерена с помощью бенчмарков. Разработчики высокопроизводительных программ, в частности, решателей систем линейных дифференциальных уравнений, оценивают производительность реализации своих алгоритмов в том числе и по значению FLOPS программы, вычисленному с помощью теоретически/эмпирически известного количества FP операций, необходимых для выполнения алгоритма, и измеренному времени выполнения теста. Для случаев, когда сложность алгоритма не позволяет оценить количество FP операций алгоритма, их можно измерить с помощью счетчиков производительности, встроенных в микропроцессоры Intel.

Значение, происхождение слова терафлопс. Формула, вычисление производительности компьютера в терафлопсах. Teraflops = tera – греческое слово обозначающее математическую величину 10 в 12 степени (1 000 000 x 1 000 000) + английский акроним flops – fl oating point o perations p er s econd (с англ. – количество операций над числом с плавающей запятой в секунду).

Терафлопс – терафлоп (TFLOPS – Teraflops) – это величина, значение дающее оценку производительности компьютера, показатель вычислительной мощи компьютера в расчетах с плавающей запятой за секунду. Один Teraflops – Терафлопс равен одному триллиону операций за одну секунду или тысяче миллиардов операций. 1 Терафлопс = 1 000 000 000 000 операций в секунду.

Формула расчета производительности Teraflops.
Расчет пиковой производительности компьютера выполняется по формуле:
1 терафлопс = F x N x I x 10 6 . Где:

F – тактовая частота процессора в MHz,
N – число процессоров (ядер),
I – количество обрабатываемых инструкций за такт,
10 6 = 1 000 000.

Реальная производительность компьютера будет, находится в районе 70-80% от пиковой Терафлопс.

На сегодняшний день самым мощным суперкомпьютером является Cray XT (Jaguar). Его производительность составляет 1 790 терафлопс.

MILKY WAY ONE – Супер Компьютер в Китае. Терафлопсы наступают.
Национальный Университет (с суровыми дядьками) Оборонных Технологий объявил о запуске программы по созданию суперкомпьютера с расчетной мощностью на уровне 1 петафлопса (терафлопс 10 12 flops, петафлопс = 10 15 flops). Китай станет 2 государством, на шарике Земля, с такой «игрушкой». В основе суперкомпьютера – 6144 4-х ядерных CPU Intel — Xeon Quad-Core E5450 (50%) и Xeon Quad-Core E5540 (50%). Добавим сюда 5120 GPU AMD/ ATI в лице 2560 видеокарт ATI Radeon HD 4870 Х2 575МГц.

Суммарная мощность этой гремучей смеси 1,206 петафлопса или 1206 терафлопс (teraflops). Вес супер железяки 155 тонн, занимает помещение площадью 1000 кв. метров. Обойдется Китаю в 88 млн. долларов. Невольно вспомнился Терминатор.

Первой видеокартой (графический процессор), покорившей рубеж производительности в 1 Терафлопс, является ATI Radeon HD 4850.

Самой производительной видеокартой современности (на начало 2010 года) является ATI Radeon HD 5870, с быстродействием 2,72 Teraflops (Терафлопс).

Власть меняется. К лету 2010 компания Asus выпускает сдвоенную видеокарту Asus Ares Radeon HD 5870 x2. Тандем двух полноценных Radeon HD5870 развивают мощность 5,44 терафлопс. Видео карта Asus ARES/2DIS/4GD5 — .

Teraflops — максимальное, пиковое значение производительности процессора — терафлопс . Вычисляем производительность в терафлопсах.

С наилучшими $ пожеланиями
Denker.

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

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

С самых ранних пор для того чтобы измерять производительность того или иного компьютера, решили использовать количество выполняемых операций с плавающей точкой за 1 секунду времени. На практике это оказалось действительно весьма показательным результатом. Единицу измерения 1 операции назвали Flops (Флопс). Однако компьютеры являются весьма производительными устройствами, поэтому перед флопс используется приставка кило/мега/Гига/Пета/Экса и тд. Каждая перечисленная операция больше предыдущей в 1000 раз. Для конечной оценки выдаются результаты Флопс/с, т.е. флопс в секунду. Если вы хотите почитать про Flops больше, то вам сюда .

Замер производительности персонального ПК

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

Из возможных интерфейсов есть анализ производительности через командную строку, через компиляторы Фортран и С++ и тд. Но мы пойдём более лёгким путём и будем использовать уже скомпилированный exe файл программв Linpack, которая является самой популярной в замерах производительности компьютеров на Windows.

Ниже мы представляем вашему вниманию 2 версии программы Linpack, которая поможет вам определить сколько ваш компьютер делает операций с плавающей точкой в секунду времени.

Как проверить?

Сначала распакуйте архив и запустите программу (файл LinX.exe). Интерфейс программы очень прост и вы легко с ним разберётесь. Для начала зайдите в настройки и дайте пргграмме самый высокий приоритет. После этого постарайтесь выключить ресурсоёмие программы. В интерфейсе LinX вы можете выбрать сколько раз или минут проводить тест и каким объёмом данных орудовать во время его проведения. Когда все настройки выставлены - жмите Тест . После завершения вы скорее всего увидите результат в GFlops/s (Гигафлопсов в секунду).

Для того чтобы представлять сколько это: 1 Флопс=1 Операция с плавающей точкой; 1ГФлопс= 1 000 000 000 Операций с плавающей точкой.