Как рассчитать общее количество FOP и производительность специальных операций с плавающей запятой (exp sin sqrt)?

При измерении алгоритма, если есть операции деления, как рассчитать общее количество FOP и производительность с плавающей запятой?

Например, умножение матрицы n2, вычисление n3 * 2 флопс (умножение, сложение), предполагая, что, используя тот же набор данных n2, мы меняем операции умножения умножения матриц на операции деления, как вычислять флопы. То же самое с результатом умножения матриц?

0

Решение

Увы, нет стандарта, который определяет, что операция с плавающей точкой является.
Это связано с тем, что разные архитектуры могут иметь встроенную поддержку для различного набора операций.
Так, например, архитектура 1 может поддерживать все четыре основные операции, 2 только сложение и 3 все основные операции плюс возведение в степень.

В общем термин операции с плавающей точкой очень контекстуализирован и привязан к конкретной машине.

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

В конце концов у вас будет счет для всех различных операций.
Например, умножение N × м матрица м × К один включает N·К·м умножения и N·К· (м-1) дополнения. так что результат N·К·м MUL + N·К· (м-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·К· (2 ·м — 1) поскольку для умножения и сложения требуется всего 1 FLOP.

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]