kokkos-execution 0.0.1
Loading...
Searching...
No Matches
load_check_add.hpp
Go to the documentation of this file.
1#ifndef KOKKOS_EXECUTION_TESTS_UTILS_FUNCTORS_LOAD_CHECK_ADD_HPP
2#define KOKKOS_EXECUTION_TESTS_UTILS_FUNCTORS_LOAD_CHECK_ADD_HPP
3
4#include "Kokkos_Macros.hpp"
5#ifdef KOKKOS_ENABLE_EXPERIMENTAL_CXX20_MODULES
6import kokkos.core;
7#else
8# include "Kokkos_Core.hpp"
9#endif
10
11namespace Tests::Utils::Functors {
12
18template <typename ValueType, bool OnDevice>
20 ValueType prev;
21 ValueType value;
22 ValueType* data;
23
24 KOKKOS_FUNCTION
25 void operator()() const {
26 if constexpr (OnDevice) {
27 KOKKOS_IF_ON_HOST(Kokkos::abort("You should not be running on host.");)
28 } else {
29 KOKKOS_IF_ON_DEVICE(Kokkos::abort("You should not be running on device.");)
30 }
31
32 if (*data != prev) {
33 KOKKOS_IF_ON_HOST(Kokkos::abort("Unexpected value on host.");)
34 KOKKOS_IF_ON_DEVICE(Kokkos::abort("Unexpected value on device.");)
35 }
36 *data += value;
37 }
38};
39
40} // namespace Tests::Utils::Functors
41
42#endif // KOKKOS_EXECUTION_TESTS_UTILS_FUNCTORS_LOAD_CHECK_ADD_HPP
Load the value at data and check it is equal to prev. Then, add value to it.