17
17
#include < oneapi/dnnl/dnnl_ocl.hpp>
18
18
#endif
19
19
20
+ #define BOUNDARIES_CHECK (copy_type, src_size, src_offset, dst_size, dst_offset, copy_size ) \
21
+ OPENVINO_ASSERT (src_offset + copy_size <= src_size && dst_offset + copy_size <= dst_size, \
22
+ " [GPU] Incorrect buffer sizes for " , \
23
+ copy_type, \
24
+ " call. Parameters provided are" \
25
+ " : src_size=" , \
26
+ src_size, \
27
+ " , src_offset=" , \
28
+ src_offset, \
29
+ " , dst_size=" , \
30
+ dst_size, \
31
+ " , dst_offset=" , \
32
+ dst_offset, \
33
+ " , copy_size=" , \
34
+ copy_size, \
35
+ " ." );
36
+
20
37
#define TRY_CATCH_CL_ERROR (...) \
21
38
try { \
22
39
__VA_ARGS__; \
@@ -132,6 +149,8 @@ event::ptr gpu_buffer::copy_from(stream& stream, const void* data_ptr, size_t sr
132
149
if (size == 0 )
133
150
return result_event;
134
151
152
+ BOUNDARIES_CHECK (" gpu_buffer::copy_from(void*)" , SIZE_MAX, src_offset, _bytes_count, dst_offset, size);
153
+
135
154
auto cl_stream = downcast<ocl_stream>(&stream);
136
155
auto cl_event = blocking ? nullptr : &downcast<ocl_event>(result_event.get ())->get ();
137
156
auto src_ptr = reinterpret_cast <const char *>(data_ptr) + src_offset;
@@ -146,6 +165,8 @@ event::ptr gpu_buffer::copy_from(stream& stream, const memory& src_mem, size_t s
146
165
if (size == 0 )
147
166
return result_event;
148
167
168
+ BOUNDARIES_CHECK (" gpu_buffer::copy_from(memory&)" , src_mem.size (), src_offset, _bytes_count, dst_offset, size);
169
+
149
170
switch (src_mem.get_allocation_type ()) {
150
171
case allocation_type::usm_host:
151
172
case allocation_type::usm_shared:
@@ -180,6 +201,8 @@ event::ptr gpu_buffer::copy_to(stream& stream, void* data_ptr, size_t src_offset
180
201
if (size == 0 )
181
202
return result_event;
182
203
204
+ BOUNDARIES_CHECK (" gpu_buffer::copy_to(void*)" , _bytes_count, src_offset, SIZE_MAX, dst_offset, size);
205
+
183
206
auto cl_stream = downcast<ocl_stream>(&stream);
184
207
auto cl_event = blocking ? nullptr : &downcast<ocl_event>(result_event.get ())->get ();
185
208
auto dst_ptr = reinterpret_cast <char *>(data_ptr) + dst_offset;
@@ -540,6 +563,8 @@ event::ptr gpu_usm::copy_from(stream& stream, const void* data_ptr, size_t src_o
540
563
if (size == 0 )
541
564
return result_event;
542
565
566
+ BOUNDARIES_CHECK (" gpu_usm::copy_from(void*)" , SIZE_MAX, src_offset, _bytes_count, dst_offset, size);
567
+
543
568
auto cl_stream = downcast<ocl_stream>(&stream);
544
569
auto cl_event = blocking ? nullptr : &downcast<ocl_event>(result_event.get ())->get ();
545
570
auto src_ptr = reinterpret_cast <const char *>(data_ptr) + src_offset;
@@ -555,6 +580,8 @@ event::ptr gpu_usm::copy_from(stream& stream, const memory& src_mem, size_t src_
555
580
if (size == 0 )
556
581
return result_event;
557
582
583
+ BOUNDARIES_CHECK (" gpu_usm::copy_from(memory&)" , src_mem.size (), src_offset, _bytes_count, dst_offset, size);
584
+
558
585
auto cl_stream = downcast<ocl_stream>(&stream);
559
586
auto cl_event = blocking ? nullptr : &downcast<ocl_event>(result_event.get ())->get ();
560
587
@@ -586,6 +613,8 @@ event::ptr gpu_usm::copy_to(stream& stream, void* data_ptr, size_t src_offset, s
586
613
if (size == 0 )
587
614
return result_event;
588
615
616
+ BOUNDARIES_CHECK (" gpu_usm::copy_to(void*)" , _bytes_count, src_offset, SIZE_MAX, dst_offset, size);
617
+
589
618
auto cl_stream = downcast<ocl_stream>(&stream);
590
619
auto cl_event = blocking ? nullptr : &downcast<ocl_event>(result_event.get ())->get ();
591
620
auto src_ptr = reinterpret_cast <const char *>(buffer_ptr ()) + src_offset;
@@ -672,3 +701,5 @@ ocl_surfaces_lock::ocl_surfaces_lock(std::vector<memory::ptr> mem, const stream&
672
701
673
702
} // namespace ocl
674
703
} // namespace cldnn
704
+
705
+ #undef BOUNDARIES_CHECK
0 commit comments