[GNA] Fixed clang 13 build issue (#11238)

This commit is contained in:
Dmitrii Khurtin
2022-03-29 19:06:50 +03:00
committed by GitHub
parent d261da4820
commit 4b0417018a
5 changed files with 47 additions and 78 deletions
+15 -25
View File
@@ -412,27 +412,17 @@ static void make_gna_pwl(const T* m,
}
}
template<typename T>
static void make_gna_pwl(const std::tuple<T>& args,
const std::shared_ptr<ov::op::v0::Constant>& m,
const std::shared_ptr<ov::op::v0::Constant>& b,
const std::shared_ptr<ov::op::v0::Constant>& alpha,
double in_scale,
double out_scale,
std::vector<gna_pwl_segment_t> &gna_pwl) {
IE_ASSERT(m->get_element_type() == T::value);
using A = typename ngraph::element_type_traits<T::value>::value_type;
make_gna_pwl(m->get_data_ptr<A>(),
b->get_data_ptr<A>(),
alpha->get_data_ptr<A>(),
m->get_byte_size() / sizeof(A),
in_scale,
out_scale,
gna_pwl);
static void make_gna_pwl(std::tuple<>&&,
const std::shared_ptr<ov::op::v0::Constant>&,
const std::shared_ptr<ov::op::v0::Constant>&,
const std::shared_ptr<ov::op::v0::Constant>&,
double,
double,
std::vector<gna_pwl_segment_t>&) {
}
template<typename T, typename ...Types>
static void make_gna_pwl(const std::tuple<T, Types...>& args,
static void make_gna_pwl(std::tuple<T, Types...>&& types,
const std::shared_ptr<ov::op::v0::Constant>& m,
const std::shared_ptr<ov::op::v0::Constant>& b,
const std::shared_ptr<ov::op::v0::Constant>& alpha,
@@ -440,13 +430,13 @@ static void make_gna_pwl(const std::tuple<T, Types...>& args,
double out_scale,
std::vector<gna_pwl_segment_t> &gna_pwl) {
if (m->get_element_type() != T::value) {
make_gna_pwl<Types...>(std::tuple<Types...>(),
m,
b,
alpha,
in_scale,
out_scale,
gna_pwl);
make_gna_pwl(std::tuple<Types...>(),
m,
b,
alpha,
in_scale,
out_scale,
gna_pwl);
return;
}
+15 -22
View File
@@ -38,43 +38,36 @@ public:
std::shared_ptr<ngraph::Node> get_base_node();
private:
template<typename T1>
bool evaluate_pwl(const std::tuple<>&, ov::TensorVector&, const ov::TensorVector&) const {
return false;
}
template<typename ...Types2>
bool evaluate_pwl(const std::tuple<>&, const std::tuple<Types2...>&, ov::TensorVector&, const ov::TensorVector&) const {
return false;
}
template<typename T1, typename ...Types1, typename ...Types2>
bool evaluate_pwl(const std::tuple<T1, Types1...>&,
const std::tuple<Types2...>& args2,
const std::tuple<Types2...>& types2,
ov::TensorVector& outputs,
const ov::TensorVector& inputs) const {
if (evaluate_pwl<T1, Types2...>(args2, outputs, inputs)) {
if (evaluate_pwl<T1>(types2, outputs, inputs)) {
return true;
}
return evaluate_pwl<Types1..., Types2...>(std::tuple<Types1...>(), args2, outputs, inputs);
}
template<typename T1, typename ...Types2>
bool evaluate_pwl(const std::tuple<T1>&,
const std::tuple<Types2...>& args2,
ov::TensorVector& outputs,
const ov::TensorVector& inputs) const {
return evaluate_pwl<T1, Types2...>(args2, outputs, inputs);
return evaluate_pwl(std::tuple<Types1...>(), types2, outputs, inputs);
}
template<typename T1, typename T2, typename ...Types2>
bool evaluate_pwl(const std::tuple<T2, Types2...>& args2,
bool evaluate_pwl(const std::tuple<T2, Types2...>&,
ov::TensorVector& outputs,
const ov::TensorVector& inputs) const {
return inputs[1].get_element_type() == T1::value &&
inputs[0].get_element_type() == T2::value &&
evaluate<T1, T2>(outputs, inputs) ||
evaluate_pwl<T1, Types2...>(std::tuple<Types2...>(), outputs, inputs);
}
template<typename T1, typename T2>
bool evaluate_pwl(const std::tuple<T2>& args2,
ov::TensorVector& outputs,
const ov::TensorVector& inputs) const {
return inputs[1].get_element_type() == T1::value &&
inputs[0].get_element_type() == T2::value &&
evaluate<T1, T2>(outputs, inputs);
evaluate_pwl<T1>(std::tuple<Types2...>(), outputs, inputs);
}
template <typename T1, typename T2>
+4 -7
View File
@@ -19,19 +19,16 @@ static bool get_constant_value(const std::shared_ptr<ngraph::opset8::Constant>&
return true;
}
template<typename T>
static bool get_constant_value(const std::tuple<T>& args,
const std::shared_ptr<ngraph::opset8::Constant>& constant, std::vector<double>& values) {
return constant->get_element_type() == T::value &&
get_constant_value<T>(constant, values);
static bool get_constant_value(std::tuple<>&&, const std::shared_ptr<ngraph::opset8::Constant>&, std::vector<double>&) {
return false;
}
template<typename T, typename ...Types>
static bool get_constant_value(const std::tuple<T, Types...>&,
static bool get_constant_value(std::tuple<T, Types...>&&,
const std::shared_ptr<ngraph::opset8::Constant>& constant, std::vector<double>& values) {
return constant->get_element_type() == T::value &&
get_constant_value<T>(constant, values) ||
get_constant_value<Types...>(std::tuple<Types...>(), constant, values);
get_constant_value(std::tuple<Types...>(), constant, values);
}
static bool get_constant_value(const std::shared_ptr<ngraph::opset8::Constant>& constant, std::vector<double>& values) {
@@ -981,8 +981,8 @@ void InsertCopyLayerPass::run() {
}
for (auto & l : *pLayers) {
if (!l->outData.size() == 0 &&
!getInputTo(l->outData[0]).size() == 0) continue;
if (l->outData.size() > 0 &&
getInputTo(l->outData[0]).size() > 0) continue;
bool bNeedInsertCopyLayer = true;
CNNNetDFS(l, [&l, &bNeedInsertCopyLayer](CNNLayerPtr layer) {
@@ -455,34 +455,23 @@ bool transform_to_pwl(
return true;
}
template<typename T>
bool transform_to_pwl(const std::tuple<T>& args,
const std::shared_ptr<ngraph::Node>& fake_quantize,
const std::shared_ptr<ngraph::Node>& node,
double allowed_err_pct);
template<typename T, typename ...Types>
bool transform_to_pwl(const std::tuple<T, Types...>& args,
const std::shared_ptr<ngraph::Node>& fake_quantize,
const std::shared_ptr<ngraph::Node>& node,
double allowed_err_pct) {
auto op = std::dynamic_pointer_cast<T>(node);
if (op) {
return transform_to_pwl(fake_quantize, op, allowed_err_pct);
}
return transform_to_pwl<Types...>(std::tuple<Types...>(), fake_quantize, node, allowed_err_pct);
static bool transform_to_pwl(std::tuple<>&&,
const std::shared_ptr<ngraph::Node>&,
const std::shared_ptr<ngraph::Node>&,
double) {
return false;
}
template<typename T>
bool transform_to_pwl(const std::tuple<T>& args,
const std::shared_ptr<ngraph::Node>& fake_quantize,
const std::shared_ptr<ngraph::Node>& node,
double allowed_err_pct) {
template<typename T, typename ...Types>
static bool transform_to_pwl(std::tuple<T, Types...>&&,
const std::shared_ptr<ngraph::Node>& fake_quantize,
const std::shared_ptr<ngraph::Node>& node,
double allowed_err_pct) {
auto op = std::dynamic_pointer_cast<T>(node);
if (op) {
return transform_to_pwl(fake_quantize, op, allowed_err_pct);
}
return false;
return transform_to_pwl(std::tuple<Types...>(), fake_quantize, node, allowed_err_pct);
}
static std::shared_ptr<ngraph::pattern::Matcher> create_matcher(ov::graph_rewrite_callback& handler_callback,