[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_yx_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 {
|
||||
@ -103,6 +104,7 @@ public:
|
||||
int32_t b_fs_yx_fsv16_network = 0;
|
||||
int32_t b_fs_zyx_fsv16_network = 0;
|
||||
int32_t bs_fs_yx_bsv16_fsv16_network = 0;
|
||||
int32_t use_onednn_impls = 0;
|
||||
};
|
||||
|
||||
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;
|
||||
preferred_impl = (kKeyValue > 64) ? impl_types::ocl : impl_types::cpu;
|
||||
} 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;
|
||||
|
||||
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:
|
||||
_optimization_attributes.bs_fs_yx_bsv16_fsv16_network = val;
|
||||
break;
|
||||
case optimization_attributes_type::use_onednn_impls:
|
||||
_optimization_attributes.use_onednn_impls = val;
|
||||
break;
|
||||
default:
|
||||
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)
|
||||
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