vecmem 1.18.0
Loading...
Searching...
No Matches
async_copy.hpp
1/*
2 * VecMem project, part of the ACTS project (R&D line)
3 *
4 * (c) 2021-2025 CERN for the benefit of the ACTS project
5 *
6 * Mozilla Public License Version 2.0
7 */
8#pragma once
9
10// VecMem include(s).
11#include "vecmem/utils/copy.hpp"
12#include "vecmem/utils/sycl/details/queue_holder.hpp"
13#include "vecmem/vecmem_sycl_export.hpp"
14
15// System include(s).
16#include <memory>
17
18namespace vecmem::sycl {
19
32
33public:
36 explicit async_copy(const queue_wrapper& queue);
40
41private:
44 void do_copy(std::size_t size, const void* from, void* to,
45 type::copy_type cptype) const override;
48 void do_memset(std::size_t size, void* ptr, int value) const override;
51 event_type create_event() const override;
52
54 struct impl;
56 std::unique_ptr<impl> m_impl;
57
58}; // class async_copy
59
60} // namespace vecmem::sycl
An allocator class that wraps a memory resource.
Definition allocator.hpp:37
Class implementing (synchronous) host <-> device memory copies.
Definition copy.hpp:42
std::unique_ptr< abstract_event > event_type
Event type used by the copy class.
Definition copy.hpp:70
data::vector_buffer< std::remove_cv_t< TYPE > > to(const data::vector_view< TYPE > &data, memory_resource &resource, type::copy_type cptype=type::unknown) const
Copy a 1-dimensional vector to the specified memory resource.
Definition copy.ipp:66
Specialisation of vecmem::copy for SYCL.
Definition async_copy.hpp:31
VECMEM_SYCL_EXPORT async_copy(const queue_wrapper &queue)
Constructor on top of a user-provided queue.
VECMEM_SYCL_EXPORT void do_copy(std::size_t size, const void *from, void *to, type::copy_type cptype) const override
Perform a memory copy using SYCL.
VECMEM_SYCL_EXPORT void do_memset(std::size_t size, void *ptr, int value) const override
Fill a memory area using SYCL.
VECMEM_SYCL_EXPORT event_type create_event() const override
Create an event for synchronization.
VECMEM_SYCL_EXPORT ~async_copy()
Destructor.
Base class for all user-facing, sycl::queue using classes.
Definition queue_holder.hpp:19
queue_wrapper & queue() const
Get the held queue.
Wrapper class for ::sycl::queue.
Definition queue_wrapper.hpp:23
Namespace holding types that work on/with oneAPI/SYCL.
Definition sycl_builtin_device_atomic_ref.hpp:17