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

Go to the source code of this file.

Classes

class  WaveletOperatorFixture
 
class  WaveletOperatorAdjointFixture
 

Functions

void wavelet_operator_constructor (benchmark::State &state)
 
 RangeMultiplier (2) -> Range(1024, 1024<< 10) ->UseManualTime() ->Repetitions(10) ->ReportAggregatesOnly(true) ->Unit(benchmark::kMillisecond)
 
 BENCHMARK_DEFINE_F (WaveletOperatorFixture, Apply)(benchmark
 
 BENCHMARK_DEFINE_F (WaveletOperatorAdjointFixture, Apply)(benchmark
 
 BENCHMARK_MAIN ()
 

Function Documentation

◆ BENCHMARK_DEFINE_F() [1/2]

BENCHMARK_DEFINE_F ( WaveletOperatorAdjointFixture  ,
Apply   
)

Definition at line 91 of file wavelet_operator.cc.

91  {
92  t_uint m_imsizex = state.range(0);
93  t_uint m_imsizey = state.range(0);
94  sopt::wavelets::SARA m_sara{
95  std::make_tuple("Dirac", 3u), std::make_tuple("DB1", 3u), std::make_tuple("DB2", 3u),
96  std::make_tuple("DB3", 3u), std::make_tuple("DB4", 3u), std::make_tuple("DB5", 3u),
97  std::make_tuple("DB6", 3u), std::make_tuple("DB7", 3u), std::make_tuple("DB8", 3u)};
98 
99  sopt::LinearTransform<Vector<t_complex>> m_Psi =
100  sopt::linear_transform<t_complex>(m_sara, m_imsizey, m_imsizex);
101 
102  // Get the number of wavelet coefs
103  t_uint const n_wave_coeff = m_sara.size() * m_imsizex * m_imsizey;
104 
105  // Apply Psi to a temporary vector
106  Vector<t_complex> temp;
107  Vector<t_complex> const x = Vector<t_complex>::Random(m_imsizex * m_imsizey);
108 
109  while (state.KeepRunning()) {
110  auto start = std::chrono::high_resolution_clock::now();
111  temp = m_Psi.adjoint() * x;
112  auto end = std::chrono::high_resolution_clock::now();
113  state.SetIterationTime(b_utilities::duration(start, end));
114  }
115 }
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_DEFINE_F() [2/2]

BENCHMARK_DEFINE_F ( WaveletOperatorFixture  ,
Apply   
)

Definition at line 65 of file wavelet_operator.cc.

65  {
66  t_uint m_imsizex = state.range(0);
67  t_uint m_imsizey = state.range(0);
68  sopt::wavelets::SARA m_sara{
69  std::make_tuple("Dirac", 3u), std::make_tuple("DB1", 3u), std::make_tuple("DB2", 3u),
70  std::make_tuple("DB3", 3u), std::make_tuple("DB4", 3u), std::make_tuple("DB5", 3u),
71  std::make_tuple("DB6", 3u), std::make_tuple("DB7", 3u), std::make_tuple("DB8", 3u)};
72 
73  sopt::LinearTransform<Vector<t_complex>> m_Psi =
74  sopt::linear_transform<t_complex>(m_sara, m_imsizey, m_imsizex);
75 
76  // Get the number of wavelet coefs
77  t_uint const n_wave_coeff = m_sara.size() * m_imsizex * m_imsizey;
78 
79  // Apply Psi to a temporary vector
80  Vector<t_complex> temp;
81  Vector<t_complex> const x = Vector<t_complex>::Random(n_wave_coeff);
82 
83  while (state.KeepRunning()) {
84  auto start = std::chrono::high_resolution_clock::now();
85  temp = m_Psi * x;
86  auto end = std::chrono::high_resolution_clock::now();
87  state.SetIterationTime(b_utilities::duration(start, end));
88  }
89 }

References b_utilities::duration().

◆ BENCHMARK_MAIN()

BENCHMARK_MAIN ( )

◆ RangeMultiplier()

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

◆ wavelet_operator_constructor()

void wavelet_operator_constructor ( benchmark::State &  state)

Definition at line 10 of file wavelet_operator.cc.

10  {
11  // Image size
12  t_uint m_imsizex = state.range(0);
13  t_uint m_imsizey = state.range(0);
14 
15  // benchmark the creation of measurement operator
16  while (state.KeepRunning()) {
17  auto start = std::chrono::high_resolution_clock::now();
18 
19  const sopt::wavelets::SARA m_sara{
20  std::make_tuple("Dirac", 3u), std::make_tuple("DB1", 3u), std::make_tuple("DB2", 3u),
21  std::make_tuple("DB3", 3u), std::make_tuple("DB4", 3u), std::make_tuple("DB5", 3u),
22  std::make_tuple("DB6", 3u), std::make_tuple("DB7", 3u), std::make_tuple("DB8", 3u)};
23 
24  sopt::LinearTransform<Vector<t_complex>> Psi =
25  sopt::linear_transform<t_complex>(m_sara, m_imsizey, m_imsizex);
26 
27  auto end = std::chrono::high_resolution_clock::now();
28 
29  state.SetIterationTime(b_utilities::duration(start, end));
30  }
31 }

References b_utilities::duration().