Это довольно приличный показатель производительности, если вы точно понимаете, что он измеряет.
FLOPS - это, как следует из названия, количество операций с плавающей точкой в секунду, то, что составляет FLOP, может варьироваться в зависимости от процессора. (Некоторые процессоры могут выполнять сложение и умножение как одну операцию, другие не могут, например). Это означает, что в качестве показателя производительности он довольно близок к аппаратному обеспечению, а это означает, что 1) вам необходимо знать свое оборудование, чтобы вычислить идеальные FLOPS для данной архитектуры, и вы должны знать свой алгоритм и реализацию, чтобы выяснить, как много операций с плавающей запятой, из которых он фактически состоит.
В любом случае, это полезный инструмент для проверки того, насколько хорошо вы используете процессор. Если вам известна теоретическая пиковая производительность ЦП в FLOPS, вы можете определить, насколько эффективно вы используете модули с плавающей запятой ЦП, которые зачастую являются одними из трудных для эффективного использования. Программа, которая запускает 30% FLOPS, на которые способен процессор, имеет место для оптимизации. Тот, который работает на 70%, вероятно, не станет намного более эффективным, если вы не измените основной алгоритм. Для таких сложных математических алгоритмов, как ваш, это в значительной степени стандартный способ измерения производительности. Вы можете просто измерить, сколько времени занимает выполнение программы, но это сильно варьируется в зависимости от процессора. Но если ваша программа использует ЦП на 50% (относительно пикового числа FLOPS), это несколько более постоянное значение (оно все равно будет варьироваться в зависимости от радикально разных архитектур ЦП, но намного более согласованно, чем время выполнения).
Но зная, что «Мой ЦП способен X GFLOPS, и я на самом деле достигаю пропускную способность, скажем, 20% от этого», это очень ценная информация в высокопроизводительном программном обеспечении. Это означает, что что-то отличное , кроме операций с плавающей запятой, сдерживает вас и мешает работе модулей FP эффективно. А поскольку блоки FP составляют большую часть работы, это означает, что у вашего программного обеспечения есть проблема.
Легко измерить «Моя программа запускается за X минут», и если вы считаете, что это неприемлемо, тогда, конечно, вы можете ответить «Интересно, смогу ли я снизить эту скидку на 30%», но вы не знать , если это возможно, если вы не знаете точно, сколько работы выполняется, и точно, на что способен процессор в пике. Сколько времени вы хотите потратить на оптимизацию этого, если вы даже не знаете, способен ли процессор фундаментально выполнять больше инструкций в секунду?
Очень легко предотвратить эффективное использование блока FP процессора, поскольку у него слишком много зависимостей между операциями FP или слишком много ветвей или аналогичных элементов, препятствующих эффективному планированию. И если это сдерживает вашу реализацию, вам нужно , чтобы знать это. Вы должны знать, что «я не получаю пропускную способность FP, которая должна быть возможной, поэтому очевидно, что другие части моего кода препятствуют тому, чтобы инструкции FP были доступны, когда процессор готов к их выпуску».
Зачем вам нужны другие способы измерения производительности? Что плохого в том, чтобы просто рассчитать количество FLOPS, как вас просил ваш босс? ;)