PURIFY
Next-generation radio interferometric imaging
Public Member Functions | Public Attributes | List of all members
AlgoFixtureMPI Class Reference
+ Inheritance diagram for AlgoFixtureMPI:
+ Collaboration diagram for AlgoFixtureMPI:

Public Member Functions

void SetUp (const ::benchmark::State &state)
 
void TearDown (const ::benchmark::State &state)
 

Public Attributes

sopt::mpi::Communicator m_world
 
std::vector< std::tuple< std::string, t_uint > > const m_sara
 
Image< t_complex > m_image
 
t_uint m_imsizex
 
t_uint m_imsizey
 
utilities::vis_params m_uv_data
 
t_real m_epsilon
 
t_real m_sigma
 
t_uint m_kernel
 
std::shared_ptr< sopt::LinearTransform< Vector< t_complex > > const > m_measurements_distribute_image
 
std::shared_ptr< sopt::LinearTransform< Vector< t_complex > > const > m_measurements_distribute_grid
 
std::shared_ptr< sopt::algorithm::ImagingProximalADMM< t_complex > > m_padmm
 
std::shared_ptr< sopt::algorithm::ImagingForwardBackward< t_complex > > m_fb
 

Detailed Description

Definition at line 25 of file algorithms_mpi.cc.

Member Function Documentation

◆ SetUp()

void AlgoFixtureMPI::SetUp ( const ::benchmark::State &  state)
inline

Definition at line 27 of file algorithms_mpi.cc.

27  {
28  // Reading image from file and update related quantities
29  bool newImage = b_utilities::updateImage(state.range(0), m_image, m_imsizex, m_imsizey);
30 
31  // Generating random uv(w) coverage
32  bool newMeasurements = b_utilities::updateMeasurements(state.range(1), m_uv_data, m_epsilon,
33  newImage, m_image, m_world);
34 
35  bool newKernel = m_kernel != state.range(2);
36 
37  m_kernel = state.range(2);
38  // Create the measurement operator for both distributed algorithms
39  const t_real FoV = 1; // deg
40  const t_real cellsize = FoV / m_imsizex * 60. * 60.;
41  const bool w_term = false;
42  if (state.range(4) == 1) {
43  PURIFY_INFO("Using distributed image MPI algorithm");
44  m_measurements_distribute_image = factory::measurement_operator_factory<Vector<t_complex>>(
45  factory::distributed_measurement_operator::mpi_distribute_image, m_uv_data,
46  m_image.rows(), m_image.cols(), cellsize, cellsize, 2, kernels::kernel::kb, m_kernel,
47  m_kernel, w_term);
48  }
49 
50  if (state.range(4) == 2) {
51  PURIFY_INFO("Using distributed grid MPI algorithm");
52  m_measurements_distribute_grid = factory::measurement_operator_factory<Vector<t_complex>>(
53  factory::distributed_measurement_operator::mpi_distribute_grid, m_uv_data, m_image.rows(),
54  m_image.cols(), cellsize, cellsize, 2, kernels::kernel::kb, m_kernel, m_kernel, w_term);
55  }
56 
57  m_sigma = 0.016820222945913496 * std::sqrt(2); // see test_parameters file
58  }
std::shared_ptr< sopt::LinearTransform< Vector< t_complex > > const > m_measurements_distribute_image
sopt::mpi::Communicator m_world
Image< t_complex > m_image
utilities::vis_params m_uv_data
std::shared_ptr< sopt::LinearTransform< Vector< t_complex > > const > m_measurements_distribute_grid
#define PURIFY_INFO(...)
Definition: logging.h:195
bool updateMeasurements(t_uint newSize, utilities::vis_params &data)
Definition: utilities.cc:54
bool updateImage(t_uint newSize, Image< t_complex > &image, t_uint &sizex, t_uint &sizey)
Definition: utilities.cc:32

References purify::kernels::kb, purify::factory::mpi_distribute_grid, purify::factory::mpi_distribute_image, PURIFY_INFO, b_utilities::updateImage(), and b_utilities::updateMeasurements().

◆ TearDown()

void AlgoFixtureMPI::TearDown ( const ::benchmark::State &  state)
inline

Definition at line 60 of file algorithms_mpi.cc.

60 {}

Member Data Documentation

◆ m_epsilon

t_real AlgoFixtureMPI::m_epsilon

Definition at line 74 of file algorithms_mpi.cc.

◆ m_fb

std::shared_ptr<sopt::algorithm::ImagingForwardBackward<t_complex> > AlgoFixtureMPI::m_fb

Definition at line 81 of file algorithms_mpi.cc.

◆ m_image

Image<t_complex> AlgoFixtureMPI::m_image

Definition at line 69 of file algorithms_mpi.cc.

◆ m_imsizex

t_uint AlgoFixtureMPI::m_imsizex

Definition at line 70 of file algorithms_mpi.cc.

◆ m_imsizey

t_uint AlgoFixtureMPI::m_imsizey

Definition at line 71 of file algorithms_mpi.cc.

◆ m_kernel

t_uint AlgoFixtureMPI::m_kernel

Definition at line 76 of file algorithms_mpi.cc.

◆ m_measurements_distribute_grid

std::shared_ptr<sopt::LinearTransform<Vector<t_complex> > const> AlgoFixtureMPI::m_measurements_distribute_grid

Definition at line 79 of file algorithms_mpi.cc.

◆ m_measurements_distribute_image

std::shared_ptr<sopt::LinearTransform<Vector<t_complex> > const> AlgoFixtureMPI::m_measurements_distribute_image

Definition at line 78 of file algorithms_mpi.cc.

◆ m_padmm

std::shared_ptr<sopt::algorithm::ImagingProximalADMM<t_complex> > AlgoFixtureMPI::m_padmm

Definition at line 80 of file algorithms_mpi.cc.

◆ m_sara

std::vector<std::tuple<std::string, t_uint> > const AlgoFixtureMPI::m_sara
Initial value:
{
std::make_tuple("Dirac", 3u), std::make_tuple("DB1", 3u), std::make_tuple("DB2", 3u),
std::make_tuple("DB3", 3u), std::make_tuple("DB4", 3u), std::make_tuple("DB5", 3u),
std::make_tuple("DB6", 3u), std::make_tuple("DB7", 3u), std::make_tuple("DB8", 3u)}

Definition at line 64 of file algorithms_mpi.cc.

◆ m_sigma

t_real AlgoFixtureMPI::m_sigma

Definition at line 75 of file algorithms_mpi.cc.

◆ m_uv_data

utilities::vis_params AlgoFixtureMPI::m_uv_data

Definition at line 73 of file algorithms_mpi.cc.

◆ m_world

sopt::mpi::Communicator AlgoFixtureMPI::m_world

Definition at line 62 of file algorithms_mpi.cc.


The documentation for this class was generated from the following file: