// Check for fsv16 imad kernel
else if ((input_layout.format.dimension() == 4) &&
(conv->activations_zero_points.empty() && conv->weights_zero_points.empty()) &&
- (!((conv->groups > 1) && (in_features_per_group == 1) && (out_features_per_group == 1))))
+ ((in_features_per_group > 8) || (out_features_per_group >= 4)))
return true;
return false;
}
(conv->activations_zero_points.empty() && conv->weights_zero_points.empty()) &&
(input_layout.data_type == data_types::i8 || input_layout.data_type == data_types::u8) &&
(weights_layout.data_type == data_types::i8 || weights_layout.data_type == data_types::u8) &&
- (!((conv->groups > 1) && (in_features_per_group == 1) && (out_features_per_group == 1))))
+ ((in_features_per_group > 8) || (out_features_per_group >= 4)))
return true;
bool format_ver = (input_layout.format == format::bfzyx || input_layout.format == format::b_fs_zyx_fsv16 ||
auto layout = node.get_output_layout();
if (layout.format.spatial_num() == 2 &&
(layout.data_type == data_types::i8 || layout.data_type == data_types::u8) &&
- layout.size.batch[0] % 16 == 0)
+ layout.size.batch[0] % 16 == 0) {
+ if (layout.size.feature[0] > 8) {
+ expected = format::b_fs_yx_fsv16;
+ } else {
expected = format::b_fs_yx_fsv4;
+ }
+ }
} else if (node.is_type<reorder>() || node.is_type<input_layout>()) {
expected = node.get_output_layout().format;
} else if (node.is_type<reshape>()) {