@@ -1046,34 +1046,33 @@ void primitive_inst::realloc_if_needed(bool prev_execution_skipped) {
1046
1046
{
1047
1047
if (_impl == nullptr )
1048
1048
return ;
1049
- const auto & ibuf_layouts = _impl->get_internal_buffer_layouts ( );
1050
- if (ibuf_layouts .empty ())
1049
+ const auto & buffer_descs = _impl->get_internal_buffer_descs (*_impl_params );
1050
+ if (buffer_descs .empty ())
1051
1051
return ;
1052
1052
GPU_DEBUG_CODE (std::string memalloc_info = " " );
1053
- const auto & lockable_buffers_indexes = _impl->get_lockable_internal_buffers ();
1054
- for (size_t i = 0 ; i < ibuf_layouts.size (); ++i) {
1055
- auto need_lockable = lockable_buffers_indexes.find (i) != lockable_buffers_indexes.end ();
1053
+ for (size_t i = 0 ; i < buffer_descs.size (); ++i) {
1054
+ auto need_lockable = buffer_descs[i].m_lockable ;
1056
1055
auto alloc_type = i < _intermediates_memory.size () ? _intermediates_memory[i]->get_allocation_type ()
1057
1056
: allocation_type::unknown;
1058
1057
bool can_reuse = true ;
1059
1058
can_reuse &= alloc_type != allocation_type::unknown &&
1060
- ibuf_layouts [i].bytes_count () <= max_intermediates_memory_sizes[i];
1059
+ buffer_descs [i]. m_layout .bytes_count () <= max_intermediates_memory_sizes[i];
1061
1060
can_reuse &= (need_lockable && alloc_type != cldnn::allocation_type::usm_device) ||
1062
1061
(!need_lockable && alloc_type != cldnn::allocation_type::usm_host);
1063
1062
1064
1063
if (can_reuse) {
1065
- _intermediates_memory[i] = _network.get_engine ().reinterpret_buffer (*_intermediates_memory[i], ibuf_layouts [i]);
1064
+ _intermediates_memory[i] = _network.get_engine ().reinterpret_buffer (*_intermediates_memory[i], buffer_descs [i]. m_layout );
1066
1065
GPU_DEBUG_CODE (memalloc_info += ((_intermediates_memory.size () > 1 ) ? (" i" + to_string (i) + " :" ) : " " ) + " reuse_buffer" );
1067
1066
} else {
1068
1067
// TODO: If there is a kernel which requires reset internal buffer in the future,
1069
1068
// we'll need additional handle for that purpose like need_reset_output_memory
1070
1069
const bool need_reset = false ;
1071
1070
if (i < _intermediates_memory.size ()) {
1072
- _intermediates_memory[i] = allocate_internal_buffer (ibuf_layouts [i], i, need_reset, need_lockable);
1071
+ _intermediates_memory[i] = allocate_internal_buffer (buffer_descs [i]. m_layout , i, need_reset, need_lockable);
1073
1072
max_intermediates_memory_sizes[i] = _intermediates_memory[i]->size ();
1074
1073
} else {
1075
1074
// i-th layout has not been allocated yet
1076
- _intermediates_memory.push_back (allocate_internal_buffer (ibuf_layouts [i], i, need_reset, need_lockable));
1075
+ _intermediates_memory.push_back (allocate_internal_buffer (buffer_descs [i]. m_layout , i, need_reset, need_lockable));
1077
1076
max_intermediates_memory_sizes.push_back (_intermediates_memory[i]->size ());
1078
1077
}
1079
1078
GPU_DEBUG_CODE (memalloc_info +=
@@ -2207,16 +2206,16 @@ memory::ptr primitive_inst::allocate_internal_buffer(const layout& layout, size_
2207
2206
void primitive_inst::allocate_internal_buffers (bool reset) {
2208
2207
if (_impl == nullptr || _outputs.empty () || _outputs[0 ] == nullptr )
2209
2208
return ;
2210
- const auto & ibuf_layouts = _impl->get_internal_buffer_layouts ( );
2211
- if (ibuf_layouts .empty ())
2209
+ const auto & buffer_descs = _impl->get_internal_buffer_descs (*_impl_params );
2210
+ if (buffer_descs .empty ())
2212
2211
return ;
2213
2212
2214
2213
// allocate intermediate memory for the updated layout of buffer
2215
2214
std::vector<memory::ptr> intermediates_memory;
2216
- for (size_t i = 0 ; i < ibuf_layouts .size (); ++i) {
2217
- if (ibuf_layouts [i].get_linear_size () == 0 )
2215
+ for (size_t i = 0 ; i < buffer_descs .size (); ++i) {
2216
+ if (buffer_descs [i]. m_layout .get_linear_size () == 0 )
2218
2217
continue ;
2219
- intermediates_memory.push_back (allocate_internal_buffer (ibuf_layouts [i], i, reset));
2218
+ intermediates_memory.push_back (allocate_internal_buffer (buffer_descs [i]. m_layout , i, reset));
2220
2219
max_intermediates_memory_sizes.push_back (intermediates_memory[i]->size ());
2221
2220
}
2222
2221
_intermediates_memory = intermediates_memory;
0 commit comments