12 auto const world = mpi::Communicator::World();
14 CAPTURE(serial.size());
15 CAPTURE(world.size());
16 auto const leftover = serial.size() % world.size();
18 world.rank() * (serial.size() / world.size()) + std::min(world.rank(), leftover);
19 auto const end = start + (serial.size() / world.size()) +
20 ((1 <= leftover and leftover > world.rank()) ? 1 : 0);
24 auto constexpr Nx = 32;
25 auto constexpr Ny = 32;
26 auto const psi_serial = linear_transform<t_real>(serial, Nx, Ny);
27 auto const psi_parallel = linear_transform<t_real>(parallel, Nx, Ny, world);
29 SECTION(
"Signal to Coefficients") {
32 (psi_serial.adjoint() * signal).segment(start * Nx * Ny, (end - start) * Nx * Ny);
33 Vector<t_real> const para_coeffs = psi_parallel.adjoint() * signal;
36 CHECK(serial_coeffs.isApprox(para_coeffs));
39 SECTION(
"Coefficients to Signal") {
40 auto const coefficients =
44 psi_parallel * coefficients.segment(start * Nx * Ny, (end - start) * Nx * Ny);
45 CHECK(serial_signal.isApprox(para_signal));
Sparsity Averaging Reweighted Analysis.
Eigen::Matrix< T, Eigen::Dynamic, 1 > Vector
A vector of a given type.