Flops

Арифметика с плавающей точкой

Арифметика с плавающей запятой необходима для очень больших или очень маленьких действительных чисел или вычислений, требующих большого динамического диапазона. Представление с плавающей запятой похоже на научную нотацию, за исключением того, что все выполняется по основанию два, а не десять. Схема кодирования хранит знак, показатель степени (в основе два для Cray и VAX , в основе два или десять для форматов с плавающей запятой IEEE и в базе 16 для архитектуры IBM с плавающей запятой ) и значащее выражение (число после точки счисления ). Хотя используется несколько подобных форматов, наиболее распространенным является ANSI / IEEE Std. 754–1985 . Этот стандарт определяет формат для 32-битных чисел, называемых одинарной точностью , а также для 64-битных чисел, называемых двойной точностью, и более длинных чисел, называемых расширенной точностью (используется для промежуточных результатов). Представления с плавающей запятой могут поддерживать гораздо более широкий диапазон значений, чем с фиксированной запятой, с возможностью представления очень малых и очень больших чисел.

Динамический диапазон и точность

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

Вычислительная производительность

FLOPS и — это единицы измерения производительности компьютера при численных вычислениях. Операции с плавающей точкой обычно используются в таких областях, как научные вычислительные исследования. Единица MIPS измеряет целочисленную производительность компьютера. Примеры целочисленных операций включают перемещение данных (от A к B) или проверку значений (если A = B, то C). MIPS в качестве эталона производительности подходит, когда компьютер используется для запросов к базе данных, обработки текстов, электронных таблиц или для запуска нескольких виртуальных операционных систем. Фрэнк Х. МакМахон из Ливерморской национальной лаборатории Лоуренса изобрел термины FLOPS и MFLOPS (мегафлопы), чтобы он мог сравнивать суперкомпьютеры того времени по количеству вычислений с плавающей запятой, которые они выполняли в секунду. Это было намного лучше, чем использование распространенного MIPS для сравнения компьютеров, поскольку эта статистика обычно мало влияла на арифметические возможности машины.

FLOPS в системе HPC можно рассчитать с помощью этого уравнения:

ФЛОПЫзнак равностойки×узлыстойка×Розеткиузел×ядраразъем×циклывторой×FLOPsцикл{\ displaystyle {\ text {FLOPS}} = {\ text {racks}} \ times {\ frac {\ text {nodes}} {\ text {rack}}} \ times {\ frac {\ text {sockets}} {\ text {node}}} \ times {\ frac {\ text {cores}} {\ text {socket}}} \ times {\ frac {\ text {циклы}} {\ text {second}}} \ times {\ frac {\ text {FLOPs}} {\ text {cycle}}}}.

Это можно упростить до наиболее распространенного случая: компьютер с ровно 1 процессором:

ФЛОПЫзнак равноядра×циклывторой×FLOPsцикл{\ displaystyle {\ text {FLOPS}} = {\ text {cores}} \ times {\ frac {\ text {Cycle}} {\ text {second}}} \ times {\ frac {\ text {FLOPs}} {\ text {cycle}}}}.

FLOPS может быть записан с различными показателями точности, например, в списке суперкомпьютеров TOP500 компьютеры ранжируются по 64-битным ( формат с плавающей запятой двойной точности ) операциям в секунду, сокращенно FP64 . Подобные меры доступны для 32-битных ( FP32 ) и 16-битных ] ( FP16 ) операций.

Примечания

  1. . Oak Ridge National Laboratory (8 мая 2019). Дата обращения 8 мая 2019.
  2. . The Next Platform (8 декабря 2016). Дата обращения 13 декабря 2016.
  3. ↑ .
  4.  (недоступная ссылка). Дата обращения 17 августа 2009. these are single precision GPU peak numbers
  5.  (недоступная ссылка). Дата обращения 17 августа 2009. HPL is a software package that solves a dense linear system in double precision (64 bits)
  6. Jack Dongarra.  (англ.). Argonne Training Program on Extreme-scale Computing. Argonne National Laboratory (13 August 2014). Дата обращения 13 апреля 2015.
  7. . SberCloud. Дата обращения 27 декабря 2019.
  8. . РИА Новости (20191108T1123+0300Z). Дата обращения 8 ноября 2019.
  9. . РИА Новости (23 февраля 2012). Дата обращения 24 февраля 2012.
  10. Производительность вычислений одинарной точности у большинства процессоров ровно в 2 раза выше указанных значений.
  11. Ryan Crierie.  (англ.). Alternate Wars (13 March 2014). Дата обращения 23 января 2015.
  12. Jack J. Dongarra.  (англ.) (15 June 2014). Дата обращения 23 января 2015.
  13. . МЦСТ.
  14. . АО «МЦСТ».
  15. По шесть 64 разрядных FMAC блоков в каждом ядре: 8х1.3х6х2 = 124.8 ГФлоп/с пиковой производительности при вычислениях двойной точности
  16. По два 128 разрядных FMAC блока в каждом модуле, объединяющем пару ядер, работающих на частоте 4 ГГц: 4х4х2х2х128/64 = 128 ГФлоп/с пиковой производительности при вычислениях двойной точности
  17. Alex Voica.  (англ.) (недоступная ссылка) (3 September 2015). Дата обращения 4 февраля 2017.
  18. По два 128 разрядных FMAC блока в каждом ядре: 8х3.4х2х2х128/64 = 217.6 ГФлоп/с пиковой производительности при вычислениях двойной точности
  19. . АО «МЦСТ».
  20. .
  21. По шесть 128 разрядных FMAC блоков в каждом ядре: 8х1.5х6х2х128/64 = 288 ГФлопс пиковой производительности при вычислениях двойной точности
  22. По два 256 разрядных FMAC блока в каждом ядре: 8х3.6х2х2х256/64 = 460 ГФлоп/с
  23. По два 256 разрядных FMAC блока в каждом ядре: 8х3.6х2х2х256/64 = 460 ГФлоп/с
  24. По два 256 разрядных FMAC блока в каждом ядре: 16х3.5х2х2х256/64 = 896 ГФлоп/с
  25. Указанное количество инструкций за такт способны исполнять только старшие представители этих архитектур, продающиеся под маркетинговыми наименованиями Xeon Platinum и Xeon Gold начиная с серии 6ххх, которые имеют по два 512 разрядных FMAC блока в каждом ядре для выполнения AVX-512 инструкций. У всех младших моделей: Xeon Bronze, Xeon Silver и Xeon Gold 5ххх один из FMAC блоков отключен и поэтому максимальный темп исполнения инструкций с плавающей точкой снижен в 2 раза.
  26. Блок обработки операций с плавающей запятой (FPU) является общим на модуль — пару ядер процессора. При одновременном исполнении плавающих операций на обоих ядрах он разделяется между ними.
  27. Данная микроархитектура относится к классу VLIW и имеет 6 параллельных каналов исполнения инструкций, 4 из которых оснащены 64 разрядными блоками вычислений с плавающей точкой типа FMAC.
  28. В 4 м поколении архитектуры 64 разрядные FMAC блоки имеются уже на всех 6 каналах исполнения инструкций.
  29. В 5 м поколении архитектуры разрядность всех FMAC блоков была увеличена с 64 до 128.
  30. Сергей Уваров. . IXBT.com (23 сентября 2013).
  31. . IBM developerWorks (29 ноября 2005). Дата обращения 6 апреля 2006.
  32. . University of Tennessee (31 июля 2005). Дата обращения 11 февраля 2011.
  33. Anand Lal Shimpi.  (англ.). Anandtech (англ.) (22 May 2013).
  34. . Playstation. Дата обращения 14 декабря 2018.
  35. . РИА Новости (20200318T2333+0300). Дата обращения 20 марта 2020.
  36.  (англ.). Xbox Wire (24 February 2020). Дата обращения 24 февраля 2020.

FLOPS за цикл для различных процессоров

Микроархитектура ЭТО FP64 FP32 FP16
Intel Atom (Bonnell, Saltwell, Silvermont и Goldmont) SSE3 (64-бит) 2 4
Intel Core (Merom, Penryn ) Intel Nehalem ( Nehalem , Westmere ) SSE4 (128 бит) 4 8
Intel Sandy Bridge ( Sandy Bridge , Ivy Bridge ) AVX (256 бит) 8 16
Intel Haswell ( Haswell , Devil’s Canyon , Broadwell ) Intel Skylake ( Skylake , Kaby Lake , Coffee Lake , Whisky lake , Amber lake ) AVX2 и FMA (256 бит) 16 32
Intel Xeon Phi (Уголок рыцарей) SSE и FMA (256 бит) 16 32
Intel Skylake-X Intel Xeon Phi (Knights Landing, Knights Mill) AVX-512 и FMA (512 бит) 32 64
AMD Bobcat AMD64 (64-разрядная) 2 4
AMD Ягуар AMD Пума AVX (128 бит) 4 8
AMD K10 SSE4 / 4a (128 бит) 4 8
Бульдозер AMD ( Пиледривер , Каток , Экскаватор ) AVX (128-бит) Бульдозер-Steamroller

AVX2 (128 бит) Экскаватор

FMA3 (Бульдозер)

FMA3 / 4 (Пиледривер-Экскаватор)

4 8
AMD Zen (серия Ryzen 1000, серия Threadripper 1000, Epyc Naples ) AMD Zen + (серия Ryzen 2000, серия Threadripper 2000) AVX2 и FMA (128-битное, 256-битное декодирование) 8 16
AMD Zen 2 (серия Ryzen 3000, серия Threadripper 3000, Epyc Rome ) AVX2 и FMA (256 бит) 16 32
ARM Cortex-A7, A9, A15 ARMv7 1 8
ARM Cortex-A32, A35, A53, A55, A72 , A73 , A75 ARMv8 2 8
ARM Cortex- A57 ARMv8 4 8
ARM Cortex- A76 , A77 ARMv8 8 16
Qualcomm Krait ARMv8 1 8
Qualcomm Kryo (1xx — 3xx) ARMv8 2 8
Qualcomm Kryo (4xx — 5xx) ARMv8 8 16
Samsung Exynos M1 и M2 ARMv8 2 8
Samsung Exynos M3 и M4 ARMv8 3 12
IBM PowerPC A2 (Blue Gene / Q) ? 8 8 (как FP64)
Hitachi SH-4 SH-4 1 7
Nvidia Fermi (только GeForce GTX 465–480, 560 Ti, 570-590) PTX 1/4 (заблокировано драйвером, 1 аппаратно) 2
Nvidia Fermi (только Quadro 600-2000) PTX 1/8 2
Nvidia Fermi (только Quadro 4000–7000, Tesla) PTX 1 2
Nvidia Kepler (GeForce (кроме Titan и Titan Black), Quadro (кроме K6000), Tesla K10) PTX 1/12 (для GK110 : заблокировано драйвером, 2/3 аппаратно) 2
Nvidia Kepler (GeForce GTX Titan и Titan Black, Quadro K6000, Tesla (кроме K10)) PTX 2/3 2
Nvidia Maxwell Nvidia Pascal (все, кроме Quadro GP100 и Tesla P100) PTX 1/16 2 1/32
Nvidia Pascal (только Quadro GP100 и Tesla P100) PTX 1 2 4
Nvidia Volta PTX 1 2 (FP32) + 2 (INT32) 16
Nvidia Turing (только GeForce 16XX ) PTX 1/16 2 (FP32) + 2 (INT32) 4
Nvidia Turing (все, кроме GeForce 16XX ) PTX 1/16 2 (FP32) + 2 (INT32) 16
Nvidia Ampere (только A100) PTX 2 2 (FP32) + 2 (INT32) 32
Nvidia Ampere (только GeForce) PTX 1/32 2 (FP32) + 0 (INT32) или 1 (FP32) + 1 (INT32) 16
AMD GCN (только Radeon Pro WX 2100-7100) GCN 1/8 2 2
AMD GCN (все, кроме Radeon VII, Instinct MI50 и MI60, Radeon Pro WX 2100-7100) GCN 1/8 2 4
AMD GCN Vega 20 (только Radeon VII) GCN 1/2 (заблокировано драйвером, 1 аппаратно) 2 4
AMD GCN Vega 20 (только Radeon Instinct MI50 / MI60 и Radeon Pro VII) GCN 1 2 4
AMD RDNA RDNA 1/8 2 4
Graphcore Colossus GC2 (оценочные значения) ? 18 72
Graphcore Colossus GC200 Mk2 (оценочные значения) ? 18 144