2015-05-22 2 views
6

Математические библиотеки очень часто сравниваются на основе 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

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

What is FLOP/s and is it a good measure of performance?

ответ

2

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

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

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

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

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

1

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

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

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

Смежные вопросы