#pragma once #include "common.hpp" namespace saw { /** * Represents a remote Sycl device. */ template<> class device final { private: cl::sycl::queue cmd_queue_; public: device() = default; SAW_FORBID_COPY(device); SAW_FORBID_MOVE(device); /** * Copy data to device */ template error_or> copy_to_device(const data& host_data){ return data::copy_to_device(host_data, *this); } /** * Copy data to host */ template error_or> copy_to_host(const data& dev_data){ return dev_data.copy_to_host(); } /** * Get a reference to the handle */ cl::sycl::queue& get_handle(){ return cmd_queue_; } }; }