Update Kokkos library in LAMMPS to v4.5.0
This commit is contained in:
@ -56,7 +56,18 @@ void test_offsetview_construction() {
|
||||
offset_view_type ov("firstOV", range0, range1);
|
||||
|
||||
ASSERT_EQ("firstOV", ov.label());
|
||||
ASSERT_EQ(2, ov.Rank);
|
||||
|
||||
#ifdef KOKKOS_ENABLE_DEPRECATION_WARNINGS
|
||||
KOKKOS_IMPL_DISABLE_DEPRECATED_WARNINGS_PUSH()
|
||||
#endif
|
||||
#ifdef KOKKOS_ENABLE_DEPRECATED_CODE_4
|
||||
ASSERT_EQ(2u, ov.Rank);
|
||||
#endif
|
||||
#ifdef KOKKOS_ENABLE_DEPRECATION_WARNINGS
|
||||
KOKKOS_IMPL_DISABLE_DEPRECATED_WARNINGS_POP()
|
||||
#endif
|
||||
|
||||
ASSERT_EQ(2u, ov.rank());
|
||||
|
||||
ASSERT_EQ(ov.begin(0), -1);
|
||||
ASSERT_EQ(ov.end(0), 4);
|
||||
@ -67,7 +78,6 @@ void test_offsetview_construction() {
|
||||
ASSERT_EQ(ov.extent(0), 5u);
|
||||
ASSERT_EQ(ov.extent(1), 5u);
|
||||
|
||||
#if defined(KOKKOS_ENABLE_CUDA_LAMBDA) || !defined(KOKKOS_ENABLE_CUDA)
|
||||
{
|
||||
Kokkos::Experimental::OffsetView<Scalar*, Device> offsetV1("OneDOffsetView",
|
||||
range0);
|
||||
@ -149,7 +159,6 @@ void test_offsetview_construction() {
|
||||
}
|
||||
|
||||
ASSERT_EQ(OVResult, answer) << "Bad data found in OffsetView";
|
||||
#endif
|
||||
|
||||
{
|
||||
offset_view_type ovCopy(ov);
|
||||
@ -184,7 +193,6 @@ void test_offsetview_construction() {
|
||||
range3_type rangePolicy3DZero(point3_type{{0, 0, 0}},
|
||||
point3_type{{extent0, extent1, extent2}});
|
||||
|
||||
#if defined(KOKKOS_ENABLE_CUDA_LAMBDA) || !defined(KOKKOS_ENABLE_CUDA)
|
||||
int view3DSum = 0;
|
||||
Kokkos::parallel_reduce(
|
||||
rangePolicy3DZero,
|
||||
@ -207,7 +215,6 @@ void test_offsetview_construction() {
|
||||
|
||||
ASSERT_EQ(view3DSum, offsetView3DSum)
|
||||
<< "construction of OffsetView from View and begins array broken.";
|
||||
#endif
|
||||
}
|
||||
view_type viewFromOV = ov.view();
|
||||
|
||||
@ -232,7 +239,6 @@ void test_offsetview_construction() {
|
||||
view_type aView("aView", ov.extent(0), ov.extent(1));
|
||||
Kokkos::deep_copy(aView, ov);
|
||||
|
||||
#if defined(KOKKOS_ENABLE_CUDA_LAMBDA) || !defined(KOKKOS_ENABLE_CUDA)
|
||||
int sum = 0;
|
||||
Kokkos::parallel_reduce(
|
||||
rangePolicy2D,
|
||||
@ -242,7 +248,6 @@ void test_offsetview_construction() {
|
||||
sum);
|
||||
|
||||
ASSERT_EQ(sum, 0) << "deep_copy(view, offsetView) broken.";
|
||||
#endif
|
||||
}
|
||||
|
||||
{ // test view to offsetview deep copy
|
||||
@ -251,7 +256,6 @@ void test_offsetview_construction() {
|
||||
Kokkos::deep_copy(aView, 99);
|
||||
Kokkos::deep_copy(ov, aView);
|
||||
|
||||
#if defined(KOKKOS_ENABLE_CUDA_LAMBDA) || !defined(KOKKOS_ENABLE_CUDA)
|
||||
int sum = 0;
|
||||
Kokkos::parallel_reduce(
|
||||
rangePolicy2D,
|
||||
@ -261,7 +265,6 @@ void test_offsetview_construction() {
|
||||
sum);
|
||||
|
||||
ASSERT_EQ(sum, 0) << "deep_copy(offsetView, view) broken.";
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -329,46 +332,131 @@ void test_offsetview_unmanaged_construction() {
|
||||
ASSERT_EQ(bb, ib);
|
||||
ASSERT_EQ(bb, ii);
|
||||
}
|
||||
}
|
||||
|
||||
template <typename Scalar, typename Device>
|
||||
void test_offsetview_unmanaged_construction_death() {
|
||||
// Preallocated memory (Only need a valid address for this test)
|
||||
Scalar s;
|
||||
|
||||
// Regular expression syntax on Windows is a pain. `.` does not match `\n`.
|
||||
// Feel free to make it work if you have time to spare.
|
||||
#ifdef _WIN32
|
||||
#define SKIP_REGEX_ON_WINDOWS(REGEX) ""
|
||||
#else
|
||||
#define SKIP_REGEX_ON_WINDOWS(REGEX) REGEX
|
||||
#endif
|
||||
|
||||
{
|
||||
using offset_view_type = Kokkos::Experimental::OffsetView<Scalar*, Device>;
|
||||
|
||||
// Range calculations must be positive
|
||||
ASSERT_NO_THROW(offset_view_type(&s, {0}, {1}));
|
||||
ASSERT_NO_THROW(offset_view_type(&s, {0}, {0}));
|
||||
ASSERT_THROW(offset_view_type(&s, {0}, {-1}), std::runtime_error);
|
||||
(void)offset_view_type(&s, {0}, {1});
|
||||
(void)offset_view_type(&s, {0}, {0});
|
||||
ASSERT_DEATH(
|
||||
offset_view_type(&s, {0}, {-1}),
|
||||
SKIP_REGEX_ON_WINDOWS(
|
||||
"Kokkos::Experimental::OffsetView ERROR: for unmanaged OffsetView"
|
||||
".*"
|
||||
"\\(ends\\[0\\] \\(-1\\) - begins\\[0\\] \\(0\\)\\) must be "
|
||||
"non-negative"));
|
||||
}
|
||||
|
||||
{
|
||||
using offset_view_type = Kokkos::Experimental::OffsetView<Scalar*, Device>;
|
||||
|
||||
// Range calculations must not overflow
|
||||
ASSERT_NO_THROW(offset_view_type(&s, {0}, {0x7fffffffffffffffl}));
|
||||
ASSERT_THROW(offset_view_type(&s, {-1}, {0x7fffffffffffffffl}),
|
||||
std::runtime_error);
|
||||
ASSERT_THROW(
|
||||
(void)offset_view_type(&s, {0}, {0x7fffffffffffffffl});
|
||||
ASSERT_DEATH(
|
||||
offset_view_type(&s, {-1}, {0x7fffffffffffffffl}),
|
||||
SKIP_REGEX_ON_WINDOWS(
|
||||
"Kokkos::Experimental::OffsetView ERROR: for unmanaged OffsetView"
|
||||
".*"
|
||||
"\\(ends\\[0\\] \\(9223372036854775807\\) - begins\\[0\\] "
|
||||
"\\(-1\\)\\) "
|
||||
"overflows"));
|
||||
ASSERT_DEATH(
|
||||
offset_view_type(&s, {-0x7fffffffffffffffl - 1}, {0x7fffffffffffffffl}),
|
||||
std::runtime_error);
|
||||
ASSERT_THROW(offset_view_type(&s, {-0x7fffffffffffffffl - 1}, {0}),
|
||||
std::runtime_error);
|
||||
SKIP_REGEX_ON_WINDOWS(
|
||||
"Kokkos::Experimental::OffsetView ERROR: for unmanaged OffsetView"
|
||||
".*"
|
||||
"\\(ends\\[0\\] \\(9223372036854775807\\) - begins\\[0\\] "
|
||||
"\\(-9223372036854775808\\)\\) "
|
||||
"overflows"));
|
||||
ASSERT_DEATH(
|
||||
offset_view_type(&s, {-0x7fffffffffffffffl - 1}, {0}),
|
||||
SKIP_REGEX_ON_WINDOWS(
|
||||
"Kokkos::Experimental::OffsetView ERROR: for unmanaged OffsetView"
|
||||
".*"
|
||||
"\\(ends\\[0\\] \\(0\\) - begins\\[0\\] "
|
||||
"\\(-9223372036854775808\\)\\) "
|
||||
"overflows"));
|
||||
}
|
||||
|
||||
{
|
||||
using offset_view_type = Kokkos::Experimental::OffsetView<Scalar**, Device>;
|
||||
|
||||
// Should throw when the rank of begins and/or ends doesn't match that of
|
||||
// OffsetView
|
||||
ASSERT_THROW(offset_view_type(&s, {0}, {1}), std::runtime_error);
|
||||
ASSERT_THROW(offset_view_type(&s, {0}, {1, 1}), std::runtime_error);
|
||||
ASSERT_THROW(offset_view_type(&s, {0}, {1, 1, 1}), std::runtime_error);
|
||||
ASSERT_THROW(offset_view_type(&s, {0, 0}, {1}), std::runtime_error);
|
||||
ASSERT_NO_THROW(offset_view_type(&s, {0, 0}, {1, 1}));
|
||||
ASSERT_THROW(offset_view_type(&s, {0, 0}, {1, 1, 1}), std::runtime_error);
|
||||
ASSERT_THROW(offset_view_type(&s, {0, 0, 0}, {1}), std::runtime_error);
|
||||
ASSERT_THROW(offset_view_type(&s, {0, 0, 0}, {1, 1}), std::runtime_error);
|
||||
ASSERT_THROW(offset_view_type(&s, {0, 0, 0}, {1, 1, 1}),
|
||||
std::runtime_error);
|
||||
// Should throw when the rank of begins and/or ends doesn't match that
|
||||
// of OffsetView
|
||||
ASSERT_DEATH(
|
||||
offset_view_type(&s, {0}, {1}),
|
||||
SKIP_REGEX_ON_WINDOWS(
|
||||
"Kokkos::Experimental::OffsetView ERROR: for unmanaged OffsetView"
|
||||
".*"
|
||||
"begins\\.size\\(\\) \\(1\\) != Rank \\(2\\)"
|
||||
".*"
|
||||
"ends\\.size\\(\\) \\(1\\) != Rank \\(2\\)"));
|
||||
ASSERT_DEATH(
|
||||
offset_view_type(&s, {0}, {1, 1}),
|
||||
SKIP_REGEX_ON_WINDOWS(
|
||||
"Kokkos::Experimental::OffsetView ERROR: for unmanaged OffsetView"
|
||||
".*"
|
||||
"begins\\.size\\(\\) \\(1\\) != Rank \\(2\\)"));
|
||||
ASSERT_DEATH(
|
||||
offset_view_type(&s, {0}, {1, 1, 1}),
|
||||
SKIP_REGEX_ON_WINDOWS(
|
||||
"Kokkos::Experimental::OffsetView ERROR: for unmanaged OffsetView"
|
||||
".*"
|
||||
"begins\\.size\\(\\) \\(1\\) != Rank \\(2\\)"
|
||||
".*"
|
||||
"ends\\.size\\(\\) \\(3\\) != Rank \\(2\\)"));
|
||||
ASSERT_DEATH(
|
||||
offset_view_type(&s, {0, 0}, {1}),
|
||||
SKIP_REGEX_ON_WINDOWS(
|
||||
"Kokkos::Experimental::OffsetView ERROR: for unmanaged OffsetView"
|
||||
".*"
|
||||
"ends\\.size\\(\\) \\(1\\) != Rank \\(2\\)"));
|
||||
(void)offset_view_type(&s, {0, 0}, {1, 1});
|
||||
ASSERT_DEATH(
|
||||
offset_view_type(&s, {0, 0}, {1, 1, 1}),
|
||||
SKIP_REGEX_ON_WINDOWS(
|
||||
"Kokkos::Experimental::OffsetView ERROR: for unmanaged OffsetView"
|
||||
".*"
|
||||
"ends\\.size\\(\\) \\(3\\) != Rank \\(2\\)"));
|
||||
ASSERT_DEATH(
|
||||
offset_view_type(&s, {0, 0, 0}, {1}),
|
||||
SKIP_REGEX_ON_WINDOWS(
|
||||
"Kokkos::Experimental::OffsetView ERROR: for unmanaged OffsetView"
|
||||
".*"
|
||||
"begins\\.size\\(\\) \\(3\\) != Rank \\(2\\)"
|
||||
".*"
|
||||
"ends\\.size\\(\\) \\(1\\) != Rank \\(2\\)"));
|
||||
ASSERT_DEATH(
|
||||
offset_view_type(&s, {0, 0, 0}, {1, 1}),
|
||||
SKIP_REGEX_ON_WINDOWS(
|
||||
"Kokkos::Experimental::OffsetView ERROR: for unmanaged OffsetView"
|
||||
".*"
|
||||
"begins\\.size\\(\\) \\(3\\) != Rank \\(2\\)"));
|
||||
ASSERT_DEATH(
|
||||
offset_view_type(&s, {0, 0, 0}, {1, 1, 1}),
|
||||
SKIP_REGEX_ON_WINDOWS(
|
||||
"Kokkos::Experimental::OffsetView ERROR: for unmanaged OffsetView"
|
||||
".*"
|
||||
"begins\\.size\\(\\) \\(3\\) != Rank \\(2\\)"
|
||||
".*"
|
||||
"ends\\.size\\(\\) \\(3\\) != Rank \\(2\\)"));
|
||||
}
|
||||
#undef SKIP_REGEX_ON_WINDOWS
|
||||
}
|
||||
|
||||
template <typename Scalar, typename Device>
|
||||
@ -377,8 +465,8 @@ void test_offsetview_subview() {
|
||||
Kokkos::Experimental::OffsetView<Scalar*, Device> sliceMe("offsetToSlice",
|
||||
{-10, 20});
|
||||
{
|
||||
auto offsetSubviewa = Kokkos::Experimental::subview(sliceMe, 0);
|
||||
ASSERT_EQ(offsetSubviewa.Rank, 0) << "subview of offset is broken.";
|
||||
auto offsetSubview = Kokkos::Experimental::subview(sliceMe, 0);
|
||||
ASSERT_EQ(offsetSubview.rank(), 0u) << "subview of offset is broken.";
|
||||
}
|
||||
}
|
||||
{ // test subview 2
|
||||
@ -387,13 +475,13 @@ void test_offsetview_subview() {
|
||||
{
|
||||
auto offsetSubview =
|
||||
Kokkos::Experimental::subview(sliceMe, Kokkos::ALL(), -2);
|
||||
ASSERT_EQ(offsetSubview.Rank, 1) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview.rank(), 1u) << "subview of offset is broken.";
|
||||
}
|
||||
|
||||
{
|
||||
auto offsetSubview =
|
||||
Kokkos::Experimental::subview(sliceMe, 0, Kokkos::ALL());
|
||||
ASSERT_EQ(offsetSubview.Rank, 1) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview.rank(), 1u) << "subview of offset is broken.";
|
||||
}
|
||||
}
|
||||
|
||||
@ -406,30 +494,29 @@ void test_offsetview_subview() {
|
||||
{
|
||||
auto offsetSubview = Kokkos::Experimental::subview(sliceMe, Kokkos::ALL(),
|
||||
Kokkos::ALL(), 0);
|
||||
ASSERT_EQ(offsetSubview.Rank, 2) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview.rank(), 2u) << "subview of offset is broken.";
|
||||
}
|
||||
{
|
||||
auto offsetSubview = Kokkos::Experimental::subview(sliceMe, Kokkos::ALL(),
|
||||
0, Kokkos::ALL());
|
||||
ASSERT_EQ(offsetSubview.Rank, 2) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview.rank(), 2u) << "subview of offset is broken.";
|
||||
}
|
||||
|
||||
{
|
||||
auto offsetSubview = Kokkos::Experimental::subview(
|
||||
sliceMe, 0, Kokkos::ALL(), Kokkos::ALL());
|
||||
ASSERT_EQ(offsetSubview.Rank, 2) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview.rank(), 2u) << "subview of offset is broken.";
|
||||
}
|
||||
{
|
||||
auto offsetSubview = Kokkos::Experimental::subview(
|
||||
sliceMe, 0, Kokkos::ALL(), Kokkos::make_pair(-30, -21));
|
||||
ASSERT_EQ(offsetSubview.Rank, 2) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview.rank(), 2u) << "subview of offset is broken.";
|
||||
|
||||
ASSERT_EQ(offsetSubview.begin(0), -20);
|
||||
ASSERT_EQ(offsetSubview.end(0), 31);
|
||||
ASSERT_EQ(offsetSubview.begin(1), 0);
|
||||
ASSERT_EQ(offsetSubview.end(1), 9);
|
||||
|
||||
#if defined(KOKKOS_ENABLE_CUDA_LAMBDA) || !defined(KOKKOS_ENABLE_CUDA)
|
||||
using range_type = Kokkos::MDRangePolicy<Device, Kokkos::Rank<2>,
|
||||
Kokkos::IndexType<int> >;
|
||||
using point_type = typename range_type::point_type;
|
||||
@ -455,25 +542,24 @@ void test_offsetview_subview() {
|
||||
sum);
|
||||
|
||||
ASSERT_EQ(sum, 6 * (e0 - b0) * (e1 - b1));
|
||||
#endif
|
||||
}
|
||||
|
||||
// slice 2
|
||||
{
|
||||
auto offsetSubview =
|
||||
Kokkos::Experimental::subview(sliceMe, Kokkos::ALL(), 0, 0);
|
||||
ASSERT_EQ(offsetSubview.Rank, 1) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview.rank(), 1u) << "subview of offset is broken.";
|
||||
}
|
||||
{
|
||||
auto offsetSubview =
|
||||
Kokkos::Experimental::subview(sliceMe, 0, 0, Kokkos::ALL());
|
||||
ASSERT_EQ(offsetSubview.Rank, 1) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview.rank(), 1u) << "subview of offset is broken.";
|
||||
}
|
||||
|
||||
{
|
||||
auto offsetSubview =
|
||||
Kokkos::Experimental::subview(sliceMe, 0, Kokkos::ALL(), 0);
|
||||
ASSERT_EQ(offsetSubview.Rank, 1) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview.rank(), 1u) << "subview of offset is broken.";
|
||||
}
|
||||
}
|
||||
|
||||
@ -486,73 +572,72 @@ void test_offsetview_subview() {
|
||||
{
|
||||
auto offsetSubview = Kokkos::Experimental::subview(
|
||||
sliceMe, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), 0);
|
||||
ASSERT_EQ(offsetSubview.Rank, 3) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview.rank(), 3u) << "subview of offset is broken.";
|
||||
}
|
||||
{
|
||||
auto offsetSubview = Kokkos::Experimental::subview(
|
||||
sliceMe, Kokkos::ALL(), Kokkos::ALL(), 0, Kokkos::ALL());
|
||||
ASSERT_EQ(offsetSubview.Rank, 3) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview.rank(), 3u) << "subview of offset is broken.";
|
||||
}
|
||||
{
|
||||
auto offsetSubview = Kokkos::Experimental::subview(
|
||||
sliceMe, Kokkos::ALL(), 0, Kokkos::ALL(), Kokkos::ALL());
|
||||
ASSERT_EQ(offsetSubview.Rank, 3) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview.rank(), 3u) << "subview of offset is broken.";
|
||||
}
|
||||
{
|
||||
auto offsetSubview = Kokkos::Experimental::subview(
|
||||
sliceMe, 0, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL());
|
||||
ASSERT_EQ(offsetSubview.Rank, 3) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview.rank(), 3u) << "subview of offset is broken.";
|
||||
}
|
||||
|
||||
// slice 2
|
||||
auto offsetSubview2a = Kokkos::Experimental::subview(sliceMe, Kokkos::ALL(),
|
||||
Kokkos::ALL(), 0, 0);
|
||||
ASSERT_EQ(offsetSubview2a.Rank, 2) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview2a.rank(), 2u) << "subview of offset is broken.";
|
||||
{
|
||||
auto offsetSubview2b = Kokkos::Experimental::subview(
|
||||
sliceMe, Kokkos::ALL(), 0, Kokkos::ALL(), 0);
|
||||
ASSERT_EQ(offsetSubview2b.Rank, 2) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview2b.rank(), 2u) << "subview of offset is broken.";
|
||||
}
|
||||
{
|
||||
auto offsetSubview2b = Kokkos::Experimental::subview(
|
||||
sliceMe, Kokkos::ALL(), 0, 0, Kokkos::ALL());
|
||||
ASSERT_EQ(offsetSubview2b.Rank, 2) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview2b.rank(), 2u) << "subview of offset is broken.";
|
||||
}
|
||||
{
|
||||
auto offsetSubview2b = Kokkos::Experimental::subview(
|
||||
sliceMe, 0, Kokkos::ALL(), 0, Kokkos::ALL());
|
||||
ASSERT_EQ(offsetSubview2b.Rank, 2) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview2b.rank(), 2u) << "subview of offset is broken.";
|
||||
}
|
||||
{
|
||||
auto offsetSubview2b = Kokkos::Experimental::subview(
|
||||
sliceMe, 0, 0, Kokkos::ALL(), Kokkos::ALL());
|
||||
ASSERT_EQ(offsetSubview2b.Rank, 2) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview2b.rank(), 2u) << "subview of offset is broken.";
|
||||
}
|
||||
// slice 3
|
||||
{
|
||||
auto offsetSubview =
|
||||
Kokkos::Experimental::subview(sliceMe, Kokkos::ALL(), 0, 0, 0);
|
||||
ASSERT_EQ(offsetSubview.Rank, 1) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview.rank(), 1u) << "subview of offset is broken.";
|
||||
}
|
||||
{
|
||||
auto offsetSubview =
|
||||
Kokkos::Experimental::subview(sliceMe, 0, Kokkos::ALL(), 0, 0);
|
||||
ASSERT_EQ(offsetSubview.Rank, 1) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview.rank(), 1u) << "subview of offset is broken.";
|
||||
}
|
||||
{
|
||||
auto offsetSubview =
|
||||
Kokkos::Experimental::subview(sliceMe, 0, 0, Kokkos::ALL(), 0);
|
||||
ASSERT_EQ(offsetSubview.Rank, 1) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview.rank(), 1u) << "subview of offset is broken.";
|
||||
}
|
||||
{
|
||||
auto offsetSubview =
|
||||
Kokkos::Experimental::subview(sliceMe, 0, 0, 0, Kokkos::ALL());
|
||||
ASSERT_EQ(offsetSubview.Rank, 1) << "subview of offset is broken.";
|
||||
ASSERT_EQ(offsetSubview.rank(), 1u) << "subview of offset is broken.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(KOKKOS_ENABLE_CUDA_LAMBDA) || !defined(KOKKOS_ENABLE_CUDA)
|
||||
template <class InputIt, class T, class BinaryOperation>
|
||||
KOKKOS_INLINE_FUNCTION T std_accumulate(InputIt first, InputIt last, T init,
|
||||
BinaryOperation op) {
|
||||
@ -586,6 +671,7 @@ void test_offsetview_offsets_rank1() {
|
||||
KOKKOS_LAMBDA(const int ii, int& lerrors) {
|
||||
offset_view_type ov(v, {ii});
|
||||
lerrors += (ov(3) != element({3 - ii}));
|
||||
lerrors += (ov[3] != element({3 - ii}));
|
||||
},
|
||||
errors);
|
||||
|
||||
@ -655,7 +741,6 @@ void test_offsetview_offsets_rank3() {
|
||||
|
||||
ASSERT_EQ(0, errors);
|
||||
}
|
||||
#endif
|
||||
|
||||
TEST(TEST_CATEGORY, offsetview_construction) {
|
||||
test_offsetview_construction<int, TEST_EXECSPACE>();
|
||||
@ -665,11 +750,15 @@ TEST(TEST_CATEGORY, offsetview_unmanaged_construction) {
|
||||
test_offsetview_unmanaged_construction<int, TEST_EXECSPACE>();
|
||||
}
|
||||
|
||||
TEST(TEST_CATEGORY_DEATH, offsetview_unmanaged_construction) {
|
||||
::testing::FLAGS_gtest_death_test_style = "threadsafe";
|
||||
test_offsetview_unmanaged_construction_death<int, TEST_EXECSPACE>();
|
||||
}
|
||||
|
||||
TEST(TEST_CATEGORY, offsetview_subview) {
|
||||
test_offsetview_subview<int, TEST_EXECSPACE>();
|
||||
}
|
||||
|
||||
#if defined(KOKKOS_ENABLE_CUDA_LAMBDA) || !defined(KOKKOS_ENABLE_CUDA)
|
||||
TEST(TEST_CATEGORY, offsetview_offsets_rank1) {
|
||||
test_offsetview_offsets_rank1<TEST_EXECSPACE>();
|
||||
}
|
||||
@ -681,7 +770,6 @@ TEST(TEST_CATEGORY, offsetview_offsets_rank2) {
|
||||
TEST(TEST_CATEGORY, offsetview_offsets_rank3) {
|
||||
test_offsetview_offsets_rank3<TEST_EXECSPACE>();
|
||||
}
|
||||
#endif
|
||||
|
||||
} // namespace Test
|
||||
|
||||
|
||||
Reference in New Issue
Block a user