FLOPS

FLOPS (также flops, flop/s, флопс или флоп/с; акроним от англ. FLoating-point OPerations per Second, произносится как флопс) — внесистемная единица, используемая для измерения производительности компьютеров, показывающая, сколько операций с плавающей запятой в секунду выполняет данная вычислительная система. Поскольку современные компьютеры обладают высоким уровнем производительности, более распространены производные величины от флопс, образуемые путём использования приставок СИ.

Что важно знать
Производительность суперкомпьютеров
Название год флопсы
флопс 1941 100
килофлопс 1949 103
мегафлопс 1964 106
гигафлопс 1987 109
терафлопс 1997 1012
петафлопс 2008 1015
эксафлопс 2022 1018
зеттафлопс не ранее 2030[1][2] 1021
иоттафлопс н/д 1024
роннафлопс н/д 1027
кветтафлопс н/д 1030

FLOP или FLOPS

Существуют разногласия насчёт того, допустимо ли использовать слово FLOP от англ. FLoating point OPeration в единственном числе (и такие варианты как flop или флоп). Некоторые считают, что FLOP (флоп) и FLOPS (флопс или флоп/с) — синонимы, другие же полагают, что FLOP — это просто количество операций с плавающей запятой (например, требуемое для исполнения данной программы), а FLOPS — мера производительности, способность выполнять определённое количество операций с плавающей запятой за секунду.

Флопс как мера производительности

Как и большинство других показателей производительности, данная величина определяется путём запуска на испытуемом компьютере тестовой программы, которая решает задачу с известным количеством операций и подсчитывает время, за которое она была решена. Наиболее популярным тестом производительности на сегодняшний день являются тесты производительности LINPACK, в частности HPL, используемый при составлении рейтинга суперкомпьютеров TOP500[источник не указан 984 дня].

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

Границы применимости

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

Всё это, в конечном итоге, приводит к тому, что результаты, полученные на одном и том же компьютере при помощи разных программ, могут существенным образом отличаться; более того, с каждым новым испытанием разные результаты можно получить при использовании одного алгоритма. Отчасти эта проблема решается соглашением об использовании единообразных тестовых программ (той же LINPACK) с усреднением результатов, но со временем возможности компьютеров «перерастают» рамки принятого теста и он начинает давать искусственно заниженные результаты, поскольку не задействует новейшие возможности вычислительных устройств. А к некоторым системам общепринятые тесты вообще не могут быть применены, в результате чего вопрос об их производительности остаётся открытым.

Так, 24 июня 2006 года общественности был представлен суперкомпьютер MDGrape-3, разработанный в японском исследовательском институте RIKEN (Йокогама), с рекордной теоретической производительностью в 1 петафлопс. Однако данный компьютер не является компьютером общего назначения и приспособлен для решения узкого спектра конкретных задач, в то время как стандартный тест LINPACK на нём выполнить невозможно в силу особенностей его архитектуры.

Также высокую производительность на специфичных задачах показывают графические процессоры современных видеокарт и игровые приставки. К примеру, заявленная производительность видеопроцессора игровой приставки PlayStation 3 составляет 192 гигафлопса[3], а видеоускорителя приставки Xbox 360 и вовсе 240 гигафлопсов[3], что сравнимо с суперкомпьютерами двадцатилетней давности. Столь высокие показатели объясняются тем, что указана производительность над числами 32-разрядного формата[4][5], тогда как для суперкомпьютеров обычно указывают производительность на 64-разрядных данных[6][7]. Кроме того, данные приставки и видеопроцессоры рассчитаны на операции с трёхмерной графикой, хорошо поддающиеся распараллеливанию, однако эти процессоры не в состоянии выполнять многие задачи общего назначения, и их производительность сложно оценить классическим тестом LINPACK[8] и тяжело сравнить с другими системами.

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

Для подсчёта максимального количества флопс для процессора нужно учитывать, что современные процессоры в каждом своём ядре содержат несколько исполнительных блоков каждого типа (в том числе и для операций с плавающей запятой), работающих параллельно, и могут выполнять более одной инструкции за такт. Данная особенность архитектуры называется суперскалярность и впервые появилась ещё в ЭВМ CDC 6600 в 1964 году. Массовое производство компьютеров с суперскалярной архитектурой началось с выпуском процессора Pentium в 1993 году. Процессор конца 2000-х годов, Intel Core 2, также является суперскалярным и содержит 2 устройства вычислений над 64-разрядными числами с плавающей запятой, которые могут завершать по 2 связанные операции (умножение и последующее сложение, MAC) в каждый такт, теоретически позволяющих достичь пиковой производительности до 4 операций за 1 такт в каждом ядре[9][10][11]. Таким образом, для процессора, имеющего в своём составе 4 ядра (Core 2 Quad) и работающего на частоте 3,5 ГГц, теоретический предел производительности составляет 4х4х3,5=56 гигафлопс, а для процессора, имеющего 2 ядра (Core 2 Duo) и работающего на частоте 3 ГГц — 2х4х3=24 гигафлопс, что хорошо согласуется с практическими результатами, полученными на тесте LINPACK.

AMD Phenom 9500 sAM2+ с тактовой частотой 2,2 ГГц: 2200 МГц × 4 ядра × 4⋅10−3 = 35,2 Гигафлопса
Для четырёхъядерного процессора Core 2 Quad Q6600: 2400 МГц × 4 ядра × 4⋅10−3 = 38,4 Гигафлопса.

Более новые процессоры могут исполнять до 8 (например, Sandy и Ivy Bridge, 2011—2012 гг, AVX) или до 16 (Haswell и Broadwell, 2013—2014 гг, AVX2 и FMA3) операций над 64-битными числами с плавающей запятой в такт (на каждом ядре)[11]. В последующих процессорах ожидается исполнение 32 операций в такт (Intel Xeon Skylake, Xeon *v5, 2015 г, AVX512)[12]

Sandy и Ivy Bridge c AVX: 8 Флопс/такт двойной точности[13], 16 Флопс/такт одинарной точности
Intel Core i7 2700:/Intel Core i7 3770: 8*4*3900 МГц = 124,8 Гфлопс пиковая двойной точности, 16*4*3900 = 249,6 Гфлопс пиковая одинарной точности.

Intel Haswell/Broadwell с AVX2 и FMA3: 16 Флопс/такт двойной точности[13]; 32 одинарной точности Флопса/такт
Intel Core i7 4770: 16*4*3900 МГц = 249,6 Гигафлопса пиковая двойной точности, 32*4*3900 = 499,2 Гфлопс пиковая одинарной точности.

Причины широкого распространения

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

В различных алгоритмах, кроме возможности выполнять большое количество математических действий в ядре процессора, может потребоваться пересылка больших объёмов данных через подсистему памяти, и их производительность будет сильно ограничена из-за этого, например, как в уровнях 1 и 2 библиотек BLAS[11]. Однако, алгоритмы, используемые в тестах типа LINPACK (уровень 3 BLAS), имеют высокий коэффициент переиспользования данных, пересылка данных между процессором и памятью в них занимает менее 1/10 общего времени, и они обычно достигают типичной производительности до 80-95 % от теоретического максимума.

Обзор производительности реальных систем

Из-за высокого разброса результатов теста LINPACK приведены примерные величины, полученные путём усреднения показателей на основе информации из разных источников. Производительность игровых приставок и распределённых систем (имеющих узкую специализацию и не поддерживающих тест LINPACK) приведена в справочных целях в соответствии с числами, заявленными их разработчиками. Более точные результаты с указанием параметров конкретных систем можно получить, например, на сайте The Performance Database Server.

Суперкомпьютеры

Уно

Кило

Мега

Гига

Тера

Пета

Экса

Процессоры персональных компьютеров

Пиковая производительность двойной точности[27]

  • Zilog Z80 + математический сопроцессор AMD Am9512, 3 МГц (1977—1980) ~ 1-2 килофлопса[28]
  • Intel 80486DX/DX2 (1990—1992) — до 30-50 Мфлоп/с[29]
  • Intel Pentium 75-200 МГц (1996) — до 75-200 Мфлоп/с[29][30]
  • Intel Pentium III 450—1133 МГц (1999—2000) — до 450—1113 Мфлоп/с[29][30]
  • Intel Pentium III-S (2001) 1 — 1,4 ГГц — до 1 — 1,4 Гфлоп/с[30]
  • МЦСТ Эльбрус 2000 300 МГц (2008) — 2,4 Гфлоп/с
  • Intel Atom N270, D150 1,6 ГГц (2008—2009) — до 3,2 Гфлоп/с[29]
  • Intel Pentium 4 2,5-2,8 ГГц (2004) — до 5 — 5,6 Гфлоп/с[29]
  • МЦСТ Эльбрус-2С+ 500 МГц, 2 ядра (2011) — 8 Гфлоп/с
  • AMD Athlon 64 X2 4200+ 2,2 ГГц, 2 ядра (2006) — 8,8 Гфлоп/с
  • Intel Core 2 Duo E6600 2,4 ГГц, 2 ядра (2006) — 19,2 Гфлоп/с
  • МЦСТ Эльбрус-4С (1891ВМ8Я, Эльбрус v.3) 800 МГц, 4 ядра (2014) — 25 Гфлоп/с[31]
  • Intel Core i3-2350M 2,3 ГГц, 2 ядра (2011) — 36,8 Гфлоп/с
  • Intel Core 2 Quad Q8300 2,5 ГГц, 4 ядра (2008) — 40 Гфлоп/с
  • AMD Athlon II X4 640 3,0 ГГц, 4 ядра (2010) — 48 Гфлоп/с
  • Intel Core i7-975 XE (Nehalem) 3,33 ГГц, 4 ядра (2009) — 53,3 Гфлоп/с
  • AMD Phenom II X4 965 BE 3,4 ГГц, 4 ядра (2009) — 54,4 Гфлоп/с
  • AMD Phenom II X6 1100T 3,3 ГГц , 6 ядер (2010) — 79,2 Гфлоп/с
  • Intel Core i5-2500K (Sandy Bridge), 3,3 ГГц, 4 ядра (2011) — 105,6 Гфлоп/с
  • МЦСТ Эльбрус-8С (Эльбрус v.4) 1,3 ГГц, 8 ядер (2016) — 125 Гфлоп/с[32][33]
  • AMD FX-8350 4 ГГц, 8 ядер (2012) — 128 Гфлоп/с[34]
  • Intel Core i7-4930K (Ivy Bridge), 3,4 ГГц, 6 ядер (2013) — 163 ГФлоп/с
  • Loongson-3B1500 (MIPS64), 1,5 ГГц, 8 ядер (2016) — до 192 ГФлоп/с[35]
  • AMD Ryzen 7 1700X (Zen), 3,4 ГГц, 8 ядер (2017)[36] — 217 ГФлопс[37]
  • МЦСТ Эльбрус-8СВ (Эльбрус v.5) 1,5 ГГц, 8 ядер (2020 — план)[38] — 288 Гфлоп/с[39][40]
  • IBM Power8 4,4 ГГц, 12 ядер (2013), 290 Гфлоп/с
  • Intel Core i7-5960X (Extreme Edition Haswell-E), 3,0 ГГц, 8 ядер (2014) — 384 Гфлоп/с (до 350 Гфлоп/с достижимо на практике[41])
  • Intel Core i9-9900k (Coffee Lake), 3,6 ГГц, 8 ядер (2018)[42] — 460 Гфлоп/с[43]
  • AMD Ryzen 7 3700X (Zen 2), 3,6 ГГц, 8 ядер (2019)[44] — 460 ГФлопс[43]
  • МЦСТ Эльбрус-12С 2 ГГц, 12 ядер (2020 — план) — 576 Гфлоп/с
  • МЦСТ Эльбрус-16С 2 ГГЦ, 16 ядер (2021 — план) — 768 Гфлоп/с[45].
  • AMD Ryzen 9 3950X (Zen 2), 3,5 ГГц, 16 ядер (2019)[46] — 896 ГФлоп/с[47]
  • AMD EPYC 7H12 (Zen 2), 3,3 ГГц, 64 ядра (2019)[48] — 4,2 терафлопса[49]

Количество операций FLOP за такт для разных архитектур

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

(single) — одинарной точности; (double) — двойной точности[50]

  • Intel P5 & P6 (no ISEs) + Pentium Pro & Pentium II = 1 (single); 1 (double)
  • P6 (только Pentium III) = 4 (single); 1 (double)
  • Bonnell (Atom) = 4 (Single); 1 (Double)
  • NetBurst = 4 (single); 2 (double)
  • Pentium M & Enhanced Pentium M = 4 (single); 2 (double)
  • Core, Penryn, Nehalem & Westmere = 8 (single); 4 (double)
  • Sandy Bridge & Ivy Bridge = 16 (single); 8 (double)
  • Haswell, Broadwell, Skylake, Kaby Lake & Coffee Lake = 32 (single); 16 (double)
  • Skylake-X, Skylake-SP, Cascade Lake-X (Xeon Gold & Platinum) = 64 (single); 32 (double)[51][52]
  • Bonnell, Saltwell, Silvermont & Airmont = 6 (single); 1.5 (double)
  • MIC («Knights Corner» Xeon Phi) = 32 (single); 16 (double)
  • MIC («Knights Landing» Xeon Phi) = 64 (single); 32 (double)[51]
  • AMD K5 & K6 = 0.5 (single); 0.5 (double)
  • K6-2 & K6-III = 4 (single); 0.5 (double)
  • K7 = 4 (single); ? (double)
  • K8 = 4 (single); 2 (double)
  • K10/Stars = 8 (single); 4 (double)
  • Husky = 8 (single); 4 (double)
  • Bulldozer, Piledriver, Steamroller & Excavator (Суммарно на пару ядер — модуль[53]) = 16 (single); 8 (double)
  • Bobcat = 4 (single); 1.5 (double)
  • Jaguar, Puma and Puma+ = 8 (single); 3 (double)
  • Zen, Zen+ = 16 (single); 8 (double)
  • Zen 2 = 32 (single); 16 (double)
  • МЦСТ Эльбрус 2000 (E2K) = 16 (single); 8 (double)[54][55]
  • Эльбрус версии 3 = 16 (single); 8 (double)
  • Эльбрус версии 4 = 24 (single); 12 (double)[56][57]
  • Эльбрус версии 5 = 48 (single); 24 (double)[58][59]

Процессоры карманных компьютеров

  • КПК на основе процессора Samsung S3C2440 400 МГц (архитектура ARM9) — 1,3 мегафлопса
  • Intel XScale PXA270 520 МГц — 1,6 мегафлопса
  • Intel XScale PXA270 624 МГц — 2 мегафлопса
  • Samsung Exynos 4210 2х1600 МГц — 84 мегафлопса
  • Apple A6 — 645 мегафлопсов (по оценке программы LINPACK)
  • Apple A7 — 833 мегафлопса (по оценке программы LINPACK)[60]
  • Apple A8 — 1,4 гигафлопса[61]
  • Apple A10 — 365 гигафлопс(fp32), 91 гигафлопс (fp64)[62]
  • Apple A14 — 824 гигафлопс(fp32), 206 гигафлопс (fp64)[62]

Распределённые системы

  • Bitcoin — имеет значительное количество специализированных вычислительных ресурсов, но решает исключительно целочисленные задачи (вычисление хеш-суммы SHA256). Практически все вычислители реализованы в виде специальных заказных микросхем (ASIC), которые технически не способны производить вычисления над числами с плавающей запятой. Следовательно, оценивать сеть Bitcoin с помощью флопсов в настоящее время некорректно.[63][64][65] Ранее, до 2011 года в сети использовались только ЦПУ и ГПУ, которые могут обрабатывать как целочисленные, так и плавающие данные, и оценка во флопсах получалась из метрики hash/s с помощью эмпирического коэффициента в 12,7 тысячи.[66][67] Например, на апрель 2011 мощность сети оценивалась таким методом примерно в 8 петафлопсов.[68]
  • Folding@home — более 2,6 эксафлопса на 23 апреля 2020 года, что делает его самым мощным и крупнейшим проектом распределённых вычислений в мире.
  • BOINC — более 41,5 петафлопса на март 2020 года[69]
  • SETI@home — 0,66 петафлопса (на 2013 год)[70]
  • Einstein@Home — более 5,2 петафлопсов на март 2020 года[71]
  • Rosetta@home — более 1,4 петафлопсов на март 2020 года.

Игровые приставки

Указаны операции с плавающей запятой над 32-разрядными данными

Графические процессоры

Теоретическая производительность (FMA; гигафлопсы):

Графический процессор Год выпуска Техпроцесс Гигафлопсов, для 32-разрядных вычислений Гигафлопсов, для 64-разрядных вычислений Источник
Geforce RTX 2080 Ti (TU102) 2018 12 нм 13450 420,2 [83]
GeForce GTX 1080 (GP104) 2016 16 нм 8873 (Boost) 277 (Boost)
GeForce GTX 780 Ti (GK110-425-B1) 2013 28 нм 5046 210
GeForce GTX 680 (GK104) 2012 28 нм 3090,4 128,8
Radeon HD 7970 (Tahiti) 2012 28 нм 3789 947-1024 [84]
Radeon HD 6990 (2xCayman) 2011 40 нм 2x2550 = 5100 2x637 = 1274 [84]
Radeon HD 5970 (2xRV870) 2009 40 нм 2x2320 = 4640 2x464 = 928 [84]
Radeon R9 Fury X (Fuji) 2015 28 нм 8602 538 [84]

Человек и калькулятор

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

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

См. также

Примечания

Ссылки