[GNA] Fixed clang 13 build issue (#11238)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user