Skip to content

Commit

Permalink
[RTTI] Replace std::dynamic_(pointer)?_casts with ov::as_type_(ptr)? …
Browse files Browse the repository at this point in the history
…- CPU (#28411)

### Details:
- Replaced `std::dynamic_cast` and `std::dynamic_pointed_cast` with
`ov::as_type` or `ov::as_type_ptr` respectively in src/plugins (CPU,
Template, Auto, Hetero)

### Tickets:
 - CVS-160243

---------

Signed-off-by: Tomasz Jankowski <[email protected]>
  • Loading branch information
t-jankowski authored Jan 13, 2025
1 parent 91eeed5 commit 8eb1deb
Show file tree
Hide file tree
Showing 86 changed files with 217 additions and 237 deletions.
12 changes: 6 additions & 6 deletions src/plugins/auto/src/plugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ namespace {
return "INT8";
}
for (auto & node : model->get_ordered_ops()) {
if (std::dynamic_pointer_cast<ov::op::v1::Convolution>(node) ||
std::dynamic_pointer_cast<ov::op::v1::GroupConvolution>(node) ||
std::dynamic_pointer_cast<ov::op::v1::GroupConvolutionBackpropData>(node) ||
std::dynamic_pointer_cast<ov::op::v1::ConvolutionBackpropData>(node)) {
if (ov::as_type_ptr<ov::op::v1::Convolution>(node) ||
ov::as_type_ptr<ov::op::v1::GroupConvolution>(node) ||
ov::as_type_ptr<ov::op::v1::GroupConvolutionBackpropData>(node) ||
ov::as_type_ptr<ov::op::v1::ConvolutionBackpropData>(node)) {
auto layer_type = node->input(1).get_element_type().get_type_name();
if (layer_type == "f32")
return "FP32";
Expand Down Expand Up @@ -827,8 +827,8 @@ std::vector<DeviceInformation> Plugin::filter_device_by_model(const std::vector<

std::vector<std::string> stateful_node_names;
for (auto& op : model->get_ops()) {
if (std::dynamic_pointer_cast<ov::op::util::AssignBase>(op) ||
std::dynamic_pointer_cast<ov::op::util::ReadValueBase>(op)) {
if (ov::as_type_ptr<ov::op::util::AssignBase>(op) ||
ov::as_type_ptr<ov::op::util::ReadValueBase>(op)) {
stateful_node_names.push_back(op->get_friendly_name());
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/hetero/src/subgraph_collector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -556,7 +556,7 @@ std::pair<ov::hetero::SubgraphsVector, ov::hetero::SubgraphsMappingInfo> ov::het
"supported by any plugin");
}
if (dump_dot_files) {
if (auto multi_subgraph_op = std::dynamic_pointer_cast<ov::op::util::MultiSubGraphOp>(node)) {
if (auto multi_subgraph_op = ov::as_type_ptr<ov::op::util::MultiSubGraphOp>(node)) {
for (size_t i = 0; i < multi_subgraph_op->get_internal_subgraphs_size(); ++i) {
if (const auto& sub_graph = multi_subgraph_op->get_function(i)) {
collect_affinities(sub_graph, debug_supported_ops.at(node->get_friendly_name()));
Expand Down Expand Up @@ -589,7 +589,7 @@ std::pair<ov::hetero::SubgraphsVector, ov::hetero::SubgraphsMappingInfo> ov::het
subgraph_id = default_id;
}
map_id.emplace(node->get_friendly_name(), subgraph_id);
if (auto multi_subgraph_op = std::dynamic_pointer_cast<ov::op::util::MultiSubGraphOp>(node)) {
if (auto multi_subgraph_op = ov::as_type_ptr<ov::op::util::MultiSubGraphOp>(node)) {
for (size_t i = 0; i < multi_subgraph_op->get_internal_subgraphs_size(); ++i) {
if (const auto& sub_graph = multi_subgraph_op->get_function(i)) {
collect_map_id(sub_graph, subgraph_id);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ jit_clamp_emitter::jit_clamp_emitter(dnnl::impl::cpu::aarch64::jit_generator* ho
dnnl::impl::cpu::aarch64::cpu_isa_t host_isa,
const std::shared_ptr<ov::Node>& node)
: jit_emitter(host, host_isa, node, get_arithmetic_binary_exec_precision(node)) {
const auto clamp = std::dynamic_pointer_cast<ov::op::v0::Clamp>(node);
const auto clamp = ov::as_type_ptr<ov::op::v0::Clamp>(node);
if (clamp == nullptr) {
OV_CPU_JIT_EMITTER_THROW("Can't cast to ov::op::v0::Clamp");
}
Expand Down Expand Up @@ -294,7 +294,7 @@ jit_elu_emitter::jit_elu_emitter(dnnl::impl::cpu::aarch64::jit_generator* host,
dnnl::impl::cpu::aarch64::cpu_isa_t host_isa,
const std::shared_ptr<ov::Node>& node)
: jit_emitter(host, host_isa, get_arithmetic_binary_exec_precision(node)) {
const auto elu = std::dynamic_pointer_cast<ov::op::v0::Elu>(node);
const auto elu = ov::as_type_ptr<ov::op::v0::Elu>(node);
if (elu == nullptr) {
OV_CPU_JIT_EMITTER_THROW("Can't cast to ov::op::v0::Clamp");
}
Expand Down Expand Up @@ -2633,7 +2633,7 @@ jit_swish_emitter::jit_swish_emitter(dnnl::impl::cpu::aarch64::jit_generator* ho
dnnl::impl::cpu::aarch64::cpu_isa_t host_isa,
const std::shared_ptr<ov::Node>& node)
: jit_emitter(host, host_isa, node, get_arithmetic_binary_exec_precision(node)) {
const auto swish = std::dynamic_pointer_cast<SwishNode>(node);
const auto swish = ov::as_type_ptr<SwishNode>(node);
if (swish == nullptr) {
OV_CPU_JIT_EMITTER_THROW("Can't cast to SwishNode");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ namespace ov {
} \
}, \
[](const std::shared_ptr<ov::Node>& n) -> std::set<std::vector<element::Type>> { \
const auto& gelu = std::dynamic_pointer_cast<ov::op::v7::Gelu>(n); \
const auto& gelu = ov::as_type_ptr<ov::op::v7::Gelu>(n); \
if (gelu == nullptr) { \
OPENVINO_THROW("Can't cast to ov::op::v7::Gelu"); \
} \
Expand Down Expand Up @@ -97,7 +97,7 @@ namespace ov {
} \
}, \
[](const std::shared_ptr<ov::Node>& n) -> std::set<std::vector<element::Type>> { \
const auto& round = std::dynamic_pointer_cast<ov::op::v5::Round>(n); \
const auto& round = ov::as_type_ptr<ov::op::v5::Round>(n); \
if (round == nullptr) { \
OPENVINO_THROW("Can't cast to ov::op::v5::Round"); \
} \
Expand Down Expand Up @@ -264,7 +264,7 @@ std::shared_ptr<snippets::Generator> CPUGenerator::clone() const {

ov::snippets::RegType CPUGenerator::get_specific_op_out_reg_type(const ov::Output<ov::Node>& out) const {
const auto op = out.get_node_shared_ptr();
if (std::dynamic_pointer_cast<intel_cpu::FusedMulAdd>(op) || std::dynamic_pointer_cast<intel_cpu::SwishNode>(op))
if (ov::as_type_ptr<intel_cpu::FusedMulAdd>(op) || ov::as_type_ptr<intel_cpu::SwishNode>(op))
return ov::snippets::RegType::vec;
else
return ov::snippets::RegType::undefined;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jit_load_memory_emitter::jit_load_memory_emitter(jit_generator* h, cpu_isa_t isa
src_prc == dst_prc;
OV_CPU_JIT_EMITTER_ASSERT(is_supported_precision, "Unsupported precision pair.");

const auto load = std::dynamic_pointer_cast<snippets::op::Load>(expr->get_node());
const auto load = ov::as_type_ptr<snippets::op::Load>(expr->get_node());
OV_CPU_JIT_EMITTER_ASSERT(load != nullptr, "Expects Load expression");
count = load->get_count();
byte_offset = load->get_offset();
Expand Down Expand Up @@ -66,7 +66,7 @@ jit_load_broadcast_emitter::jit_load_broadcast_emitter(jit_generator* h, cpu_isa
dst_prc.get_type_name());
OV_CPU_JIT_EMITTER_ASSERT(src_prc == ov::element::f32, "Only supports FP32 precision.");

const auto broadcast_load = std::dynamic_pointer_cast<snippets::op::BroadcastLoad>(expr->get_node());
const auto broadcast_load = ov::as_type_ptr<snippets::op::BroadcastLoad>(expr->get_node());
OV_CPU_JIT_EMITTER_ASSERT(broadcast_load != nullptr, "Expects BroadcastLoad expression");
byte_offset = broadcast_load->get_offset();
in_out_type_ = emitter_in_out_map::gpr_to_vec;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -390,15 +390,14 @@ std::shared_ptr<snippets::Generator> intel_cpu::CPUGenerator::clone() const {

ov::snippets::RegType intel_cpu::CPUGenerator::get_specific_op_out_reg_type(const ov::Output<ov::Node>& out) const {
const auto op = out.get_node_shared_ptr();
if (std::dynamic_pointer_cast<intel_cpu::BrgemmCPU>(op) ||
if (ov::as_type_ptr<intel_cpu::BrgemmCPU>(op) ||
#ifdef SNIPPETS_LIBXSMM_TPP
std::dynamic_pointer_cast<intel_cpu::tpp::modifier::TensorProcessingPrimitive>(op) ||
std::dynamic_pointer_cast<intel_cpu::tpp::op::Scalar>(op) ||
ov::as_type_ptr<intel_cpu::tpp::op::Scalar>(op) ||
#endif
std::dynamic_pointer_cast<intel_cpu::BrgemmCopyB>(op))
ov::as_type_ptr<intel_cpu::BrgemmCopyB>(op))
return ov::snippets::RegType::gpr;
else if (std::dynamic_pointer_cast<intel_cpu::FusedMulAdd>(op) ||
std::dynamic_pointer_cast<intel_cpu::SwishNode>(op))
else if (ov::as_type_ptr<intel_cpu::FusedMulAdd>(op) || ov::as_type_ptr<intel_cpu::SwishNode>(op))
return ov::snippets::RegType::vec;
else
return ov::snippets::RegType::undefined;
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/intel_cpu/src/graph.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ void Graph::Replicate(const std::shared_ptr<const ov::Model>& model,
auto createNode = [&](std::shared_ptr<ov::Node> op) -> NodePtr {
// special handling for Parameters and Results
if (op->get_type_info() == op::v0::Parameter::get_type_info_static()) {
auto input_index = model->get_parameter_index(std::dynamic_pointer_cast<op::v0::Parameter>(op));
auto input_index = model->get_parameter_index(ov::as_type_ptr<op::v0::Parameter>(op));
OPENVINO_ASSERT(input_index >= 0,
"CPU plugin cannot find op: ",
op->get_friendly_name(),
Expand All @@ -150,7 +150,7 @@ void Graph::Replicate(const std::shared_ptr<const ov::Model>& model,
}

if (op->get_type_info() == op::v0::Result::get_type_info_static()) {
auto output_index = model->get_result_index(std::dynamic_pointer_cast<op::v0::Result>(op));
auto output_index = model->get_result_index(ov::as_type_ptr<op::v0::Result>(op));
OPENVINO_ASSERT(output_index >= 0,
"CPU plugin cannot find op: ",
op->get_friendly_name(),
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/intel_cpu/src/nodes/adaptive_pooling.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@ bool AdaptivePooling::isSupportedOperation(const std::shared_ptr<const ov::Node>
std::string& errorMessage) noexcept {
try {
if (one_of(op->get_type_info(), ov::op::v8::AdaptiveAvgPool::get_type_info_static())) {
auto adaPool = std::dynamic_pointer_cast<const ov::opset8::AdaptiveAvgPool>(op);
auto adaPool = ov::as_type_ptr<const ov::opset8::AdaptiveAvgPool>(op);
if (!adaPool) {
errorMessage = "Only opset8 AdaptiveAvgPooling operation is supported";
return false;
}
} else if (one_of(op->get_type_info(), ov::op::v8::AdaptiveMaxPool::get_type_info_static())) {
auto adaPool = std::dynamic_pointer_cast<const ov::opset8::AdaptiveMaxPool>(op);
auto adaPool = ov::as_type_ptr<const ov::opset8::AdaptiveMaxPool>(op);
if (!adaPool) {
errorMessage = "Only opset8 AdaptiveMaxPooling operation is supported";
return false;
Expand Down
2 changes: 1 addition & 1 deletion src/plugins/intel_cpu/src/nodes/batch_to_space.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ namespace node {

bool BatchToSpace::isSupportedOperation(const std::shared_ptr<const ov::Node>& op, std::string& errorMessage) noexcept {
try {
const auto batchToSpace = std::dynamic_pointer_cast<const ov::opset2::BatchToSpace>(op);
const auto batchToSpace = ov::as_type_ptr<const ov::opset2::BatchToSpace>(op);
if (!batchToSpace) {
errorMessage = "Only opset2 BatchToSpace operation is supported";
return false;
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/intel_cpu/src/nodes/bin_conv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -921,7 +921,7 @@ bool BinaryConvolution::isSupportedOperation(const std::shared_ptr<const ov::Nod
return false;
}

const auto binConv = std::dynamic_pointer_cast<const ov::opset1::BinaryConvolution>(op);
const auto binConv = ov::as_type_ptr<const ov::opset1::BinaryConvolution>(op);
if (!binConv) {
errorMessage = "Only opset1 BinaryConvolution operation is supported";
return false;
Expand All @@ -941,7 +941,7 @@ BinaryConvolution::BinaryConvolution(const std::shared_ptr<ov::Node>& op, const
std::string errorMessage;
if (isSupportedOperation(op, errorMessage)) {
errorPrefix = "BinaryConvolution node with name '" + getName() + "' ";
const auto binConv = std::dynamic_pointer_cast<const ov::opset1::BinaryConvolution>(op);
const auto binConv = ov::as_type_ptr<const ov::opset1::BinaryConvolution>(op);

pad_value = binConv->get_pad_value();
for (size_t i = 0; i < binConv->get_strides().size(); i++) {
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/intel_cpu/src/nodes/bucketize.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ namespace node {

bool Bucketize::isSupportedOperation(const std::shared_ptr<const ov::Node>& op, std::string& errorMessage) noexcept {
try {
const auto bucketsize = std::dynamic_pointer_cast<const ov::opset3::Bucketize>(op);
const auto bucketsize = ov::as_type_ptr<const ov::opset3::Bucketize>(op);
if (!bucketsize) {
errorMessage = "Only opset3 Bucketize operation is supported";
return false;
Expand All @@ -37,7 +37,7 @@ Bucketize::Bucketize(const std::shared_ptr<ov::Node>& op, const GraphContext::CP
}

errorPrefix = "Bucketize layer with name '" + op->get_friendly_name() + "' ";
const auto bucketsize = std::dynamic_pointer_cast<const ov::opset3::Bucketize>(op);
const auto bucketsize = ov::as_type_ptr<const ov::opset3::Bucketize>(op);
if (bucketsize == nullptr)
OPENVINO_THROW("Operation with name '",
op->get_friendly_name(),
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/intel_cpu/src/nodes/causal_mask_preprocess.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -106,14 +106,14 @@ CausalMaskPreprocess::CausalMaskPreprocess(const std::shared_ptr<ov::Node>& op,
OPENVINO_THROW("CPU: " + errorMessage);
}

const auto node = std::dynamic_pointer_cast<const intel_cpu::CausalMaskPreprocessNode>(op);
const auto node = ov::as_type_ptr<const intel_cpu::CausalMaskPreprocessNode>(op);
m_config = node->get_config();
}

bool CausalMaskPreprocess::isSupportedOperation(const std::shared_ptr<const ov::Node>& op,
std::string& errorMessage) noexcept {
try {
const auto node = std::dynamic_pointer_cast<const intel_cpu::CausalMaskPreprocessNode>(op);
const auto node = ov::as_type_ptr<const intel_cpu::CausalMaskPreprocessNode>(op);
if (!node) {
errorMessage = "Only CausalMaskPreprocessNode operation is supported";
return false;
Expand Down
2 changes: 1 addition & 1 deletion src/plugins/intel_cpu/src/nodes/convert.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ namespace node {

bool Convert::isSupportedOperation(const std::shared_ptr<const ov::Node>& op, std::string& errorMessage) noexcept {
try {
const auto convert = std::dynamic_pointer_cast<const ov::opset1::Convert>(op);
const auto convert = ov::as_type_ptr<const ov::opset1::Convert>(op);
if (!convert) {
errorMessage = "Only opset1 Convert operation is supported";
return false;
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/intel_cpu/src/nodes/cum_sum.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ namespace node {

bool CumSum::isSupportedOperation(const std::shared_ptr<const ov::Node>& op, std::string& errorMessage) noexcept {
try {
const auto cumsum = std::dynamic_pointer_cast<const ov::opset3::CumSum>(op);
const auto cumsum = ov::as_type_ptr<const ov::opset3::CumSum>(op);
if (!cumsum) {
errorMessage = "Only opset3 CumSum operation is supported";
return false;
Expand Down Expand Up @@ -49,7 +49,7 @@ CumSum::CumSum(const std::shared_ptr<ov::Node>& op, const GraphContext::CPtr con
OPENVINO_THROW(errorPrefix, " doesn't support 'data' input tensor with rank: ", numOfDims);
}

const auto cumsum = std::dynamic_pointer_cast<const ov::opset3::CumSum>(op);
const auto cumsum = ov::as_type_ptr<const ov::opset3::CumSum>(op);
if (cumsum == nullptr)
OPENVINO_THROW("Operation with name '", op->get_friendly_name(), "' is not an instance of CumSum from opset3.");

Expand Down
8 changes: 4 additions & 4 deletions src/plugins/intel_cpu/src/nodes/deconv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -142,8 +142,8 @@ class DeconfolutionShapeInferFactory : public ShapeInferFactory {
bool Deconvolution::isSupportedOperation(const std::shared_ptr<const ov::Node>& op,
std::string& errorMessage) noexcept {
try {
if (std::dynamic_pointer_cast<const ov::op::v1::ConvolutionBackpropData>(op) == nullptr &&
std::dynamic_pointer_cast<const ov::op::v1::GroupConvolutionBackpropData>(op) == nullptr) {
if (ov::as_type_ptr<const ov::op::v1::ConvolutionBackpropData>(op) == nullptr &&
ov::as_type_ptr<const ov::op::v1::GroupConvolutionBackpropData>(op) == nullptr) {
errorMessage =
"Only opset1 ConvolutionBackpropData and GroupConvolutionBackpropData operations are supported";
return false;
Expand Down Expand Up @@ -173,7 +173,7 @@ Deconvolution::Deconvolution(const std::shared_ptr<ov::Node>& op, const GraphCon

const auto& weightDims = getWeightDims();

if (auto convBackprop = std::dynamic_pointer_cast<const ov::op::v1::ConvolutionBackpropData>(op)) {
if (auto convBackprop = ov::as_type_ptr<const ov::op::v1::ConvolutionBackpropData>(op)) {
algorithm = Algorithm::DeconvolutionCommon;

IC = weightDims[0];
Expand All @@ -195,7 +195,7 @@ Deconvolution::Deconvolution(const std::shared_ptr<ov::Node>& op, const GraphCon
deconvAttrs.outputPadding = convBackprop->get_output_padding();

autoPad = one_of(convBackprop->get_auto_pad(), ov::op::PadType::SAME_LOWER, ov::op::PadType::SAME_UPPER);
} else if (auto groupConvBackprop = std::dynamic_pointer_cast<const ov::op::v1::GroupConvolutionBackpropData>(op)) {
} else if (auto groupConvBackprop = ov::as_type_ptr<const ov::op::v1::GroupConvolutionBackpropData>(op)) {
algorithm = Algorithm::DeconvolutionGrouped;

groupNum = weightDims[0];
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/intel_cpu/src/nodes/def_conv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -775,7 +775,7 @@ DeformableConvolution::DeformableConvolution(const std::shared_ptr<ov::Node>& op
OPENVINO_THROW_NOT_IMPLEMENTED(errorMessage);
}
errorPrefix = "Deformable convolution with name '" + op->get_friendly_name() + "'";
auto defConvNodeBase = std::dynamic_pointer_cast<ov::op::util::DeformableConvolutionBase>(op);
auto defConvNodeBase = ov::as_type_ptr<ov::op::util::DeformableConvolutionBase>(op);
if (defConvNodeBase == nullptr)
OPENVINO_THROW(errorPrefix, " is not an instance of DeformableConvolutionBase.");

Expand All @@ -796,7 +796,7 @@ DeformableConvolution::DeformableConvolution(const std::shared_ptr<ov::Node>& op
autoPadding = one_of(defConvNodeBase->get_auto_pad(), ov::op::PadType::SAME_UPPER, ov::op::PadType::SAME_LOWER);

if (op->get_type_info() == ov::op::v8::DeformableConvolution::get_type_info_static()) {
auto defConvNode = std::dynamic_pointer_cast<ov::op::v8::DeformableConvolution>(op);
auto defConvNode = ov::as_type_ptr<ov::op::v8::DeformableConvolution>(op);
if (defConvNode == nullptr)
OPENVINO_THROW(errorPrefix, " is not an instance of DeformableConvolution from opset8.");
defConvAttr.with_bilinear_pad = defConvNode->get_bilinear_interpolation_pad();
Expand Down
Loading

0 comments on commit 8eb1deb

Please sign in to comment.