66BOOST_AUTO_TEST_SUITE (retile_suite)
77
88BOOST_AUTO_TEST_CASE(retile_tensor) {
9- TA::detail::matrix_il<double > some_values = {
10- {0.1 , 0.2 , 0.3 , 0.4 , 0.5 },
11- {0.6 , 0.7 , 0.8 , 0.9 , 1.0 },
12- {1.1 , 1.2 , 1.3 , 1.4 , 1.5 },
13- {1.6 , 1.7 , 1.8 , 1.9 , 2.0 },
14- {2.1 , 2.2 , 2.3 , 2.4 , 2.5 }
15- };
16-
17- auto range0 = TA::TiledRange1 (0 , 3 , 5 );
18- auto range1 = TA::TiledRange1 (0 , 4 , 5 );
19- auto trange = TA::TiledRange ({range0, range1});
20-
21- TA::TArrayD default_dense (*GlobalFixture::world, some_values);
22- TA::TSpArrayD default_sparse (*GlobalFixture::world, some_values);
23-
24- auto result_dense = retile (default_dense, trange);
25- auto result_sparse = retile (default_sparse, trange);
26-
27- BOOST_CHECK_EQUAL (result_dense.trange (), trange);
28- BOOST_CHECK_EQUAL (result_sparse.trange (), trange);
9+ TA::detail::matrix_il<double > some_values = {{0.1 , 0.2 , 0.3 , 0.4 , 0.5 },
10+ {0.6 , 0.7 , 0.8 , 0.9 , 1.0 },
11+ {1.1 , 1.2 , 1.3 , 1.4 , 1.5 },
12+ {1.6 , 1.7 , 1.8 , 1.9 , 2.0 },
13+ {2.1 , 2.2 , 2.3 , 2.4 , 2.5 }};
14+
15+ auto range0 = TA::TiledRange1 (0 , 3 , 5 );
16+ auto range1 = TA::TiledRange1 (0 , 4 , 5 );
17+ auto trange = TA::TiledRange ({range0, range1});
18+
19+ TA::TArrayD default_dense (*GlobalFixture::world, some_values);
20+ TA::TSpArrayD default_sparse (*GlobalFixture::world, some_values);
21+
22+ auto result_dense = retile (default_dense, trange);
23+ auto result_sparse = retile (default_sparse, trange);
24+
25+ BOOST_CHECK_EQUAL (result_dense.trange (), trange);
26+ BOOST_CHECK_EQUAL (result_sparse.trange (), trange);
2927}
3028
3129BOOST_AUTO_TEST_CASE (retile_more) {
@@ -69,17 +67,20 @@ BOOST_AUTO_TEST_CASE(retile_more) {
6967 return tile.norm ();
7068 };
7169
70+ auto arr_source0 =
71+ TA::make_array<ArrayT>(world, tr_source, set_random_tensor_tile);
72+ auto arr_target0 = TA::retile (arr_source0, tr_target);
73+
7274 auto get_elem = [](auto const & arr, auto const & eix) {
7375 auto tix = arr.trange ().element_to_tile (eix);
7476 auto && tile = arr.find (tix).get (false );
7577 return tile (eix);
7678 };
7779
78- auto arr_source0 =
79- TA::make_array<ArrayT>(world, tr_source, set_random_tensor_tile);
80- auto arr_target0 = TA::retile (arr_source0, tr_target);
81-
8280 for (auto && eix : elem_rng) {
81+ auto tix = arr_source0.trange ().element_to_tile (eix);
82+ BOOST_REQUIRE (arr_source0.is_zero (tix) == arr_target0.is_zero (tix));
83+ if (arr_source0.is_zero (tix)) continue ;
8384 BOOST_REQUIRE (get_elem (arr_source0, eix) == get_elem (arr_target0, eix));
8485 }
8586
@@ -94,8 +95,11 @@ BOOST_AUTO_TEST_CASE(retile_more) {
9495 world.gop .fence ();
9596
9697 for (auto && eix : elem_rng) {
98+ auto tix = arr_source.trange ().element_to_tile (eix);
99+ BOOST_REQUIRE (arr_source.is_zero (tix) == arr_target.is_zero (tix));
100+ if (arr_source.is_zero (tix)) continue ;
97101 BOOST_REQUIRE (get_elem (arr_source, eix) == get_elem (arr_target, eix));
98102 }
99103}
100104
101- BOOST_AUTO_TEST_SUITE_END ()
105+ BOOST_AUTO_TEST_SUITE_END ()
0 commit comments