[CPU] Fix ScaledDotProductAttention build failure on ubuntu18 (#21123)

This commit is contained in:
Luo Cheng authored and GitHub committed 2023-11-17 10:14:01 +00:00
1 parent 6bdc1597ed
commit e4311aae46
3 files changed
+7 -17

No files matched your search

@@ -753,7 +753,6 @@ void ScaledDotProductAttention::execute(dnnl::stream strm) {
}
bool ScaledDotProductAttention::isSupportedOperation(const std::shared_ptr<const ngraph::Node>& op, std::string& errorMessage) noexcept {
#if defined(OPENVINO_ARCH_X86_64)
try {
if (!std::dynamic_pointer_cast<const ov::op::v13::ScaledDotProductAttention>(op)) {
errorMessage = "Only ScaledDotProductAttention operation are supported";
@@ -774,10 +773,6 @@ bool ScaledDotProductAttention::isSupportedOperation(const std::shared_ptr<const
return false;
}
return true;
#else
// current optimization is not suitable for ARM
return false;
#endif
}
} // namespace node
@@ -433,7 +433,7 @@ void Transformations::PreLpt(const std::vector<ov::element::Type>& defaultPrecis
CPU_SET_CALLBACK_COMMON(manager, nmsCallback, ov::pass::ConvertNMS9ToNMSIEInternal);
CPU_SET_CALLBACK_COMMON(manager, nmsCallback, ov::pass::ConvertMulticlassNmsToMulticlassNmsIE);
CPU_SET_CALLBACK_COMMON(manager, nmsCallback, ov::pass::ConvertMatrixNmsToMatrixNmsIE);
CPU_SET_CALLBACK_COMMON(manager,
CPU_SET_CALLBACK_X64(manager,
[](const_node_ptr &node) -> bool {
std::string errorMsg;
return node::ScaledDotProductAttention::isSupportedOperation(node, errorMsg);
@@ -470,7 +470,6 @@ void Transformations::PreLpt(const std::vector<ov::element::Type>& defaultPrecis
CPU_DISABLE_PASS_COMMON(manager, ov::pass::ConvertTopK11ToTopK3);
CPU_DISABLE_PASS_COMMON(manager, ov::pass::HSwishDecomposition);
CPU_DISABLE_PASS_COMMON(manager, ov::pass::MatMulConstTransposesExtraction);
CPU_DISABLE_PASS_X64(manager, ov::pass::ScaledDotProductAttentionDecomposition);
CPU_DISABLE_PASS_X64(manager, ov::pass::HSigmoidDecomposition);
CPU_DISABLE_PASS_X64(manager, ov::pass::ReduceL1Decomposition);
@@ -109,13 +109,16 @@ struct precision_of<float16> {
};
#define PLAINTENSOR_RANK_MAX 8
struct PlainTensorBase {
template <typename DT>
struct PlainTensor {
size_t m_strides[PLAINTENSOR_RANK_MAX];
size_t m_dims[PLAINTENSOR_RANK_MAX];
size_t m_rank = 0;
void* m_ptr = nullptr;
size_t m_capacity = 0;
bool with_storage = false;
MemoryPtr m_mem; // hold memory ptr reference
operator bool() const {
return static_cast<bool>(m_ptr);
@@ -135,13 +138,6 @@ struct PlainTensorBase {
assert(i < m_rank);
return m_strides[i];
}
virtual ov::element::Type get_precision(void) = 0;
virtual void reset(MemoryPtr mem) = 0;
};
template <typename DT>
struct PlainTensor : public PlainTensorBase {
MemoryPtr m_mem; // hold memory ptr reference
PlainTensor(MemoryPtr mem) {
reset(mem);
}
@@ -172,14 +168,14 @@ struct PlainTensor : public PlainTensorBase {
}
}
void reset(MemoryPtr mem) override {
void reset(MemoryPtr mem) {
assert_dt<DT>(mem->getDesc().getPrecision());
m_mem = mem;
// this reshape_to() can do reshape w/o additional cost
resize(mem->getStaticDims(), reinterpret_cast<DT*>(mem->getData()));
}
ov::element::Type get_precision(void) override {
ov::element::Type get_precision(void) {
return precision_of<DT>::value;
}