1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
// SPDX-FileCopyrightText: Copyright Contributors to the Kokkos project
#include <Kokkos_Macros.hpp>
#ifdef KOKKOS_ENABLE_EXPERIMENTAL_CXX20_MODULES
import kokkos.core;
import kokkos.core_impl;
#else
#include <Kokkos_Core.hpp>
#endif
#include <cstddef>
#include <type_traits>
using Kokkos::Impl::BV::BasicView;
#if 0 // TODO: after View is using BasicView this should be true
static_assert(
std::is_convertible_v<
Kokkos::View<long long ****, Kokkos::LayoutRight, Kokkos::Serial>,
BasicView<long long, Kokkos::dextents<size_t, 4>,
Kokkos::Experimental::layout_right_padded<>,
Kokkos::Impl::CheckedReferenceCountedAccessor<
long long, Kokkos::HostSpace>>>);
#endif
static_assert(std::is_convertible_v<
BasicView<long long, Kokkos::dextents<size_t, 4>,
Kokkos::Experimental::layout_right_padded<>,
Kokkos::Impl::CheckedReferenceCountedAccessor<
long long, Kokkos::HostSpace>>,
BasicView<const long long, Kokkos::dextents<size_t, 4>,
Kokkos::Experimental::layout_right_padded<>,
Kokkos::Impl::CheckedReferenceCountedAccessor<
const long long, Kokkos::HostSpace>>>);
#if 0 // TODO: after View is using BasicView this should be true
static_assert(
std::is_convertible_v<
Kokkos::View<long long ****, Kokkos::LayoutRight, Kokkos::Serial>,
BasicView<const long long, Kokkos::dextents<size_t, 4>,
Kokkos::Experimental::layout_right_padded<>,
Kokkos::Impl::CheckedReferenceCountedAccessor<
const long long, Kokkos::HostSpace>>>);
using test_atomic_view = Kokkos::View<double *, Kokkos::Serial,
Kokkos::MemoryTraits<Kokkos::Atomic>>;
static_assert(std::is_same_v<
decltype(std::declval<test_atomic_view>()(std::declval<int>())),
desul::AtomicRef<double, desul::MemoryOrderRelaxed,
desul::MemoryScopeDevice>>);
#endif
static_assert(std::is_convertible_v<Kokkos::default_accessor<double>,
Kokkos::Impl::ReferenceCountedAccessor<
double, Kokkos::HostSpace,
Kokkos::default_accessor<double>>>);
static_assert(std::is_constructible_v<Kokkos::default_accessor<const double>,
Kokkos::default_accessor<double>>);
static_assert(std::is_convertible_v<Kokkos::default_accessor<double>,
Kokkos::default_accessor<const double>>);
static_assert(
std::is_constructible_v<
Kokkos::Impl::ReferenceCountedAccessor<
const double, Kokkos::HostSpace,
Kokkos::default_accessor<const double>>,
Kokkos::Impl::ReferenceCountedAccessor<
double, Kokkos::HostSpace, Kokkos::default_accessor<double>>>);
static_assert(std::is_convertible_v<
Kokkos::Impl::ReferenceCountedAccessor<
double, Kokkos::HostSpace, Kokkos::default_accessor<double>>,
Kokkos::Impl::ReferenceCountedAccessor<
const double, Kokkos::HostSpace,
Kokkos::default_accessor<const double>>>);
static_assert(std::is_constructible_v<Kokkos::default_accessor<const double>,
Kokkos::Impl::ReferenceCountedAccessor<
double, Kokkos::HostSpace,
Kokkos::default_accessor<double>>>);
static_assert(
std::is_convertible_v<
Kokkos::Impl::SpaceAwareAccessor<
Kokkos::HostSpace,
Kokkos::Impl::ReferenceCountedAccessor<
double, Kokkos::HostSpace, Kokkos::default_accessor<double>>>,
Kokkos::Impl::SpaceAwareAccessor<
Kokkos::HostSpace, Kokkos::default_accessor<const double>>>);
|