44 typedef ValueT ValueType;
45 typedef VectorInternal<ValueType> ThisType;
46 typedef sycl::buffer<ValueType, 1> ValueBufferType;
50 VectorInternal(std::size_t size)
51 : m_values(sycl::range<1>(size))
54 virtual ~VectorInternal() {}
65 ValueBufferType& values()
71 ValueBufferType& values()
const
76 void copyValuesToHost(std::size_t size, ValueT* ptr)
78 auto h_values = m_values.get_host_access();
79 for (std::size_t i = 0; i < size; ++i)
83 void copyValuesToDevice(std::size_t size, ValueT* ptr)
const
85 auto env = SYCLEnv::instance() ;
86 auto& queue = env->internal()->queue() ;
87 auto max_num_treads = env->maxNumThreads() ;
89 queue.submit( [&](sycl::handler& cgh)
91 auto access_x = m_values.template get_access<sycl::access::mode::read>(cgh);
92 std::size_t y_length = size ;
93 cgh.parallel_for<
class init_vector_ptr>(sycl::range<1>{max_num_treads}, [=] (sycl::item<1> itemId)
95 auto id = itemId.get_id(0);
96 for (
auto i =
id; i < y_length; i += itemId.get_range()[0])
104 mutable ValueBufferType m_values;