PURIFY
Next-generation radio interferometric imaging
Classes | Functions
measurement_operator_wproj.cc File Reference
#include <chrono>
#include <sstream>
#include <benchmark/benchmark.h>
#include "benchmarks/utilities.h"
#include "purify/directories.h"
#include "purify/operators.h"
#include "purify/wide_field_utilities.h"
#include "purify/wproj_operators.h"
#include <sopt/imaging_padmm.h>
#include <sopt/mpi/communicator.h>
#include <sopt/mpi/session.h>
#include <sopt/wavelets.h>
+ Include dependency graph for measurement_operator_wproj.cc:

Go to the source code of this file.

Classes

class  DegridOperatorCtorFixturePar
 

Functions

 BENCHMARK_DEFINE_F (DegridOperatorCtorFixturePar, Distr)(benchmark
 
 BENCHMARK_DEFINE_F (DegridOperatorCtorFixturePar, MPI)(benchmark
 
 Args ({64, 1000, 4}) -> UseManualTime() ->Repetitions(10) ->Unit(benchmark::kMillisecond)
 

Function Documentation

◆ Args()

Args ( {64, 1000, 4}  ) -> UseManualTime() ->Repetitions(10) ->Unit(benchmark::kMillisecond)

◆ BENCHMARK_DEFINE_F() [1/2]

BENCHMARK_DEFINE_F ( DegridOperatorCtorFixturePar  ,
Distr   
)

Definition at line 59 of file measurement_operator_wproj.cc.

59  {
60  // benchmark the creation of the distributed measurement operator
61  if ((m_counter % 10) == 1) {
62  auto sky_measurements = measurementoperator::init_degrid_operator_2d<Vector<t_complex>>(
63  m_world, m_uv_data, m_imsizey, m_imsizex, m_cellsize, m_cellsize, 2, kernels::kernel::kb,
64  state.range(2), 100, m_w_term, 1e-6, 1e-6, dde_type::wkernel_radial);
65  }
66  while (state.KeepRunning()) {
67  auto start = std::chrono::high_resolution_clock::now();
68  auto sky_measurements = measurementoperator::init_degrid_operator_2d<Vector<t_complex>>(
69  m_world, m_uv_data, m_imsizey, m_imsizex, m_cellsize, m_cellsize, 2, kernels::kernel::kb,
70  state.range(2), 100, m_w_term, 1e-6, 1e-6, dde_type::wkernel_radial);
71  auto end = std::chrono::high_resolution_clock::now();
72  state.SetIterationTime(b_utilities::duration(start, end, m_world));
73  }
74 
75  state.SetBytesProcessed(int64_t(state.iterations()) * (state.range(1) + m_imsizex * m_imsizey) *
76  sizeof(t_complex));
77 }
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(), purify::kernels::kb, and purify::wkernel_radial.

◆ BENCHMARK_DEFINE_F() [2/2]

BENCHMARK_DEFINE_F ( DegridOperatorCtorFixturePar  ,
MPI   
)

Definition at line 79 of file measurement_operator_wproj.cc.

79  {
80  // benchmark the creation of the distributed MPI measurement operator
81  if ((m_counter % 10) == 1) {
82  auto sky_measurements =
83  measurementoperator::init_degrid_operator_2d_all_to_all<Vector<t_complex>>(
84  m_world, m_image_index, m_w_stacks, m_uv_data_all_to_all, m_imsizey, m_imsizex,
85  m_cellsize, m_cellsize, 2, kernels::kernel::kb, state.range(2), 100, m_w_term, 1e-6,
86  1e-6, dde_type::wkernel_radial);
87  }
88  while (state.KeepRunning()) {
89  auto start = std::chrono::high_resolution_clock::now();
90  auto sky_measurements =
91  measurementoperator::init_degrid_operator_2d_all_to_all<Vector<t_complex>>(
92  m_world, m_image_index, m_w_stacks, m_uv_data_all_to_all, m_imsizey, m_imsizex,
93  m_cellsize, m_cellsize, 2, kernels::kernel::kb, state.range(2), 100, m_w_term, 1e-6,
94  1e-6, dde_type::wkernel_radial);
95  auto end = std::chrono::high_resolution_clock::now();
96  state.SetIterationTime(b_utilities::duration(start, end, m_world));
97  }
98 
99  state.SetBytesProcessed(int64_t(state.iterations()) * (state.range(1) + m_imsizex * m_imsizey) *
100  sizeof(t_complex));
101 }

References b_utilities::duration(), purify::kernels::kb, and purify::wkernel_radial.