Skip to content

Commit

Permalink
Changed gen ctor usage to pass in KOKKOS_LAMBDA
Browse files Browse the repository at this point in the history
  • Loading branch information
ldh4 committed Aug 24, 2023
1 parent c740f55 commit b35c741
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 11 deletions.
4 changes: 2 additions & 2 deletions simd/src/Kokkos_SIMD_Scalar.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class simd_mask<T, simd_abi::scalar> {
value_type, G, std::integral_constant<bool, false>>,
bool> = false>
KOKKOS_FORCEINLINE_FUNCTION constexpr explicit simd_mask(G&& gen) noexcept
: m_value(gen(std::integral_constant<std::size_t, 0>())) {}
: m_value(gen(0)) {}
template <class U>
KOKKOS_FORCEINLINE_FUNCTION simd_mask(
simd_mask<U, simd_abi::scalar> const& other)
Expand Down Expand Up @@ -114,7 +114,7 @@ class simd<T, simd_abi::scalar> {
std::integral_constant<std::size_t, 0>>,
bool> = false>
KOKKOS_FORCEINLINE_FUNCTION constexpr explicit simd(G&& gen) noexcept
: m_value(gen(std::integral_constant<std::size_t, 0>())) {}
: m_value(gen(0)) {}
KOKKOS_FORCEINLINE_FUNCTION constexpr explicit operator T() const {
return m_value;
}
Expand Down
16 changes: 9 additions & 7 deletions simd/unit_tests/include/TestSIMD_GeneratorCtors.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,16 @@ inline void host_check_gen_ctor() {
expected[i] = (init_mask[i]) ? init[i] * 9 : init[i];
}

simd_type basic([&](std::size_t i) { return init[i]; });
mask_type mask([&](std::size_t i) { return init_mask[i]; });
simd_type basic(KOKKOS_LAMBDA(std::size_t i) { return init[i]; });
mask_type mask(KOKKOS_LAMBDA(std::size_t i) { return init_mask[i]; });

simd_type rhs;
rhs.copy_from(init, Kokkos::Experimental::element_aligned_tag());
host_check_equality(basic, rhs, lanes);

simd_type lhs([&](std::size_t i) { return init[i] * 9; });
simd_type result([&](std::size_t i) { return (mask[i]) ? lhs[i] : rhs[i]; });
simd_type lhs(KOKKOS_LAMBDA(std::size_t i) { return init[i] * 9; });
simd_type result(
KOKKOS_LAMBDA(std::size_t i) { return (mask[i]) ? lhs[i] : rhs[i]; });

simd_type blend;
blend.copy_from(expected, Kokkos::Experimental::element_aligned_tag());
Expand Down Expand Up @@ -80,13 +81,14 @@ KOKKOS_INLINE_FUNCTION void device_check_gen_ctor() {
expected[i] = (mask[i]) ? init[i] * 9 : init[i];
}

simd_type basic([&](std::size_t i) { return init[i]; });
simd_type basic(KOKKOS_LAMBDA(std::size_t i) { return init[i]; });
simd_type rhs;
rhs.copy_from(init, Kokkos::Experimental::element_aligned_tag());
device_check_equality(basic, rhs, lanes);

simd_type lhs([&](std::size_t i) { return init[i] * 9; });
simd_type result([&](std::size_t i) { return (mask[i]) ? lhs[i] : rhs[i]; });
simd_type lhs(KOKKOS_LAMBDA(std::size_t i) { return init[i] * 9; });
simd_type result(
KOKKOS_LAMBDA(std::size_t i) { return (mask[i]) ? lhs[i] : rhs[i]; });

simd_type blend;
blend.copy_from(expected, Kokkos::Experimental::element_aligned_tag());
Expand Down
4 changes: 2 additions & 2 deletions simd/unit_tests/include/TestSIMD_MaskOps.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ inline void host_check_mask_ops() {
EXPECT_FALSE(any_of(mask_type(false)));

for (std::size_t i = 0; i < mask_type::size(); ++i) {
mask_type test_mask([&](std::size_t j) { return i == j; });
mask_type test_mask(KOKKOS_LAMBDA(std::size_t j) { return i == j; });

EXPECT_TRUE(any_of(test_mask));
EXPECT_FALSE(none_of(test_mask));
Expand Down Expand Up @@ -70,7 +70,7 @@ KOKKOS_INLINE_FUNCTION void device_check_mask_ops() {
checker.truth(!any_of(mask_type(false)));

for (std::size_t i = 0; i < mask_type::size(); ++i) {
mask_type test_mask([&](std::size_t j) { return i == j; });
mask_type test_mask(KOKKOS_LAMBDA(std::size_t j) { return i == j; });

checker.truth(any_of(test_mask));
checker.truth(!none_of(test_mask));
Expand Down

0 comments on commit b35c741

Please sign in to comment.