alpaka
Abstraction Library for Parallel Kernel Acceleration
Loading...
Searching...
No Matches
concepts.hpp
Go to the documentation of this file.
1/* Copyright 2024 René Widera
2 * SPDX-License-Identifier: MPL-2.0
3 */
4
5#pragma once
6
7#include "alpaka/concepts.hpp"
10
11#include <concepts>
12#include <string>
13
14namespace alpaka::onHost
15{
17 {
18 template<typename T>
19 concept Device = requires(T device) {
20 { alpaka::internal::GetName::Op<T>{}(device) } -> std::convertible_to<std::string>;
21 { internal::MakeEvent::Op<T>{}(device) };
24 };
25
26 template<typename T>
27 concept Platform = requires(T platform) {
29 };
30
31 template<typename T>
32 concept Queue = requires(T device) {
33 { alpaka::internal::GetName::Op<T>{}(device) } -> std::convertible_to<std::string>;
35 };
36
37 template<typename T>
38 concept QueueHandle = requires(T t) {
39 typename T::element_type;
41 };
42
43 template<typename T>
44 concept PlatformHandle = requires(T t) {
45 typename T::element_type;
47 };
48
49 template<typename T>
50 concept DeviceHandle = requires(T t) {
51 typename T::element_type;
53 };
54 } // namespace internal::concepts
55
56 namespace concepts
57 {
58 template<typename T>
59 concept NameHandle = requires(T t) {
60 typename T::element_type;
62 };
63
64 template<typename T>
65 concept StaticNameHandle = requires(T t) {
66 typename T::element_type;
68 };
69 } // namespace concepts
70
71} // namespace alpaka::onHost
Functionality which is usable on the host CPU controller thread.
Definition api.hpp:40