Skip to content

Commit ba12ff1

Browse files
authored
[GPU] fix faster_rcnn with dynamic shapes (openvinotoolkit#25366)
### Details: - fix reading batch() etc. from dynamic shape ### Tickets: - 145461
1 parent 319ed4e commit ba12ff1

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

src/plugins/intel_gpu/src/graph/experimental_detectron_roi_feature_extractor.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ std::vector<layout> experimental_detectron_roi_feature_extractor_inst::calc_outp
3535
experimental_detectron_roi_feature_extractor_node const& /*node*/, const kernel_impl_params& impl_param) {
3636
layout rois_layout = impl_param.get_input_layout(0);
3737
layout data_layout = impl_param.get_input_layout(1);
38-
int num_rois = rois_layout.batch();
39-
int num_channels = data_layout.feature();
4038
auto desc = impl_param.typed_desc<experimental_detectron_roi_feature_extractor>();
39+
auto num_rois = rois_layout.get_partial_shape()[0];
40+
auto num_channels = data_layout.get_partial_shape()[1];
4141

4242
return {
4343
layout(ov::PartialShape{num_rois, num_channels, desc->output_dim, desc->output_dim}, data_layout.data_type, format::bfyx),

src/plugins/intel_gpu/src/graph/primitive_inst.cpp

+14
Original file line numberDiff line numberDiff line change
@@ -1344,6 +1344,14 @@ void primitive_inst::do_runtime_skip_broadcast() {
13441344
}
13451345

13461346
void primitive_inst::do_runtime_in_place_concat() {
1347+
auto has_subgraph_dependency = [](std::vector<std::pair<const cldnn::primitive_inst*, int>> dependencies) {
1348+
for (auto dependency : dependencies) {
1349+
if (dependency.first && dependency.first->get_node().is_in_shape_of_subgraph()) {
1350+
return true;
1351+
}
1352+
}
1353+
return false;
1354+
};
13471355
OV_ITT_SCOPED_TASK(ov::intel_gpu::itt::domains::intel_gpu_plugin, openvino::itt::handle("do_runtime_in_place_concat: " + id()));
13481356
GPU_DEBUG_GET_INSTANCE(debug_config);
13491357
GPU_DEBUG_IF(debug_config->disable_runtime_buffer_fusing) {
@@ -1357,6 +1365,11 @@ void primitive_inst::do_runtime_in_place_concat() {
13571365
auto concat_inst = get_user_insts().front();
13581366
if (!concat_inst->get_node().is_type<concatenation>() || !concat_inst->get_node().can_be_optimized())
13591367
return;
1368+
1369+
if (has_subgraph_dependency(concat_inst->dependencies())) {
1370+
concat_inst->set_can_be_optimized(false);
1371+
return;
1372+
}
13601373
// Currently does not support cascaded concats
13611374
std::vector<primitive_inst*> concat_preds;
13621375
for (auto pred : concat_inst->_deps) {
@@ -1406,6 +1419,7 @@ void primitive_inst::do_runtime_in_place_concat() {
14061419
++i;
14071420
}
14081421
concat_inst->_impl_params->output_layouts[0] = concat_layout; // TODO : Once this primitive_inst::can_be_optimized, consolidate it to impl_params->optimized
1422+
14091423
concat_inst->set_can_be_optimized(true);
14101424
GPU_DEBUG_TRACE_DETAIL << "[In place concat] " << concat_inst->id() << ": can_be_optimized " << std::endl;
14111425
}

0 commit comments

Comments
 (0)