[GPU] Add use OneDNN impls attribute (#7716)
This commit is contained in:
parent
d0efd61aad
commit
f3c8f2bc49
@ -90,7 +90,8 @@ public:
|
|||||||
b_fs_zyx_fsv32_network,
|
b_fs_zyx_fsv32_network,
|
||||||
b_fs_yx_fsv16_network,
|
b_fs_yx_fsv16_network,
|
||||||
b_fs_zyx_fsv16_network,
|
b_fs_zyx_fsv16_network,
|
||||||
bs_fs_yx_bsv16_fsv16_network
|
bs_fs_yx_bsv16_fsv16_network,
|
||||||
|
use_onednn_impls
|
||||||
};
|
};
|
||||||
|
|
||||||
struct optimization_attributes {
|
struct optimization_attributes {
|
||||||
@ -103,6 +104,7 @@ public:
|
|||||||
int32_t b_fs_yx_fsv16_network = 0;
|
int32_t b_fs_yx_fsv16_network = 0;
|
||||||
int32_t b_fs_zyx_fsv16_network = 0;
|
int32_t b_fs_zyx_fsv16_network = 0;
|
||||||
int32_t bs_fs_yx_bsv16_fsv16_network = 0;
|
int32_t bs_fs_yx_bsv16_fsv16_network = 0;
|
||||||
|
int32_t use_onednn_impls = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -843,7 +843,7 @@ impl_types layout_optimizer::get_preferred_impl_type(program_node& node) {
|
|||||||
const size_t kKeyValue = kBatchNum * std::min(kClassNum, static_cast<size_t>(8)) * kNStreams;
|
const size_t kKeyValue = kBatchNum * std::min(kClassNum, static_cast<size_t>(8)) * kNStreams;
|
||||||
preferred_impl = (kKeyValue > 64) ? impl_types::ocl : impl_types::cpu;
|
preferred_impl = (kKeyValue > 64) ? impl_types::ocl : impl_types::cpu;
|
||||||
} else if (node.is_type<reorder>()) {
|
} else if (node.is_type<reorder>()) {
|
||||||
if (!node.get_program().get_engine().get_device_info().supports_immad)
|
if (!_optimization_attributes.use_onednn_impls)
|
||||||
return impl_types::ocl;
|
return impl_types::ocl;
|
||||||
|
|
||||||
std::vector<format> onednn_optimized_fmt = {
|
std::vector<format> onednn_optimized_fmt = {
|
||||||
@ -974,6 +974,9 @@ void layout_optimizer::set_optimization_attribute(optimization_attributes_type a
|
|||||||
case optimization_attributes_type::bs_fs_yx_bsv16_fsv16_network:
|
case optimization_attributes_type::bs_fs_yx_bsv16_fsv16_network:
|
||||||
_optimization_attributes.bs_fs_yx_bsv16_fsv16_network = val;
|
_optimization_attributes.bs_fs_yx_bsv16_fsv16_network = val;
|
||||||
break;
|
break;
|
||||||
|
case optimization_attributes_type::use_onednn_impls:
|
||||||
|
_optimization_attributes.use_onednn_impls = val;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
throw std::out_of_range("unsupported layout optimization attribute");
|
throw std::out_of_range("unsupported layout optimization attribute");
|
||||||
}
|
}
|
||||||
|
@ -1382,4 +1382,10 @@ void program::set_layout_optimizer_attributes(layout_optimizer& lo) {
|
|||||||
|
|
||||||
if (should_use_bs_fs_yx_bsv16_fsv16)
|
if (should_use_bs_fs_yx_bsv16_fsv16)
|
||||||
lo.set_optimization_attribute(layout_optimizer::optimization_attributes_type::bs_fs_yx_bsv16_fsv16_network, 1);
|
lo.set_optimization_attribute(layout_optimizer::optimization_attributes_type::bs_fs_yx_bsv16_fsv16_network, 1);
|
||||||
|
|
||||||
|
#ifdef ENABLE_ONEDNN_FOR_GPU
|
||||||
|
auto& engine = get_engine();
|
||||||
|
if (engine.get_device_info().supports_immad && engine.configuration().queue_type == queue_types::in_order)
|
||||||
|
lo.set_optimization_attribute(layout_optimizer::optimization_attributes_type::use_onednn_impls, 1);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user