Вычисление FLOPS (операций с плавающей запятой за секунды)

Как я могу рассчитать FLOPS моего приложения?
Если у меня есть общее количество выполненных инструкций, я могу разделить его на время выполнения. Но как посчитать количество выполненных инструкций?

Мой вопрос общий и ответ на любой язык высоко ценится. Но я ищу решение для моего приложения, которое разработано на C / C ++ и CUDA.

Я не знаю, являются ли метки правильными, пожалуйста, поправьте меня, если я ошибаюсь.

7

Решение

Что я делаю, если число операций с плавающей запятой трудно смоделировать, так это создать два исполняемых файла: один, который является рабочей версией и дает мне время выполнения, и инструментированный, который подсчитывает все операции с плавающей запятой при их выполнении (конечно, это будет быть медленным, но это не имеет значения для нашей цели). Затем я могу вычислить значение FLOP / s, разделив число операций с плавающей запятой от второго исполняемого файла на время от первого.

Возможно, это даже можно было автоматизировать, но у меня до сих пор в этом не было необходимости.

7

Другие решения

Вы должны математически смоделировать, что сделано с вашими данными. Изолировать одну итерацию цикла. Затем посчитайте все простые сложения с плавающей точкой, умножения, деления и т. Д. Например,
y = x * 2 * (y + z*w) 4 операции с плавающей точкой. Умножьте полученное число на количество итераций. Результатом будет количество инструкций, которые вы ищете.

6

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector