Почему математические библиотеки часто сравнивают с помощью 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 и является ли он хороший показатель эффективности?


person Praxeolitic    schedule 22.05.2015    source источник


Ответы (2)


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

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

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

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

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

person hazydev    schedule 22.05.2015

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

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

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

person Peter    schedule 22.05.2015