PURIFY
Next-generation radio interferometric imaging
Classes | Functions
algorithms.cc File Reference
#include "purify/config.h"
#include "purify/types.h"
#include <array>
#include <benchmark/benchmark.h>
#include "benchmarks/utilities.h"
#include "purify/algorithm_factory.h"
#include "purify/directories.h"
#include "purify/measurement_operator_factory.h"
#include "purify/operators.h"
#include "purify/utilities.h"
#include "purify/wavelet_operator_factory.h"
#include <sopt/imaging_padmm.h>
#include <sopt/relative_variation.h>
#include <sopt/utilities.h>
#include <sopt/wavelets.h>
#include <sopt/wavelets/sara.h>
+ Include dependency graph for algorithms.cc:

Go to the source code of this file.

Classes

class  AlgoFixture
 

Functions

 BENCHMARK_DEFINE_F (AlgoFixture, Padmm)(benchmark
 
 BENCHMARK_DEFINE_F (AlgoFixture, ForwardBackward)(benchmark
 
 Args ({128, 10000, 4, 10}) -> UseManualTime() ->MinTime(10.0) ->MinWarmUpTime(5.0) ->Repetitions(3) ->Unit(benchmark::kMillisecond)
 
 BENCHMARK_MAIN ()
 

Function Documentation

◆ Args()

Args ( {128, 10000, 4, 10}  ) -> UseManualTime() ->MinTime(10.0) ->MinWarmUpTime(5.0) ->Repetitions(3) ->Unit(benchmark::kMillisecond)

◆ BENCHMARK_DEFINE_F() [1/2]

BENCHMARK_DEFINE_F ( AlgoFixture  ,
ForwardBackward   
)

Definition at line 83 of file algorithms.cc.

83  {
84  // Benchmark the application of the algorithm
85  auto const wavelets = factory::wavelet_operator_factory<Vector<t_complex>>(
86  factory::distributed_wavelet_operator::serial, m_sara, m_imsizey, m_imsizex);
87 
88  t_real const beta = m_sigma * m_sigma;
89  t_real const gamma = 0.0001;
90 
91  m_fb = factory::fb_factory<sopt::algorithm::ImagingForwardBackward<t_complex>>(
92  factory::algo_distribution::serial, m_measurements_transform, wavelets, m_uv_data, m_sigma,
93  beta, gamma, m_imsizey, m_imsizex, m_sara.size(), state.range(3) + 1, true, true, false, 1e-3,
94  1e-2, 50);
95 
96  while (state.KeepRunning()) {
97  auto start = std::chrono::high_resolution_clock::now();
98  (*m_fb)();
99  auto end = std::chrono::high_resolution_clock::now();
100  state.SetIterationTime(b_utilities::duration(start, end));
101  }
102 }
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(), and purify::factory::serial.

◆ BENCHMARK_DEFINE_F() [2/2]

BENCHMARK_DEFINE_F ( AlgoFixture  ,
Padmm   
)

Definition at line 66 of file algorithms.cc.

66  {
67  // Benchmark the application of the algorithm
68  auto const wavelets = factory::wavelet_operator_factory<Vector<t_complex>>(
69  factory::distributed_wavelet_operator::serial, m_sara, m_imsizey, m_imsizex);
70 
71  m_padmm = factory::padmm_factory<sopt::algorithm::ImagingProximalADMM<t_complex>>(
72  factory::algo_distribution::serial, m_measurements_transform, wavelets, m_uv_data, m_sigma,
73  m_imsizey, m_imsizex, m_sara.size(), state.range(3) + 1, true, true, false, 1e-3, 1e-2, 50);
74 
75  while (state.KeepRunning()) {
76  auto start = std::chrono::high_resolution_clock::now();
77  (*m_padmm)();
78  auto end = std::chrono::high_resolution_clock::now();
79  state.SetIterationTime(b_utilities::duration(start, end));
80  }
81 }

References b_utilities::duration(), and purify::factory::serial.

◆ BENCHMARK_MAIN()

BENCHMARK_MAIN ( )