Update Kokkos library in LAMMPS to v4.1.0
This commit is contained in:
@ -157,7 +157,7 @@ void verify_data(ViewType1 data_view, // contains data
|
||||
// << gold_h(i) << " " << test_view_h(i) << " "
|
||||
// << std::abs(gold_h(i) - test_view_h(i)) << std::endl;
|
||||
if (std::is_same<gold_view_value_type, int>::value) {
|
||||
EXPECT_EQ(gold_h(i), test_view_h(i));
|
||||
ASSERT_EQ(gold_h(i), test_view_h(i));
|
||||
} else {
|
||||
const auto error =
|
||||
std::abs(static_cast<double>(gold_h(i) - test_view_h(i)));
|
||||
@ -213,7 +213,7 @@ void run_single_scenario_default_op(const InfoType& scenario_info,
|
||||
auto r = KE::exclusive_scan(exespace(), KE::cbegin(view_from),
|
||||
KE::cend(view_from), KE::begin(view_dest),
|
||||
init_value);
|
||||
EXPECT_EQ(r, KE::end(view_dest));
|
||||
ASSERT_EQ(r, KE::end(view_dest));
|
||||
verify_data(view_from, view_dest, init_value, default_op());
|
||||
}
|
||||
|
||||
@ -222,14 +222,14 @@ void run_single_scenario_default_op(const InfoType& scenario_info,
|
||||
auto r = KE::exclusive_scan("label", exespace(), KE::cbegin(view_from),
|
||||
KE::cend(view_from), KE::begin(view_dest),
|
||||
init_value);
|
||||
EXPECT_EQ(r, KE::end(view_dest));
|
||||
ASSERT_EQ(r, KE::end(view_dest));
|
||||
verify_data(view_from, view_dest, init_value, default_op());
|
||||
}
|
||||
|
||||
{
|
||||
fill_zero(view_dest);
|
||||
auto r = KE::exclusive_scan(exespace(), view_from, view_dest, init_value);
|
||||
EXPECT_EQ(r, KE::end(view_dest));
|
||||
ASSERT_EQ(r, KE::end(view_dest));
|
||||
verify_data(view_from, view_dest, init_value, default_op());
|
||||
}
|
||||
|
||||
@ -237,7 +237,7 @@ void run_single_scenario_default_op(const InfoType& scenario_info,
|
||||
fill_zero(view_dest);
|
||||
auto r = KE::exclusive_scan("label", exespace(), view_from, view_dest,
|
||||
init_value);
|
||||
EXPECT_EQ(r, KE::end(view_dest));
|
||||
ASSERT_EQ(r, KE::end(view_dest));
|
||||
verify_data(view_from, view_dest, init_value, default_op());
|
||||
}
|
||||
|
||||
@ -263,7 +263,7 @@ void run_single_scenario_custom_op(const InfoType& scenario_info,
|
||||
auto r = KE::exclusive_scan(exespace(), KE::cbegin(view_from),
|
||||
KE::cend(view_from), KE::begin(view_dest),
|
||||
init_value, bop);
|
||||
EXPECT_EQ(r, KE::end(view_dest));
|
||||
ASSERT_EQ(r, KE::end(view_dest));
|
||||
verify_data(view_from, view_dest, init_value, bop);
|
||||
}
|
||||
|
||||
@ -272,7 +272,7 @@ void run_single_scenario_custom_op(const InfoType& scenario_info,
|
||||
auto r = KE::exclusive_scan("label", exespace(), KE::cbegin(view_from),
|
||||
KE::cend(view_from), KE::begin(view_dest),
|
||||
init_value, bop);
|
||||
EXPECT_EQ(r, KE::end(view_dest));
|
||||
ASSERT_EQ(r, KE::end(view_dest));
|
||||
verify_data(view_from, view_dest, init_value, bop);
|
||||
}
|
||||
|
||||
@ -280,7 +280,7 @@ void run_single_scenario_custom_op(const InfoType& scenario_info,
|
||||
fill_zero(view_dest);
|
||||
auto r =
|
||||
KE::exclusive_scan(exespace(), view_from, view_dest, init_value, bop);
|
||||
EXPECT_EQ(r, KE::end(view_dest));
|
||||
ASSERT_EQ(r, KE::end(view_dest));
|
||||
verify_data(view_from, view_dest, init_value, bop);
|
||||
}
|
||||
|
||||
@ -288,7 +288,7 @@ void run_single_scenario_custom_op(const InfoType& scenario_info,
|
||||
fill_zero(view_dest);
|
||||
auto r = KE::exclusive_scan("label", exespace(), view_from, view_dest,
|
||||
init_value, bop);
|
||||
EXPECT_EQ(r, KE::end(view_dest));
|
||||
ASSERT_EQ(r, KE::end(view_dest));
|
||||
verify_data(view_from, view_dest, init_value, bop);
|
||||
}
|
||||
|
||||
@ -344,6 +344,46 @@ TEST(std_algorithms_numeric_ops_test, exclusive_scan) {
|
||||
run_exclusive_scan_all_scenarios<StridedThreeTag, CustomValueType>();
|
||||
}
|
||||
|
||||
TEST(std_algorithms_numeric_ops_test, exclusive_scan_functor) {
|
||||
int dummy = 0;
|
||||
using view_type = Kokkos::View<int*, exespace>;
|
||||
view_type dummy_view("dummy_view", 0);
|
||||
using functor_type = Kokkos::Experimental::Impl::ExclusiveScanDefaultFunctor<
|
||||
exespace, int, int, view_type, view_type>;
|
||||
functor_type functor(dummy, dummy_view, dummy_view);
|
||||
using value_type = functor_type::value_type;
|
||||
|
||||
value_type value1;
|
||||
functor.init(value1);
|
||||
ASSERT_EQ(value1.val, 0);
|
||||
ASSERT_EQ(value1.is_initial, true);
|
||||
|
||||
value_type value2;
|
||||
value2.val = 1;
|
||||
value2.is_initial = false;
|
||||
functor.join(value1, value2);
|
||||
ASSERT_EQ(value1.val, 1);
|
||||
ASSERT_EQ(value1.is_initial, false);
|
||||
|
||||
functor.init(value1);
|
||||
functor.join(value2, value1);
|
||||
ASSERT_EQ(value2.val, 1);
|
||||
ASSERT_EQ(value2.is_initial, false);
|
||||
|
||||
functor.init(value2);
|
||||
functor.join(value2, value1);
|
||||
ASSERT_EQ(value2.val, 0);
|
||||
ASSERT_EQ(value2.is_initial, true);
|
||||
|
||||
value1.val = 1;
|
||||
value1.is_initial = false;
|
||||
value2.val = 2;
|
||||
value2.is_initial = false;
|
||||
functor.join(value2, value1);
|
||||
ASSERT_EQ(value2.val, 3);
|
||||
ASSERT_EQ(value2.is_initial, false);
|
||||
}
|
||||
|
||||
} // namespace EScan
|
||||
} // namespace stdalgos
|
||||
} // namespace Test
|
||||
|
||||
Reference in New Issue
Block a user