PURIFY
Next-generation radio interferometric imaging
Classes | Functions
fft.cc File Reference
#include <chrono>
#include <benchmark/benchmark.h>
#include "benchmarks/utilities.h"
#include "purify/operators.h"
+ Include dependency graph for fft.cc:

Go to the source code of this file.

Classes

class  FFTOperatorFixture
 

Functions

 BENCHMARK_DEFINE_F (FFTOperatorFixture, Apply)(benchmark
 
 RangeMultiplier (2) -> Range(128, 128<< 6) ->UseManualTime() ->Repetitions(10) ->ReportAggregatesOnly(true) ->Unit(benchmark::kMillisecond)
 
 BENCHMARK_MAIN ()
 

Function Documentation

◆ BENCHMARK_DEFINE_F()

BENCHMARK_DEFINE_F ( FFTOperatorFixture  ,
Apply   
)

Definition at line 21 of file fft.cc.

21  {
22  const t_uint m_imsizex = state.range(0);
23  const t_uint m_imsizey = state.range(0);
24  const t_uint N = m_imsizex * m_imsizey;
25  const auto fftop = purify::operators::init_FFT_2d<Vector<t_complex>>(m_imsizey, m_imsizex, 1.);
26  const auto& forward = std::get<0>(fftop);
27 
28  const Vector<t_complex> input = Vector<t_complex>::Random(N);
29  Vector<t_complex> output = Vector<t_complex>::Zero(N);
30  forward(output, input);
31  while (state.KeepRunning()) {
32  auto start = std::chrono::high_resolution_clock::now();
33  forward(output, input);
34  auto end = std::chrono::high_resolution_clock::now();
35  state.SetIterationTime(b_utilities::duration(start, end));
36  }
37 }
double duration(std::chrono::high_resolution_clock::time_point start, std::chrono::high_resolution_clock::time_point end)
Definition: utilities.cc:26

References b_utilities::duration().

◆ BENCHMARK_MAIN()

BENCHMARK_MAIN ( )

◆ RangeMultiplier()

RangeMultiplier ( ) -> Range(128, 128<< 6) ->UseManualTime() ->Repetitions(10) ->ReportAggregatesOnly(true) ->Unit(benchmark::kMillisecond)