3 #include <benchmark/benchmark.h>
5 #include "purify/directories.h"
9 #include <sopt/imaging_padmm.h>
10 #include <sopt/mpi/communicator.h>
11 #include <sopt/mpi/session.h>
12 #include <sopt/wavelets.h>
20 void SetUp(const ::benchmark::State &state) {
24 const t_real FoV = 25;
25 m_cellsize = FoV / m_imsizex * 60. * 60.;
28 m_imsizex = state.range(0);
29 m_imsizey = state.range(0);
32 b_utilities::update_comm(m_world);
35 const t_real max_w = 300.;
37 const auto cost = [](t_real x) -> t_real {
return std::abs(x * x); };
39 std::tie(m_uv_data_all_to_all, m_image_index, m_w_stacks) =
43 void TearDown(const ::benchmark::State &state) {}
46 sopt::mpi::Communicator m_world;
61 if ((m_counter % 10) == 1) {
62 auto sky_measurements = measurementoperator::init_degrid_operator_2d<Vector<t_complex>>(
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>>(
71 auto end = std::chrono::high_resolution_clock::now();
75 state.SetBytesProcessed(int64_t(state.iterations()) * (state.range(1) + m_imsizex * m_imsizey) *
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,
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,
95 auto end = std::chrono::high_resolution_clock::now();
99 state.SetBytesProcessed(int64_t(state.iterations()) * (state.range(1) + m_imsizex * m_imsizey) *
107 ->Args({64, 1000, 4})
112 ->Unit(benchmark::kMillisecond);
116 ->Args({64, 1000, 4})
121 ->Unit(benchmark::kMillisecond);
void SetUp(const ::benchmark::State &state)
utilities::vis_params m_uv_data_all_to_all
std::vector< t_real > m_w_stacks
void TearDown(const ::benchmark::State &state)
std::vector< t_int > m_image_index
BENCHMARK_DEFINE_F(DegridOperatorCtorFixturePar, Distr)(benchmark
double duration(std::chrono::high_resolution_clock::time_point start, std::chrono::high_resolution_clock::time_point end)
utilities::vis_params random_measurements(t_int size, const t_real max_w, const t_int id, const bool cache_visibilities)
const t_real pi
mathematical constant
utilities::vis_params w_stacking(utilities::vis_params const ¶ms, sopt::mpi::Communicator const &comm, const t_int iters, const std::function< t_real(t_real)> &cost, const t_real k_means_rel_diff)
std::tuple< utilities::vis_params, std::vector< t_int >, std::vector< t_real > > w_stacking_with_all_to_all(utilities::vis_params const ¶ms, const t_real du, const t_int min_support, const t_int max_support, sopt::mpi::Communicator const &comm, const t_int iters, const t_real fill_relaxation, const std::function< t_real(t_real)> &cost, const t_real k_means_rel_diff)
t_real pixel_to_lambda(const t_real cell, const t_uint imsize, const t_real oversample_ratio)
return factors to convert between arcsecond pixel size image space and lambda for uv space