1 #ifndef PURIFY_MPI_UTILITIES_H
2 #define PURIFY_MPI_UTILITIES_H
4 #include "purify/config.h"
7 #include <sopt/linear_transform.h>
10 #include <sopt/mpi/communicator.h>
21 void regroup(utilities::vis_params ¶ms, std::vector<t_int>
const &groups,
22 const t_int max_groups);
23 void regroup(vis_params &uv_params, std::vector<t_int> &image_index,
24 std::vector<t_int>
const &groups_,
const t_int max_groups);
27 sopt::mpi::Communicator
const &comm);
30 vis_params
const ¶ms,
const std::vector<t_int> &image_index,
31 std::vector<t_int>
const &groups, sopt::mpi::Communicator
const &comm);
34 sopt::mpi::Communicator
const &comm);
38 sopt::mpi::Communicator
const &comm);
46 sopt::mpi::Communicator
const &comm);
49 sopt::mpi::Communicator
const &comm);
51 utilities::vis_params
set_cell_size(
const sopt::mpi::Communicator &comm,
52 utilities::vis_params
const &uv_vis,
const t_real &cell_x,
53 const t_real &cell_y);
55 utilities::vis_params
w_stacking(utilities::vis_params
const ¶ms,
56 sopt::mpi::Communicator
const &comm,
const t_int iters,
57 const std::function<t_real(t_real)> &cost,
58 const t_real k_means_rel_diff = 1e-5);
61 std::tuple<utilities::vis_params, std::vector<t_int>, std::vector<t_real>>
63 const t_int min_support,
const t_int max_support,
64 sopt::mpi::Communicator
const &comm,
const t_int iters,
65 const t_real fill_relaxation,
const std::function<t_real(t_real)> &cost,
66 const t_real k_means_rel_diff = 1e-5);
79 t_real
step_size(T
const &vis,
const std::shared_ptr<sopt::LinearTransform<T>
const> &measurements,
80 const std::shared_ptr<sopt::LinearTransform<T>
const> &wavelets,
81 const t_uint sara_size) {
85 return (sara_size > 0) ? (wavelets->adjoint() * dimage).cwiseAbs().maxCoeff() : 0.;
std::tuple< vis_params, std::vector< t_int > > regroup_and_all_to_all(vis_params const ¶ms, const std::vector< t_int > &image_index, std::vector< t_int > const &groups, sopt::mpi::Communicator const &comm)
utilities::vis_params distribute_params(utilities::vis_params const ¶ms, sopt::mpi::Communicator const &comm)
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)
t_real step_size(T const &vis, const std::shared_ptr< sopt::LinearTransform< T > const > &measurements, const std::shared_ptr< sopt::LinearTransform< T > const > &wavelets, const t_uint sara_size)
Calculate step size using MPI (does not include factor of 1e-3)
void regroup(vis_params &uv_params, std::vector< t_int > const &groups_, const t_int max_groups)
vis_params all_to_all_visibilities(vis_params const ¶ms, std::vector< t_int > const &sizes, sopt::mpi::Communicator const &comm)
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)
vis_params scatter_visibilities(vis_params const ¶ms, std::vector< t_int > const &sizes, sopt::mpi::Communicator const &comm)
vis_params regroup_and_scatter(vis_params const ¶ms, std::vector< t_int > const &groups, sopt::mpi::Communicator const &comm)
utilities::vis_params set_cell_size(const sopt::mpi::Communicator &comm, utilities::vis_params const &uv_vis, const t_real &cell_x, const t_real &cell_y)