Skip to content

Commit 690da67

Browse files
authored
Let the SYCL queue implement ConceptCurrentThreadWaitFor, ConceptGetDev and ConceptQueue (#2314)
* add Queue and Dev Concepts to SYCL queue * add tests for isQueue and isDevice
1 parent 995c57b commit 690da67

File tree

5 files changed

+21
-2
lines changed

5 files changed

+21
-2
lines changed

include/alpaka/dev/Traits.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ namespace alpaka
6161

6262
//! True if TDev is a device, i.e. if it implements the ConceptDev concept.
6363
template<typename TDev>
64-
inline constexpr bool isDevice = concepts::ImplementsConcept<ConceptDev, TDev>::value;
64+
inline constexpr bool isDevice = concepts::ImplementsConcept<ConceptDev, std::decay_t<TDev>>::value;
6565

6666
//! \return The device this object is bound to.
6767
template<typename T>

include/alpaka/queue/Traits.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ namespace alpaka
1717

1818
//! True if TQueue is a queue, i.e. if it implements the ConceptQueue concept.
1919
template<typename TQueue>
20-
inline constexpr bool isQueue = concepts::ImplementsConcept<ConceptQueue, TQueue>::value;
20+
inline constexpr bool isQueue = concepts::ImplementsConcept<ConceptQueue, std::decay_t<TQueue>>::value;
2121

2222
//! The queue traits.
2323
namespace trait

include/alpaka/queue/sycl/QueueGenericSyclBase.hpp

+3
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,9 @@ namespace alpaka::detail
167167

168168
template<typename TDev, bool TBlocking>
169169
class QueueGenericSyclBase
170+
: public concepts::Implements<ConceptCurrentThreadWaitFor, QueueGenericSyclBase<TDev, TBlocking>>
171+
, public concepts::Implements<ConceptQueue, QueueGenericSyclBase<TDev, TBlocking>>
172+
, public concepts::Implements<ConceptGetDev, QueueGenericSyclBase<TDev, TBlocking>>
170173
{
171174
public:
172175
QueueGenericSyclBase(TDev const& dev)

test/unit/dev/src/DevWarpSizeTest.cpp

+7
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,10 @@ TEMPLATE_LIST_TEST_CASE("getPreferredWarpSize", "[dev]", alpaka::test::TestAccs)
2929
auto const preferredWarpSize = alpaka::getPreferredWarpSize(dev);
3030
REQUIRE(preferredWarpSize > 0);
3131
}
32+
33+
TEMPLATE_LIST_TEST_CASE("isDevice", "[dev]", alpaka::test::TestAccs)
34+
{
35+
auto const platform = alpaka::Platform<TestType>{};
36+
auto const dev = alpaka::getDevByIdx(platform, 0);
37+
REQUIRE(alpaka::isDevice<decltype(dev)>);
38+
}

test/unit/queue/src/QueueTest.cpp

+9
Original file line numberDiff line numberDiff line change
@@ -269,3 +269,12 @@ TEMPLATE_LIST_TEST_CASE("enqueueBenchmark", "[queue]", alpaka::test::TestQueues)
269269
return count.load();
270270
};
271271
}
272+
273+
TEMPLATE_LIST_TEST_CASE("isQueue", "[queue]", alpaka::test::TestQueues)
274+
{
275+
using DevQueue = TestType;
276+
using Fixture = alpaka::test::QueueTestFixture<DevQueue>;
277+
Fixture f;
278+
279+
REQUIRE(alpaka::isQueue<decltype(f.m_queue)>);
280+
}

0 commit comments

Comments
 (0)