Update Kokkos library in LAMMPS to v4.6.0

This commit is contained in:
Stan Moore
2025-03-28 15:29:14 -06:00
parent 48893236ec
commit b7b9a4a599
384 changed files with 13243 additions and 9477 deletions

View File

@ -270,18 +270,19 @@ void test_offsetview_construction() {
template <typename Scalar, typename Device>
void test_offsetview_unmanaged_construction() {
// Preallocated memory (Only need a valid address for this test)
Scalar s;
// Preallocated memory
Kokkos::View<Scalar, Device> s("s");
Scalar* ptr = s.data(); // obtain a pointer into the right address space
{
// Constructing an OffsetView directly around our preallocated memory
Kokkos::Array<int64_t, 1> begins1{{2}};
Kokkos::Array<int64_t, 1> ends1{{3}};
Kokkos::Experimental::OffsetView<Scalar*, Device> ov1(&s, begins1, ends1);
Kokkos::Experimental::OffsetView<Scalar*, Device> ov1(ptr, begins1, ends1);
// Constructing an OffsetView around an unmanaged View of our preallocated
// memory
Kokkos::View<Scalar*, Device> v1(&s, ends1[0] - begins1[0]);
Kokkos::View<Scalar*, Device> v1(ptr, ends1[0] - begins1[0]);
Kokkos::Experimental::OffsetView<Scalar*, Device> ovv1(v1, begins1);
// They should match
@ -292,9 +293,9 @@ void test_offsetview_unmanaged_construction() {
{
Kokkos::Array<int64_t, 2> begins2{{-2, -7}};
Kokkos::Array<int64_t, 2> ends2{{5, -3}};
Kokkos::Experimental::OffsetView<Scalar**, Device> ov2(&s, begins2, ends2);
Kokkos::Experimental::OffsetView<Scalar**, Device> ov2(ptr, begins2, ends2);
Kokkos::View<Scalar**, Device> v2(&s, ends2[0] - begins2[0],
Kokkos::View<Scalar**, Device> v2(ptr, ends2[0] - begins2[0],
ends2[1] - begins2[1]);
Kokkos::Experimental::OffsetView<Scalar**, Device> ovv2(v2, begins2);
@ -305,10 +306,10 @@ void test_offsetview_unmanaged_construction() {
{
Kokkos::Array<int64_t, 3> begins3{{2, 3, 5}};
Kokkos::Array<int64_t, 3> ends3{{7, 11, 13}};
Kokkos::Experimental::OffsetView<Scalar***, Device> ovv3(&s, begins3,
Kokkos::Experimental::OffsetView<Scalar***, Device> ovv3(ptr, begins3,
ends3);
Kokkos::View<Scalar***, Device> v3(&s, ends3[0] - begins3[0],
Kokkos::View<Scalar***, Device> v3(ptr, ends3[0] - begins3[0],
ends3[1] - begins3[1],
ends3[2] - begins3[2]);
Kokkos::Experimental::OffsetView<Scalar***, Device> ov3(v3, begins3);
@ -323,10 +324,10 @@ void test_offsetview_unmanaged_construction() {
Kokkos::Array<int64_t, 1> begins{{-3}};
Kokkos::Array<int64_t, 1> ends{{2}};
Kokkos::Experimental::OffsetView<Scalar*, Device> bb(&s, begins, ends);
Kokkos::Experimental::OffsetView<Scalar*, Device> bi(&s, begins, {2});
Kokkos::Experimental::OffsetView<Scalar*, Device> ib(&s, {-3}, ends);
Kokkos::Experimental::OffsetView<Scalar*, Device> ii(&s, {-3}, {2});
Kokkos::Experimental::OffsetView<Scalar*, Device> bb(ptr, begins, ends);
Kokkos::Experimental::OffsetView<Scalar*, Device> bi(ptr, begins, {2});
Kokkos::Experimental::OffsetView<Scalar*, Device> ib(ptr, {-3}, ends);
Kokkos::Experimental::OffsetView<Scalar*, Device> ii(ptr, {-3}, {2});
ASSERT_EQ(bb, bi);
ASSERT_EQ(bb, ib);
@ -336,8 +337,9 @@ void test_offsetview_unmanaged_construction() {
template <typename Scalar, typename Device>
void test_offsetview_unmanaged_construction_death() {
// Preallocated memory (Only need a valid address for this test)
Scalar s;
// Preallocated memory
Kokkos::View<Scalar, Device> s("s");
Scalar* ptr = s.data(); // obtain a pointer into the right address space
// Regular expression syntax on Windows is a pain. `.` does not match `\n`.
// Feel free to make it work if you have time to spare.
@ -351,10 +353,10 @@ void test_offsetview_unmanaged_construction_death() {
using offset_view_type = Kokkos::Experimental::OffsetView<Scalar*, Device>;
// Range calculations must be positive
(void)offset_view_type(&s, {0}, {1});
(void)offset_view_type(&s, {0}, {0});
(void)offset_view_type(ptr, {0}, {1});
(void)offset_view_type(ptr, {0}, {0});
ASSERT_DEATH(
offset_view_type(&s, {0}, {-1}),
offset_view_type(ptr, {0}, {-1}),
SKIP_REGEX_ON_WINDOWS(
"Kokkos::Experimental::OffsetView ERROR: for unmanaged OffsetView"
".*"
@ -366,9 +368,9 @@ void test_offsetview_unmanaged_construction_death() {
using offset_view_type = Kokkos::Experimental::OffsetView<Scalar*, Device>;
// Range calculations must not overflow
(void)offset_view_type(&s, {0}, {0x7fffffffffffffffl});
(void)offset_view_type(ptr, {0}, {0x7fffffffffffffffl});
ASSERT_DEATH(
offset_view_type(&s, {-1}, {0x7fffffffffffffffl}),
offset_view_type(ptr, {-1}, {0x7fffffffffffffffl}),
SKIP_REGEX_ON_WINDOWS(
"Kokkos::Experimental::OffsetView ERROR: for unmanaged OffsetView"
".*"
@ -376,7 +378,8 @@ void test_offsetview_unmanaged_construction_death() {
"\\(-1\\)\\) "
"overflows"));
ASSERT_DEATH(
offset_view_type(&s, {-0x7fffffffffffffffl - 1}, {0x7fffffffffffffffl}),
offset_view_type(ptr, {-0x7fffffffffffffffl - 1},
{0x7fffffffffffffffl}),
SKIP_REGEX_ON_WINDOWS(
"Kokkos::Experimental::OffsetView ERROR: for unmanaged OffsetView"
".*"
@ -384,7 +387,7 @@ void test_offsetview_unmanaged_construction_death() {
"\\(-9223372036854775808\\)\\) "
"overflows"));
ASSERT_DEATH(
offset_view_type(&s, {-0x7fffffffffffffffl - 1}, {0}),
offset_view_type(ptr, {-0x7fffffffffffffffl - 1}, {0}),
SKIP_REGEX_ON_WINDOWS(
"Kokkos::Experimental::OffsetView ERROR: for unmanaged OffsetView"
".*"
@ -399,7 +402,7 @@ void test_offsetview_unmanaged_construction_death() {
// Should throw when the rank of begins and/or ends doesn't match that
// of OffsetView
ASSERT_DEATH(
offset_view_type(&s, {0}, {1}),
offset_view_type(ptr, {0}, {1}),
SKIP_REGEX_ON_WINDOWS(
"Kokkos::Experimental::OffsetView ERROR: for unmanaged OffsetView"
".*"
@ -407,13 +410,13 @@ void test_offsetview_unmanaged_construction_death() {
".*"
"ends\\.size\\(\\) \\(1\\) != Rank \\(2\\)"));
ASSERT_DEATH(
offset_view_type(&s, {0}, {1, 1}),
offset_view_type(ptr, {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}),
offset_view_type(ptr, {0}, {1, 1, 1}),
SKIP_REGEX_ON_WINDOWS(
"Kokkos::Experimental::OffsetView ERROR: for unmanaged OffsetView"
".*"
@ -421,20 +424,20 @@ void test_offsetview_unmanaged_construction_death() {
".*"
"ends\\.size\\(\\) \\(3\\) != Rank \\(2\\)"));
ASSERT_DEATH(
offset_view_type(&s, {0, 0}, {1}),
offset_view_type(ptr, {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});
(void)offset_view_type(ptr, {0, 0}, {1, 1});
ASSERT_DEATH(
offset_view_type(&s, {0, 0}, {1, 1, 1}),
offset_view_type(ptr, {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}),
offset_view_type(ptr, {0, 0, 0}, {1}),
SKIP_REGEX_ON_WINDOWS(
"Kokkos::Experimental::OffsetView ERROR: for unmanaged OffsetView"
".*"
@ -442,13 +445,13 @@ void test_offsetview_unmanaged_construction_death() {
".*"
"ends\\.size\\(\\) \\(1\\) != Rank \\(2\\)"));
ASSERT_DEATH(
offset_view_type(&s, {0, 0, 0}, {1, 1}),
offset_view_type(ptr, {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}),
offset_view_type(ptr, {0, 0, 0}, {1, 1, 1}),
SKIP_REGEX_ON_WINDOWS(
"Kokkos::Experimental::OffsetView ERROR: for unmanaged OffsetView"
".*"