Skip to content

Commit 7220d87

Browse files
Change to DPNPC_adapter to set/use events upon which deallocation must depend
The deallocation routine simply calls sycl::event::wait on the stored vector.
1 parent 885f91a commit 7220d87

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

dpnp/backend/src/dpnpc_memory_adapter.hpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ class DPNPC_ptr_adapter final
5252
bool target_no_queue = false; /**< Indicates that original memory will be accessed from non SYCL environment */
5353
bool copy_back = false; /**< If the memory is 'result' it needs to be copied back to original */
5454
const bool verbose = false;
55+
std::vector<sycl::event> deps{};
5556

5657
public:
5758
DPNPC_ptr_adapter() = delete;
@@ -68,6 +69,7 @@ class DPNPC_ptr_adapter final
6869
copy_back = copy_back_request;
6970
orig_ptr = const_cast<void*>(src_ptr);
7071
size_in_bytes = size * sizeof(_DataType);
72+
deps = std::vector<sycl::event>{};
7173

7274
// enum class alloc { host = 0, device = 1, shared = 2, unknown = 3 };
7375
sycl::usm::alloc src_ptr_type = sycl::usm::alloc::unknown;
@@ -117,6 +119,8 @@ class DPNPC_ptr_adapter final
117119
std::cerr << "DPNPC_ptr_converter::free_memory at=" << aux_ptr << std::endl;
118120
}
119121

122+
sycl::event::wait(deps);
123+
120124
if (copy_back)
121125
{
122126
copy_data_back();
@@ -158,6 +162,15 @@ class DPNPC_ptr_adapter final
158162

159163
dpnp_memory_memcpy_c(queue_ref, orig_ptr, aux_ptr, size_in_bytes);
160164
}
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+
161174
};
162175

163176
#endif // DPNP_MEMORY_ADAPTER_H

0 commit comments

Comments
 (0)