2

Microsoft's Parallel Programming whitepaper описывает ситуации, которые оптимальны при различных пороговых значениях FLOPS и что скорость FLOPS является точкой принятия решения о том, когда должна использоваться определенная реализация.Как измерить FLOPS-приложение, используемое моим C#?

Как измерить FLOPS в моем приложении?

+0

Подсчитайте количество операций с плавающей запятой. Разделите к тому времени, которое требуется для их выполнения. –

ответ

4

FLOPS означает, что операции FLoating-Point в секунду и их измерение так же просто, как подсчет количества операций с плавающей запятой, выполняемых и делящихся на время, необходимое для их выполнения. Измерение времени - это легкая часть. Couting операции сложнее и обычно зависит от аппаратной платформы и используемого компилятора. Обычно простые операции, такие как сложение, вычитание и умножение, очень быстрые. Отдел немного медленнее. Взятие квадратного корня еще медленнее. На самой медленной части спектра представлены трансцендентные функции, такие как синус, косинус, возведение в степень и логарифм. Все они расширяются последовательно и вычисляются итеративно до достижения конвергенции. Большинство процессоров текущего поколения поддерживают операции плавного умножения и добавления (FMA), то есть A * B + C выполняется за один цикл.

Учитывая все, что очень сложно дать абсолютное значение FLOPS. Если ваш код выполняет только простые операции, вы получите высокий уровень FLOPS. Если это много трансцендентных, то количество FLOPS будет намного ниже (до 100 раз ниже). Это также зависит от соотношения fetch/compute, как часто вы получаете доступ к основной памяти и насколько хорош компилятор при генерации кода, который может помочь скрывать время ожидания.

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

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