Как рассчитывается FLOPS / IOPS и как его использовать?

0

Я слежу за некоторыми учебниками для OpenCL, и много раз люди говорят в терминах FLOPS. Википедия объясняет формулу, но не говорит, что она на самом деле означает? Например, 1 световой год = 9.4605284 × 10 ^ 15 метров, но это означает расстояние, пройденное светом через год. Точно так же означает FLOP? Ответ на аналогичный вопрос говорит о 100 IOPS для кода

for(int i = 0; i < 100; ++i)

Игнорируя инициализацию, я вижу 100 операций приращения, поэтому там 100IOPS. Но я также вижу 100 сравнительных операций. Так почему же это не 200IOPS? Итак, какие типы операторов включены в расчет FLOPS/IOPS?

Во-вторых, я хочу знать, что бы вы сделали, вычислив FLOPS вашего алгоритма? Я спрашиваю об этом, потому что значение специфично для тактовой частоты процессора и отсутствия ядер. Любое руководство на этой арене было бы очень полезно.

  • 0
    Вы не цитировали весь ответ, на который вы ссылались, что фактически отвечает на ваш вопрос напрямую: «Это будет 100 операций с плавающей запятой, а также 100 целочисленных операций, а также некоторые (100?) Управляющие потоки / ветви / сравнения операции «. Я за «целое», а не «приращение», и автор помещает сравнения в другую категорию.
  • 0
    Но ответ имеет вопросительный знак после 100. Так, что это означает? И почему классифицируется иначе, чем операция «я <100». Это тоже не целочисленная операция?
Показать ещё 2 комментария
Теги:

1 ответ

4
Лучший ответ

"FLOPS" означает "Операции с плавающей точкой в секунду", и это именно так. Он использовался как показатель вычислительной скорости больших, основанных на количестве (обычно научных) операций. Измерение это вопрос знания двух вещей: 1.) Точное время выполнения вашего алгоритма 2.) Точное число операций с плавающей запятой, участвующих в вашем алгоритме

Вы можете получить довольно хорошие аппроксимации первого из инструментов профилирования, а второй из... ну, может быть, вы сами по себе. Вы можете просмотреть источник для операций с плавающей запятой, например "1.0 + 2.0", или посмотреть на сгенерированный код сборки, но оба могут ввести в заблуждение. Там, вероятно, есть отладчик, который даст вам FLOPS напрямую.

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

  • 0
    а как насчет примера 100 IOPS, который я упомянул в вопросе?
  • 0
    Как упоминалось ранее, «i <100» является операцией управления потоком, поэтому «++ i», которая расширяется до «i = i + 1», является целочисленной операцией в вашем цикле.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню