Skip to content

Commit 3905ebe

Browse files
committed
Fix tests, add optional alpaka queue input for traccc::alpaka::queue.
1 parent b29c2c2 commit 3905ebe

File tree

4 files changed

+40
-55
lines changed

4 files changed

+40
-55
lines changed

device/alpaka/include/traccc/alpaka/utils/queue.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ class queue {
2626
/// Construct a new stream (possibly for a specified device)
2727
explicit queue(std::size_t device = INVALID_DEVICE);
2828

29+
/// Wrap an existing ::alpaka::Queue object
30+
///
31+
/// Without taking ownership of it!
32+
///
33+
queue(void* queue);
34+
2935
/// Move constructor
3036
queue(queue&& parent) noexcept;
3137

device/alpaka/src/utils/queue.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ struct queue::impl {
3434

3535
queue::queue(std::size_t device) : m_impl{std::make_unique<impl>(device)} {}
3636

37+
queue::queue(void* queue) : m_impl{std::make_unique<impl>(INVALID_DEVICE)} {
38+
39+
// Copy the queue pointer
40+
m_impl->m_queue = *static_cast<Queue*>(queue);
41+
}
42+
3743
queue::queue(queue&&) noexcept = default;
3844

3945
queue::~queue() = default;

tests/alpaka/alpaka_basic.cpp

Lines changed: 18 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,22 @@
66
* Mozilla Public License Version 2.0
77
*/
88

9-
// Alpaka include(s).
10-
#include <alpaka/alpaka.hpp>
11-
#include <alpaka/example/ExampleDefaultAcc.hpp>
9+
// Project include(s).
10+
#include "traccc/alpaka/utils/vecmem_objects.hpp"
11+
12+
// VecMem include(s).
1213
#include <vecmem/containers/data/vector_buffer.hpp>
1314
#include <vecmem/containers/device_vector.hpp>
1415
#include <vecmem/containers/vector.hpp>
15-
#include <vecmem/memory/host_memory_resource.hpp>
16-
#include <vecmem/utils/copy.hpp>
1716

18-
// VecMem include(s).
19-
#ifdef ALPAKA_ACC_GPU_CUDA_ENABLED
20-
#include <vecmem/memory/cuda/device_memory_resource.hpp>
21-
#include <vecmem/memory/cuda/host_memory_resource.hpp>
22-
#include <vecmem/utils/cuda/copy.hpp>
23-
#elif defined(ALPAKA_ACC_GPU_HIP_ENABLED)
24-
#include <vecmem/memory/hip/device_memory_resource.hpp>
25-
#include <vecmem/memory/hip/host_memory_resource.hpp>
26-
#include <vecmem/utils/hip/copy.hpp>
27-
#elif defined(ALPAKA_ACC_SYCL_ENABLED)
28-
#include <vecmem/memory/sycl/device_memory_resource.hpp>
29-
#include <vecmem/memory/sycl/host_memory_resource.hpp>
30-
#include <vecmem/utils/sycl/copy.hpp>
31-
#include <vecmem/utils/sycl/queue_wrapper.hpp>
32-
#endif
33-
34-
#include <vecmem/memory/memory_resource.hpp>
35-
#include <vecmem/utils/copy.hpp>
17+
// Alpaka include(s).
18+
#include <alpaka/alpaka.hpp>
19+
#include <alpaka/example/ExampleDefaultAcc.hpp>
3620

3721
// GoogleTest include(s).
3822
#include <gtest/gtest.h>
3923

24+
// Standard include(s).
4025
#include <cstdint>
4126
#include <iostream>
4227

@@ -138,7 +123,7 @@ GTEST_TEST(AlpakaBasic, VecMemOp) {
138123
auto const devAcc = getDevByIdx(platformAcc, 0u);
139124

140125
using Queue = Queue<Acc, Blocking>;
141-
auto queue = Queue{devAcc};
126+
auto alpaka_queue = Queue{devAcc};
142127

143128
uint32_t n = 10000;
144129

@@ -148,25 +133,12 @@ GTEST_TEST(AlpakaBasic, VecMemOp) {
148133
using WorkDiv = WorkDivMembers<Dim, Idx>;
149134
auto workDiv = WorkDiv{blocksPerGrid, threadsPerBlock, elementsPerThread};
150135

151-
#ifdef ALPAKA_ACC_SYCL_ENABLED
152-
::sycl::queue q;
153-
vecmem::sycl::queue_wrapper qw{&q};
154-
vecmem::sycl::copy vm_copy(qw);
155-
vecmem::sycl::host_memory_resource host_mr(qw);
156-
vecmem::sycl::device_memory_resource device_mr(qw);
157-
#elif defined(ALPAKA_ACC_GPU_CUDA_ENABLED)
158-
vecmem::cuda::copy vm_copy;
159-
vecmem::cuda::host_memory_resource host_mr;
160-
vecmem::cuda::device_memory_resource device_mr;
161-
#elif defined(ALPAKA_ACC_GPU_HIP_ENABLED)
162-
vecmem::hip::copy vm_copy;
163-
vecmem::hip::host_memory_resource host_mr;
164-
vecmem::hip::device_memory_resource device_mr;
165-
#else
166-
vecmem::copy vm_copy;
167-
vecmem::host_memory_resource host_mr;
168-
vecmem::host_memory_resource device_mr;
169-
#endif
136+
traccc::alpaka::queue traccc_queue(&alpaka_queue);
137+
traccc::alpaka::vecmem_objects vo(traccc_queue);
138+
139+
vecmem::memory_resource& host_mr = vo.host_mr();
140+
vecmem::memory_resource& device_mr = vo.device_mr();
141+
vecmem::copy& vm_copy = vo.copy();
170142

171143
vecmem::vector<float> host_vector{n, &host_mr};
172144

@@ -178,12 +150,9 @@ GTEST_TEST(AlpakaBasic, VecMemOp) {
178150
std::cout << "Using alpaka accelerator: " << alpaka::getAccName<Acc>()
179151
<< std::endl;
180152

181-
// Create a device for host for memory allocation, using the first CPU
182-
// available
183-
auto const platformDevCpu = alpaka::Platform<DevCpu>{};
184-
auto devHost = getDevByIdx(platformDevCpu, 0u);
185-
186-
alpaka::exec<Acc>(queue, workDiv, VecMemOpKernel{}, data_dev_vec_buf);
153+
alpaka::exec<Acc>(alpaka_queue, workDiv, VecMemOpKernel{},
154+
data_dev_vec_buf);
155+
alpaka::wait(alpaka_queue);
187156

188157
vm_copy(device_buffer, host_buffer, vecmem::copy::type::device_to_host)
189158
->wait();

tests/alpaka/test_cca.cpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,20 @@
55
* Mozilla Public License Version 2.0
66
*/
77

8-
#include <gtest/gtest.h>
9-
10-
#include <functional>
11-
#include <vecmem/memory/host_memory_resource.hpp>
12-
8+
// Local include(s).
139
#include "tests/cca_test.hpp"
10+
11+
// Project include(s).
1412
#include "traccc/alpaka/clusterization/clusterization_algorithm.hpp"
1513
#include "traccc/alpaka/utils/vecmem_objects.hpp"
1614
#include "traccc/geometry/silicon_detector_description.hpp"
1715

16+
// GoogleTest include(s).
17+
#include <gtest/gtest.h>
18+
19+
// Standard include(s).
20+
#include <functional>
21+
1822
namespace {
1923

2024
// template <TAccTag>
@@ -29,7 +33,7 @@ cca_function_t get_f_with(traccc::clustering_config cfg) {
2933

3034
vecmem::memory_resource& host_mr = vo.host_mr();
3135
vecmem::memory_resource& device_mr = vo.device_mr();
32-
vecmem::copy copy = vo.copy();
36+
vecmem::copy& copy = vo.copy();
3337

3438
traccc::alpaka::clusterization_algorithm cc({device_mr}, copy, cfg);
3539

0 commit comments

Comments
 (0)