FLOPS - это операции с плавающей запятой в секунду. Для измерения FLOPS вам в первую очередь нужен код, который выполняет такие операции. Если у вас есть такой код, вы можете измерить его время выполнения. Вы также должны суммировать или оценивать (не измерять!) Все операции с плавающей запятой и делить их на измеренное время стены. Вы должны считать все обычные операции, такие как сложения, вычитания, умножения, деления (да, хотя они медленнее и их лучше избегать, они по-прежнему FLOPs ..). Будьте осторожны, как вы считаете! То, что вы видите в своем исходном коде, скорее всего, не то, что компилятор производит после всех оптимизаций. Чтобы быть уверенным, вам, вероятно, придется взглянуть на сборку ..
FLOPS отличается от операций в секунду. Поэтому, хотя некоторые архитектуры имеют одну инструкцию MAD (умножение-и-сложение), они все равно считаются двумя FLOP. Точно так же инструкции SSE. Вы считаете их одной инструкцией, хотя они выполняют более одной FLOP.
FLOPS не совсем бессмысленны, но вы должны быть осторожны, сравнивая свои FLOPS с sb. Elses FLOPS, особенно поставщики оборудования. Например. NVIDIA обеспечивает максимальную производительность FLOPS для своих карт при условии MAD-операций. Так что, если ваш код не имеет таких, вы никогда не получите такую производительность. Либо переосмыслите алгоритм, либо измените пиковые аппаратные потери в секунду на правильный коэффициент, который вам необходимо выяснить для собственного алгоритма! Например, если ваш код выполняет только умножение, вы бы поделили его на 2. Правильный подсчет может привести к тому, что ваш код станет неоптимальным и достаточно эффективным без изменения одной строки кода.