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

Go to the source code of this file.

Classes

class  WaveletOperatorMPIFixture
 

Functions

 BENCHMARK_DEFINE_F (WaveletOperatorMPIFixture, Forward)(benchmark
 
 BENCHMARK_DEFINE_F (WaveletOperatorMPIFixture, Adjoint)(benchmark
 
 RangeMultiplier (2) -> Range(128, 128<< 3) ->UseManualTime() ->Repetitions(5) ->ReportAggregatesOnly(true) ->Unit(benchmark::kMillisecond)
 

Function Documentation

◆ BENCHMARK_DEFINE_F() [1/2]

BENCHMARK_DEFINE_F ( WaveletOperatorMPIFixture  ,
Adjoint   
)

Definition at line 98 of file wavelet_operator_mpi.cc.

98  {
99  // Apply Psi to a temporary vector
100  Vector<t_complex> const image = Vector<t_complex>::Ones(m_imsizey * m_imsizex);
101  Vector<t_complex> wavelet_coeff = Vector<t_complex>::Zero(n_wave_coeff);
102 
103  while (m_world.broadcast<int>(state.KeepRunning())) {
104  auto start = std::chrono::high_resolution_clock::now();
105  wavelet_coeff = m_Psi.adjoint() * image;
106  auto end = std::chrono::high_resolution_clock::now();
107  state.SetIterationTime(b_utilities::duration(start, end, m_world));
108  }
109 }
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 ( WaveletOperatorMPIFixture  ,
Forward   
)

Definition at line 83 of file wavelet_operator_mpi.cc.

83  {
84  // Benchmark the application of the operator
85 
86  // Apply Psi to a temporary vector
87  Vector<t_complex> image = Vector<t_complex>::Random(m_imsizey * m_imsizex);
88  Vector<t_complex> const wavelet_coeff = Vector<t_complex>::Ones(n_wave_coeff);
89 
90  while (m_world.broadcast<int>(state.KeepRunning())) {
91  auto start = std::chrono::high_resolution_clock::now();
92  image = m_Psi * wavelet_coeff;
93  auto end = std::chrono::high_resolution_clock::now();
94  state.SetIterationTime(b_utilities::duration(start, end, m_world));
95  }
96 }

References b_utilities::duration().

◆ RangeMultiplier()

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