Update Kokkos library in LAMMPS to v3.7.0

This commit is contained in:
Stan Gerald Moore
2022-10-04 14:04:40 -06:00
parent dd072f7e08
commit f9f9e44f2d
653 changed files with 41432 additions and 33597 deletions

View File

@ -42,7 +42,6 @@
//@HEADER
*/
#include <stdexcept>
#include <sstream>
#include <iostream>
#include <limits>
@ -82,7 +81,7 @@ class ReduceFunctor {
*/
KOKKOS_INLINE_FUNCTION
void join(volatile value_type& dst, const volatile value_type& src) const {
void join(value_type& dst, const value_type& src) const {
dst.value[0] += src.value[0];
dst.value[1] += src.value[1];
dst.value[2] += src.value[2];
@ -129,8 +128,7 @@ class ReduceFunctorFinalTag {
ReduceFunctorFinalTag(const size_type arg_nwork) : nwork(arg_nwork) {}
KOKKOS_INLINE_FUNCTION
void join(const ReducerTag, volatile value_type& dst,
const volatile value_type& src) const {
void join(const ReducerTag, value_type& dst, const value_type& src) const {
dst.value[0] += src.value[0];
dst.value[1] += src.value[1];
dst.value[2] += src.value[2];
@ -174,7 +172,7 @@ class RuntimeReduceFunctor {
}
KOKKOS_INLINE_FUNCTION
void join(volatile ScalarType dst[], const volatile ScalarType src[]) const {
void join(ScalarType dst[], const ScalarType src[]) const {
for (unsigned i = 0; i < value_count; ++i) dst[i] += src[i];
}
@ -218,7 +216,7 @@ class RuntimeReduceMinMax {
}
KOKKOS_INLINE_FUNCTION
void join(volatile ScalarType dst[], const volatile ScalarType src[]) const {
void join(ScalarType dst[], const ScalarType src[]) const {
for (unsigned i = 0; i < value_count; ++i) {
dst[i] = i % 2 ? (dst[i] < src[i] ? dst[i] : src[i]) // min
: (dst[i] > src[i] ? dst[i] : src[i]); // max
@ -634,21 +632,35 @@ TEST(TEST_CATEGORY, int_combined_reduce_mixed) {
constexpr uint64_t nw = 1000;
uint64_t nsum = (nw / 2) * (nw + 1);
auto result1_v = Kokkos::View<int64_t, Kokkos::HostSpace>{"result1_v"};
int64_t result2 = 0;
auto result3_v = Kokkos::View<int64_t, Kokkos::HostSpace>{"result3_v"};
Kokkos::parallel_reduce("int_combined-reduce_mixed",
Kokkos::RangePolicy<TEST_EXECSPACE>(0, nw),
functor_type(nw), result1_v, result2,
Kokkos::Sum<int64_t, Kokkos::HostSpace>{result3_v});
ASSERT_EQ(int64_t(nw), result1_v());
ASSERT_EQ(int64_t(nsum), result2);
ASSERT_EQ(int64_t(nsum), result3_v());
{
auto result1_v = Kokkos::View<int64_t, Kokkos::HostSpace>{"result1_v"};
int64_t result2 = 0;
auto result3_v = Kokkos::View<int64_t, Kokkos::HostSpace>{"result3_v"};
Kokkos::parallel_reduce("int_combined-reduce_mixed",
Kokkos::RangePolicy<TEST_EXECSPACE>(0, nw),
functor_type(nw), result1_v, result2,
Kokkos::Sum<int64_t, Kokkos::HostSpace>{result3_v});
ASSERT_EQ(int64_t(nw), result1_v());
ASSERT_EQ(int64_t(nsum), result2);
ASSERT_EQ(int64_t(nsum), result3_v());
}
{
using MemorySpace = typename TEST_EXECSPACE::memory_space;
auto result1_v = Kokkos::View<int64_t, MemorySpace>{"result1_v"};
int64_t result2 = 0;
auto result3_v = Kokkos::View<int64_t, MemorySpace>{"result3_v"};
Kokkos::parallel_reduce("int_combined-reduce_mixed",
Kokkos::RangePolicy<TEST_EXECSPACE>(0, nw),
functor_type(nw), result1_v, result2,
Kokkos::Sum<int64_t, MemorySpace>{result3_v});
int64_t result1;
Kokkos::deep_copy(result1, result1_v);
ASSERT_EQ(int64_t(nw), result1);
ASSERT_EQ(int64_t(nsum), result2);
int64_t result3;
Kokkos::deep_copy(result3, result3_v);
ASSERT_EQ(int64_t(nsum), result3);
}
}
#endif
} // namespace Test