Как вычислить FLOPS за прошедшее время для вычислений? - PullRequest
0 голосов
/ 26 января 2020

Из этого руководства по использованию DFT-файлов Intel MKL видно, что д-р Андрей Е. Владимиров использует время, затраченное на выполнение задачи, а именно t1-t0, для вычисления количества GigaFLOPS с использованием GF/s = HztoPerf/(t1-t0) где HztoPerf = 5.0 * 1e-9 * double(fft_size) * log2(double(fft_size)) * double(num_fft).

Это общая формула? Если нет, то как вывести средние значения GF / s для моего процессора (Intel Xeon E5-1660 на 3 ГГц с 8 ядрами), если я знаю, сколько времени прошло для выполнения вычислений (например, с использованием различных БПФ)?

1 Ответ

0 голосов
/ 26 января 2020

Вы должны знать, сколько операций FP требует ваша проблема. Затем вы делите это на время.

1e-9 учитывает префикс Giga = 10 ^ 9 metri c. Без этого вы бы имели FLOP / s, а не GFLOP / s, если бы вы поделили количество операций FLoating point на секунды.

5.0 * fft_size * log2(fft_size) представляется числом операций FP на FFT.

Эффективным БПФ является O (n log2 (n)) , и, очевидно, эта реализация имеет постоянный коэффициент 5 (или, возможно, это включает в себя некоторую работу, выполненную с использованием результата?)

num_fft - это, вероятно, общее количество выполненных БПФ такого размера, то есть количество повторений. Таким образом, результатом всех этих вещей является количество операций FP, фактически выполненных во время вычисления FFT.

...