Почему математические библиотеки часто сравнивают с помощью FLOPS?

Математические библиотеки очень часто сравниваются на основе FLOPS. Какая информация передается мне, когда мне показывают график зависимости FLOPS от размера с наборами точек для нескольких различных математических библиотек?

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

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

Примеров предостаточно.

http://eigen.tuxfamily.org/index.php?title=Benchmark

https://code.google.com/p/blaze-lib/wiki/Benchmarks

https://software.intel.com/en-us/articles/a-simple-example-to-measure-the-performance-of-an-intel-mkl-function

С другой стороны, эти тесты LAPACK и Armadillo используют абсолютное время для данной операции, что имеет для меня больше смысла.

http://www.netlib.org/lapack/lug/node71.html

http://arma.sourceforge.net/speed.html

Соответствующий:

Что такое FLOP / s и является ли это хорошим показателем производительности?

6

Решение

Обычно люди сравнивают математические библиотеки, чтобы выбрать ту, которая минимизирует время выполнения их программы. Для таких тестов необходимо учитывать две вещи: производительность библиотек на заданном входе и, если этот вход является репрезентативным для вашего варианта использования.

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

Предположение о том, что каждая библиотека будет выполнять одинаковое количество операций с плавающей запятой, в некоторых случаях является разумным. Но вполне возможно, что двум библиотекам потребуется разное количество операций с плавающей запятой для одной и той же задачи (например, умножение матричной матрицы). Если это так, то библиотека может сделать меньше FLOPS, но завершить ее за меньшее время, чем библиотека, которая делает больше FLOPS. Следовательно, в этих случаях на общее время выполнения разумно смотреть. Если авторы публикуют сравнения в FLOPS, это означает, что они полагают, что каждая библиотека в целом выполняет одинаковое количество операций; или просто делите количество операций, необходимых для теоретического завершения задачи, на общее время выполнения (что также является распространенным). Вы хотите проверить, чтобы увидеть методологию тестирования.

Цель сравнения производительности (например, FLOPS) с размером — помочь людям понять производительность репрезентативного ввода для их варианта использования. Если вы знаете, что у вас будет много маленьких векторов, например, размером менее 10, то вам все равно, насколько быстро работает библиотека для векторов размером 1 Гб, и не хотите, чтобы эти входные данные влияли на сравнение.

Вообще, подсчет FLOPS был популярен (возможно, отчасти потому, что это легко объяснить математикам). Я полагаю, что одна мотивация заключается в том, что сказать «вы можете продать вектор размера = 10 при 10000 флопсах, но вектор размера = 100 при 100 флопсах» легче, чем сказать «вы можете масштабировать вектор размера = 10 за 0,001 секунды, но размер = 100 вектор за 1 секунду. » Если вы сообщаете общее время выполнения, вы, вероятно, захотите масштабировать по размеру входных данных для сравнения.

2

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

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

FLOPS показывает, насколько хорошо алгоритм использует процессор. Измерение FLOPS для алгоритма, деленное на число FLOPS, на которые способен процессор, дает долю от 0 до 1. Чем ближе к 1, тем эффективнее алгоритм использует процессор, что выражается в ударе по доллару для этого типа Процессор (т.е. алгоритм выдает решение быстрее, поэтому чистая стоимость меньше).

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

1

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