PURIFY
Next-generation radio interferometric imaging
Functions
parallel_mpi_utilities.cc File Reference
#include "catch2/catch_all.hpp"
#include "purify/mpi_utilities.h"
+ Include dependency graph for parallel_mpi_utilities.cc:

Go to the source code of this file.

Functions

 TEST_CASE ("Distribution of visibility data")
 

Function Documentation

◆ TEST_CASE()

TEST_CASE ( "Distribution of visibility data"  )

Definition at line 7 of file parallel_mpi_utilities.cc.

7  {
8  auto const world = sopt::mpi::Communicator::World();
9  auto const N = 5;
10  utilities::vis_params params;
11 
12  params.u = Vector<t_real>::Random(N);
13  params.v = Vector<t_real>::Random(N);
14  params.w = Vector<t_real>::Random(N);
15  params.vis = Vector<t_complex>::Random(N);
16  params.weights = Vector<t_complex>::Random(N);
17 
18  std::vector<t_int> order(N);
19 
20  if (world.size() == 1) return;
21  order[0] = 1;
22  std::fill(order.begin() + 1, order.end(), 0);
23 
24  auto actual = utilities::regroup_and_scatter(params, order, world);
25  if (world.rank() == 0) {
26  CHECK(actual.u.size() == 4);
27  CHECK(actual.u(0) == Approx(params.u(N - 1)));
28  CHECK(actual.u.tail(N - 2).isApprox(params.u.segment(1, N - 2)));
29  } else if (world.rank() == 1) {
30  CHECK(actual.u.size() == 1);
31  CHECK(actual.u(0) == Approx(params.u(0)));
32  } else
33  CHECK(actual.u.size() == 0);
34 }
#define CHECK(CONDITION, ERROR)
Definition: casa.cc:6
vis_params regroup_and_scatter(vis_params const &params, std::vector< t_int > const &groups, sopt::mpi::Communicator const &comm)
Vector< t_complex > vis
Definition: uvw_utilities.h:22
Vector< t_complex > weights
Definition: uvw_utilities.h:23

References CHECK, purify::utilities::regroup_and_scatter(), purify::utilities::vis_params::u, purify::utilities::vis_params::v, purify::utilities::vis_params::vis, purify::utilities::vis_params::w, and purify::utilities::vis_params::weights.