@@ -52,6 +52,7 @@ class DPNPC_ptr_adapter final
52
52
bool target_no_queue = false ; /* *< Indicates that original memory will be accessed from non SYCL environment */
53
53
bool copy_back = false ; /* *< If the memory is 'result' it needs to be copied back to original */
54
54
const bool verbose = false ;
55
+ std::vector<sycl::event> deps{};
55
56
56
57
public:
57
58
DPNPC_ptr_adapter () = delete ;
@@ -68,6 +69,7 @@ class DPNPC_ptr_adapter final
68
69
copy_back = copy_back_request;
69
70
orig_ptr = const_cast <void *>(src_ptr);
70
71
size_in_bytes = size * sizeof (_DataType);
72
+ deps = std::vector<sycl::event>{};
71
73
72
74
// enum class alloc { host = 0, device = 1, shared = 2, unknown = 3 };
73
75
sycl::usm::alloc src_ptr_type = sycl::usm::alloc::unknown;
@@ -117,6 +119,8 @@ class DPNPC_ptr_adapter final
117
119
std::cerr << " DPNPC_ptr_converter::free_memory at=" << aux_ptr << std::endl;
118
120
}
119
121
122
+ sycl::event::wait (deps);
123
+
120
124
if (copy_back)
121
125
{
122
126
copy_data_back ();
@@ -158,6 +162,15 @@ class DPNPC_ptr_adapter final
158
162
159
163
dpnp_memory_memcpy_c (queue_ref, orig_ptr, aux_ptr, size_in_bytes);
160
164
}
165
+
166
+ void depends_on (const std::vector<sycl::event> &new_deps) {
167
+ deps.insert (std::end (deps), std::begin (new_deps), std::end (new_deps));
168
+ }
169
+
170
+ void depends_on (const sycl::event &new_dep) {
171
+ deps.push_back (new_dep);
172
+ }
173
+
161
174
};
162
175
163
176
#endif // DPNP_MEMORY_ADAPTER_H
0 commit comments