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

Go to the source code of this file.

Functions

 TEST_CASE ("re-group visibilities in order of processes")
 

Function Documentation

◆ TEST_CASE()

TEST_CASE ( "re-group visibilities in order of processes"  )

Definition at line 7 of file mpi_utilities.cc.

7  {
8  auto const N = 5;
10 
11  params.u = Vector<t_real>::Random(N);
12  params.v = Vector<t_real>::Random(N);
13  params.w = Vector<t_real>::Random(N);
14  params.vis = Vector<t_complex>::Random(N);
15  params.weights = Vector<t_complex>::Random(N);
16 
17  std::vector<t_int> order(N);
18 
19  SECTION("Single item out of order") {
20  order[0] = 1;
21  std::fill(order.begin() + 1, order.end(), 0);
22 
23  auto actual = params;
24  utilities::regroup(actual, order, 2);
25  CHECK(params.u(0) == Approx(actual.u(N - 1)));
26  CHECK(params.u(N - 1) == Approx(actual.u(0)));
27  CHECK(params.u.segment(1, N - 2).isApprox(actual.u.segment(1, N - 2)));
28  }
29 
30  SECTION("Two items out of order") {
31  order[0] = 0;
32  order[1] = 1;
33  order[2] = 1;
34  std::fill(order.begin() + 3, order.end(), 0);
35 
36  auto actual = params;
37  utilities::regroup(actual, order, 2);
38  CHECK(params.u(0) == Approx(actual.u(0)));
39  CHECK(params.u(1) == Approx(actual.u(N - 2)));
40  CHECK(params.u(2) == Approx(actual.u(N - 1)));
41  CHECK(params.u(3) == Approx(actual.u(1)));
42  CHECK(params.u(4) == Approx(actual.u(2)));
43  }
44 
45  SECTION("Three procs") {
46  order = {1, 0, 2, 2, 0};
47  auto actual = params;
48  utilities::regroup(actual, order, 3);
49  CHECK(actual.u(0) == Approx(params.u(N - 1)));
50  CHECK(actual.u(1) == Approx(params.u(1)));
51  CHECK(actual.u(2) == Approx(params.u(0)));
52  CHECK(actual.u(3) == Approx(params.u(3)));
53  CHECK(actual.u(4) == Approx(params.u(2)));
54  }
55 }
#define CHECK(CONDITION, ERROR)
Definition: casa.cc:6
void regroup(vis_params &uv_params, std::vector< t_int > &image_index, std::vector< t_int > const &groups_, const t_int max_groups)
Vector< t_complex > vis
Definition: uvw_utilities.h:22
Vector< t_complex > weights
Definition: uvw_utilities.h:23

References CHECK, purify::utilities::regroup(), 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.