@@ -465,6 +465,13 @@ void MKLDNNConvolutionNode::getSupportedDescriptors() {
465
465
auto inputShape = getInputShapeAtPort (0 );
466
466
auto outputShape = getOutputShapeAtPort (0 );
467
467
468
+ if (one_of (inputDataType, memory::data_type::f32, memory::data_type::bf16) &&
469
+ impl::cpu::x64::mayiuse (impl::cpu::x64::avx512_core)) {
470
+ in_candidate = std::make_shared<DnnlBlockedMemoryDesc>(inputShape, inputDataType, nspc);
471
+ out_candidate = std::make_shared<DnnlBlockedMemoryDesc>(outputShape, outputDataType, nspc);
472
+ createDescriptor ({ in_candidate }, { out_candidate });
473
+ }
474
+
468
475
if (IC == 1 && groupOC == 1 ) {
469
476
in_candidate = std::make_shared<DnnlBlockedMemoryDesc>(inputShape, inputDataType, ncsp);
470
477
out_candidate = std::make_shared<DnnlBlockedMemoryDesc>(outputShape, outputDataType, ncsp);
@@ -488,7 +495,9 @@ void MKLDNNConvolutionNode::getSupportedDescriptors() {
488
495
out_candidate = std::make_shared<DnnlBlockedMemoryDesc>(outputShape, outputDataType, ncsp);
489
496
createDescriptor ({ in_candidate }, { out_candidate });
490
497
491
- if (inputDataType != memory::data_type::bf16 && isNspcAvailable ()) {
498
+ if ((inputDataType != memory::data_type::bf16 && isNspcAvailable ()) ||
499
+ (one_of (inputDataType, memory::data_type::f32, memory::data_type::bf16) &&
500
+ impl::cpu::x64::mayiuse (impl::cpu::x64::avx512_core))) {
492
501
in_candidate = std::make_shared<DnnlBlockedMemoryDesc>(inputShape, inputDataType, nspc);
493
502
out_candidate = std::make_shared<DnnlBlockedMemoryDesc>(outputShape, outputDataType, nspc);
494
503
createDescriptor ({ in_candidate }, { out_candidate });
0 commit comments