@@ -355,14 +355,22 @@ status_t init_conf_wino(acl_conv_conf_t &acp, memory_desc_t &src_md,
355
355
// Under these conditions, fallback to faster GEMM-based convolution
356
356
// unless the user explicitly specifies Winograd algorithm
357
357
// clang-format off
358
- if (one_of (true , src_md.dims [2 ] > 112 , // ih
359
- src_md.dims [3 ] > 112 , // iw
360
- src_md.dims [1 ] < 64 , // ic
361
- dst_md.dims [1 ] < 64 , // oc
362
- dnnl_get_max_threads () > 28 )
363
- && cd.alg_kind == alg_kind::convolution_auto) {
364
- return status::unimplemented;
358
+
359
+ // Heuristic only for servers
360
+ if (dnnl_get_max_threads () > 28 ) {
361
+ if (one_of (true , src_md.dims [2 ] > 112 , // ih
362
+ src_md.dims [3 ] > 112 ) // iw
363
+ && cd.alg_kind == alg_kind::convolution_auto) {
364
+ return status::unimplemented;
365
+ }
365
366
}
367
+ // Heuristic for all devices
368
+ if (one_of (true , src_md.dims [1 ] < 64 , // ic
369
+ dst_md.dims [1 ] < 64 ) // oc
370
+ && cd.alg_kind == alg_kind::convolution_auto) {
371
+ return status::unimplemented;
372
+ }
373
+
366
374
// clang-format on
367
375
368
376
// General Compute Library checks, memory tags are also set there
0 commit comments