Увы, не существует стандарта, определяющего, что такое операция с плавающей запятой.
Это связано с тем, что разные архитектуры могут иметь встроенную поддержку для разных наборов операций.
Итак. например, архитектура A1 может поддерживать все четыре основные операции, A2 — только сложение и A3 все основные операции плюс возведение в степень.
В целом термин операции с плавающей запятой сильно зависит от контекста и привязан к конкретной машине.
Однако вы можете провести хороший машинно-независимый анализ, посчитав каждый вид операции отдельно.
Это требует некоторого опыта и шаманства, например, сложение и вычитание учитываются вместе, потому что они в основном являются одной и той же операцией для аппаратного обеспечения.
Умножения и деления считаются отдельно, как и более сложные операции (возведение в степень, тригонометрические функции и т.д.).
В конце у вас будет счет для всех различных операций.
Например, умножение матрицы n × m на m × k один включает n·k·m умножений и n·k·(m-1) дополнений. поэтому результат равен n·k·m MUL + n·k· (m-1) ДОБАВИТЬ.
Из этого «полного информационного» выражения, которое само по себе обычно является хорошим результатом, вы можете получить приблизительное количество «операций с плавающей запятой», выбрав эталонную машину и единицу измерения.
Например, микроархитектура Skylake от Intel имеет очень упрощенную таблицу таймингов:
Operation Cycles
Addition 0.5
Subtraction 0.5
Division 3
Multiplication 0.5
Если мы возьмем сложение в качестве единицы измерения для одного FLOP, мы можем сказать, что деление равно 6 сложениям, то есть это как 6 FLOP.
Operation FLOPs
Addition 1 (By definition)
Subtraction 1
Division 6
Multiplication 1
Таким образом, приведенный выше пример сводится к n·k·(2·m - 1), так как умножение и сложение занимают всего 1 FLOP.
Это упрощенное представление, реальные машины намного сложнее (например, Skylake имеет векторные единицы измерения и FMA, что может изменить единицы измерения и тайминги).
В любом случае выражение в терминах различных видов операций не зависит от машины и может быть преобразовано в одно число позже при создании конкретного случая.
person
Margaret Bloom
schedule
25.12.2016