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