[GPU] Add use OneDNN impls attribute (#7716)

This commit is contained in:
Sergey Shlyapnikov 2021-09-30 13:15:40 +03:00 committed by GitHub
parent d0efd61aad
commit f3c8f2bc49
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 2 deletions

View File

@ -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:

View File

@ -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");
} }

View File

@ -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
} }