diff --git a/tests/benchdnn/binary/binary.cpp b/tests/benchdnn/binary/binary.cpp index c31039d92d..78e3948730 100644 --- a/tests/benchdnn/binary/binary.cpp +++ b/tests/benchdnn/binary/binary.cpp @@ -128,6 +128,7 @@ void skip_unimplemented_prb(const prb_t *prb, res_t *res) { std::vector dts = {prb->sdt[0], prb->sdt[1], prb->ddt}; skip_unimplemented_data_type(dts, prb->dir, res); skip_unimplemented_arg_scale(prb->attr, res); + skip_unimplemented_binary_po(prb->attr, res); skip_unimplemented_prelu_po(prb->attr, res, dnnl_binary); if (is_gpu()) { diff --git a/tests/benchdnn/bnorm/bnorm.cpp b/tests/benchdnn/bnorm/bnorm.cpp index 0f0760626c..7d1079bbff 100644 --- a/tests/benchdnn/bnorm/bnorm.cpp +++ b/tests/benchdnn/bnorm/bnorm.cpp @@ -455,6 +455,7 @@ void skip_unimplemented_prb(const prb_t *prb, res_t *res) { skip_unimplemented_data_type({prb->dt}, prb->dir, res); skip_unimplemented_sum_po( prb->attr, res, dnnl_batch_normalization, prb->dt); + skip_unimplemented_binary_po(prb->attr, res); skip_unimplemented_prelu_po(prb->attr, res, dnnl_batch_normalization); // Non-zero alpha is not supported for training in general. diff --git a/tests/benchdnn/brgemm/brgemm.cpp b/tests/benchdnn/brgemm/brgemm.cpp index 80e9ba7efe..12549adbbd 100644 --- a/tests/benchdnn/brgemm/brgemm.cpp +++ b/tests/benchdnn/brgemm/brgemm.cpp @@ -495,6 +495,7 @@ void skip_unimplemented_prb(const prb_t *prb, res_t *res) { prb->dir, res); skip_unimplemented_sum_po( prb->attr, res, dnnl_gemm, prb->src_dt(), prb->dst_dt()); + skip_unimplemented_binary_po(prb->attr, res); skip_unimplemented_prelu_po(prb->attr, res, dnnl_gemm); // Unconditionally skip remaining unimplemented cases. diff --git a/tests/benchdnn/concat/concat.cpp b/tests/benchdnn/concat/concat.cpp index e511b1ab11..7ccd7e322c 100644 --- a/tests/benchdnn/concat/concat.cpp +++ b/tests/benchdnn/concat/concat.cpp @@ -116,6 +116,7 @@ int fill_src(int input_idx, dnnl_data_type_t dt, dnn_mem_t &mem_dt, void skip_unimplemented_prb(const prb_t *prb, res_t *res) { skip_unimplemented_data_type({prb->sdt, prb->ddt}, prb->dir, res); skip_unimplemented_sum_po(prb->attr, res, dnnl_concat, prb->sdt); + skip_unimplemented_binary_po(prb->attr, res); skip_unimplemented_prelu_po(prb->attr, res, dnnl_concat); skip_unimplemented_arg_scale(prb->attr, res); diff --git a/tests/benchdnn/conv/conv.cpp b/tests/benchdnn/conv/conv.cpp index 3d9649b732..5625f7e32e 100644 --- a/tests/benchdnn/conv/conv.cpp +++ b/tests/benchdnn/conv/conv.cpp @@ -378,6 +378,7 @@ void skip_unimplemented_prb(const prb_t *prb, res_t *res) { prb->dir, res); skip_unimplemented_sum_po(prb->attr, res, dnnl_convolution, prb->get_dt(SRC), prb->get_dt(DST)); + skip_unimplemented_binary_po(prb->attr, res); skip_unimplemented_prelu_po(prb->attr, res, dnnl_convolution); if (is_cpu()) { diff --git a/tests/benchdnn/deconv/deconv.cpp b/tests/benchdnn/deconv/deconv.cpp index 1569554219..b81b3fb56e 100644 --- a/tests/benchdnn/deconv/deconv.cpp +++ b/tests/benchdnn/deconv/deconv.cpp @@ -349,6 +349,7 @@ void skip_unimplemented_prb(const prb_t *prb, res_t *res) { prb->dir, res); skip_unimplemented_sum_po( prb->attr, res, dnnl_deconvolution, prb->get_dt(SRC)); + skip_unimplemented_binary_po(prb->attr, res); skip_unimplemented_prelu_po(prb->attr, res, dnnl_deconvolution); // GPU supports only post ops and all but x8s8bf16 and f32xf16f32 cfg diff --git a/tests/benchdnn/dnnl_common.cpp b/tests/benchdnn/dnnl_common.cpp index 366a9d4368..589f6792a9 100644 --- a/tests/benchdnn/dnnl_common.cpp +++ b/tests/benchdnn/dnnl_common.cpp @@ -803,6 +803,20 @@ void skip_unimplemented_sum_po(const attr_t &attr, res_t *res, } } +void skip_unimplemented_binary_po(const attr_t &attr, res_t *res) { + const auto &po = attr.post_ops; + if (po.is_def()) return; + + if (is_gpu()) { + const int select_idx = po.find(attr_t::post_ops_t::kind_t::SELECT); + if (select_idx != -1) { + res->state = SKIPPED; + res->reason = skip_reason::case_not_supported; + return; + } + } +} + void skip_unimplemented_prelu_po( const attr_t &attr, res_t *res, dnnl_primitive_kind_t pkind) { const auto &po = attr.post_ops; diff --git a/tests/benchdnn/dnnl_common.hpp b/tests/benchdnn/dnnl_common.hpp index 38a732279e..2aae065854 100644 --- a/tests/benchdnn/dnnl_common.hpp +++ b/tests/benchdnn/dnnl_common.hpp @@ -262,6 +262,7 @@ void skip_unimplemented_data_type( void skip_unimplemented_sum_po(const attr_t &attr, res_t *res, dnnl_primitive_kind_t pkind, dnnl_data_type_t src_dt, dnnl_data_type_t dst_dt = dnnl_data_type_undef); +void skip_unimplemented_binary_po(const attr_t &attr, res_t *res); void skip_unimplemented_prelu_po( const attr_t &attr, res_t *res, dnnl_primitive_kind_t pkind); void skip_invalid_inplace(res_t *res, dnnl_data_type_t sdt, diff --git a/tests/benchdnn/eltwise/eltwise.cpp b/tests/benchdnn/eltwise/eltwise.cpp index ac46a5a929..2b2c435588 100644 --- a/tests/benchdnn/eltwise/eltwise.cpp +++ b/tests/benchdnn/eltwise/eltwise.cpp @@ -287,6 +287,7 @@ int fill_data(const prb_t *prb, data_kind_t kind, dnn_mem_t &mem_dt, void skip_unimplemented_prb(const prb_t *prb, res_t *res) { skip_unimplemented_data_type({prb->dt}, prb->dir, res); skip_unimplemented_sum_po(prb->attr, res, dnnl_eltwise, prb->dt); + skip_unimplemented_binary_po(prb->attr, res); skip_unimplemented_prelu_po(prb->attr, res, dnnl_eltwise); if (is_gpu() && (prb->dt == dnnl_f8_e5m2 || prb->dt == dnnl_f8_e4m3) diff --git a/tests/benchdnn/ip/ip.cpp b/tests/benchdnn/ip/ip.cpp index 6a7a92f715..aa06c892dd 100644 --- a/tests/benchdnn/ip/ip.cpp +++ b/tests/benchdnn/ip/ip.cpp @@ -246,6 +246,7 @@ void skip_unimplemented_prb(const prb_t *prb, res_t *res) { prb->dir, res); skip_unimplemented_sum_po(prb->attr, res, dnnl_inner_product, prb->get_dt(SRC), prb->get_dt(DST)); + skip_unimplemented_binary_po(prb->attr, res); skip_unimplemented_prelu_po(prb->attr, res, dnnl_inner_product); if (is_cpu()) { diff --git a/tests/benchdnn/lnorm/lnorm.cpp b/tests/benchdnn/lnorm/lnorm.cpp index 911d42af92..e46954ba54 100644 --- a/tests/benchdnn/lnorm/lnorm.cpp +++ b/tests/benchdnn/lnorm/lnorm.cpp @@ -455,6 +455,7 @@ void skip_unimplemented_prb(const prb_t *prb, res_t *res) { {prb->dt[0], prb->dt[1], prb->ss_dt}, prb->dir, res); skip_unimplemented_sum_po( prb->attr, res, dnnl_layer_normalization, prb->dt[0]); + skip_unimplemented_binary_po(prb->attr, res); skip_unimplemented_prelu_po(prb->attr, res, dnnl_layer_normalization); if (is_gpu() && prb->attr.post_ops.len() != 0) { diff --git a/tests/benchdnn/lrn/lrn.cpp b/tests/benchdnn/lrn/lrn.cpp index 0c0652de7a..f453cdc425 100644 --- a/tests/benchdnn/lrn/lrn.cpp +++ b/tests/benchdnn/lrn/lrn.cpp @@ -118,6 +118,7 @@ dnnl_status_t init_pd(init_pd_args_t &init_pd_args) { void skip_unimplemented_prb(const prb_t *prb, res_t *res) { skip_unimplemented_data_type({prb->dt}, prb->dir, res); skip_unimplemented_sum_po(prb->attr, res, dnnl_lrn, prb->dt); + skip_unimplemented_binary_po(prb->attr, res); skip_unimplemented_prelu_po(prb->attr, res, dnnl_lrn); } diff --git a/tests/benchdnn/matmul/matmul.cpp b/tests/benchdnn/matmul/matmul.cpp index 1cee384baf..6c4d3e8fb2 100644 --- a/tests/benchdnn/matmul/matmul.cpp +++ b/tests/benchdnn/matmul/matmul.cpp @@ -485,6 +485,7 @@ void skip_unimplemented_prb(const prb_t *prb, res_t *res) { prb->dir, res); skip_unimplemented_sum_po( prb->attr, res, dnnl_matmul, prb->src_dt(), prb->dst_dt()); + skip_unimplemented_binary_po(prb->attr, res); skip_unimplemented_prelu_po(prb->attr, res, dnnl_matmul); if ((is_nvidia_gpu() || is_amd_gpu()) && !prb->sparse_options.is_def()) { diff --git a/tests/benchdnn/pool/pool.cpp b/tests/benchdnn/pool/pool.cpp index 8b040e946a..e20b8e82cd 100644 --- a/tests/benchdnn/pool/pool.cpp +++ b/tests/benchdnn/pool/pool.cpp @@ -144,6 +144,7 @@ dnnl_status_t init_pd(init_pd_args_t &init_pd_args) { void skip_unimplemented_prb(const prb_t *prb, res_t *res) { skip_unimplemented_data_type({prb->src_dt(), prb->dst_dt()}, prb->dir, res); skip_unimplemented_sum_po(prb->attr, res, dnnl_pooling, prb->src_dt()); + skip_unimplemented_binary_po(prb->attr, res); skip_unimplemented_prelu_po(prb->attr, res, dnnl_pooling); if (is_cpu() && prb->src_dt() != prb->dst_dt()) { diff --git a/tests/benchdnn/prelu/prelu.cpp b/tests/benchdnn/prelu/prelu.cpp index 32877e6123..a751b1e2ad 100644 --- a/tests/benchdnn/prelu/prelu.cpp +++ b/tests/benchdnn/prelu/prelu.cpp @@ -142,6 +142,7 @@ dnnl_status_t init_pd(init_pd_args_t &init_pd_args) { void skip_unimplemented_prb(const prb_t *prb, res_t *res) { skip_unimplemented_data_type(prb->sdt, FWD_D, res); skip_unimplemented_sum_po(prb->attr, res, dnnl_prelu, prb->sdt[0]); + skip_unimplemented_binary_po(prb->attr, res); skip_unimplemented_prelu_po(prb->attr, res, dnnl_prelu); } diff --git a/tests/benchdnn/reduction/reduction.cpp b/tests/benchdnn/reduction/reduction.cpp index 170db9647f..f34b46beb0 100644 --- a/tests/benchdnn/reduction/reduction.cpp +++ b/tests/benchdnn/reduction/reduction.cpp @@ -204,6 +204,7 @@ int fill_dst(const prb_t *prb, dnn_mem_t &mem_dt, dnn_mem_t &mem_fp) { void skip_unimplemented_prb(const prb_t *prb, res_t *res) { skip_unimplemented_data_type({prb->sdt, prb->ddt}, prb->dir, res); skip_unimplemented_sum_po(prb->attr, res, dnnl_reduction, prb->sdt); + skip_unimplemented_binary_po(prb->attr, res); skip_unimplemented_prelu_po(prb->attr, res, dnnl_reduction); } diff --git a/tests/benchdnn/reorder/reorder.cpp b/tests/benchdnn/reorder/reorder.cpp index 34611b0d83..a1f039c107 100644 --- a/tests/benchdnn/reorder/reorder.cpp +++ b/tests/benchdnn/reorder/reorder.cpp @@ -208,6 +208,7 @@ void skip_unimplemented_prb(const prb_t *prb, res_t *res) { const auto ddt = prb->ddt; skip_unimplemented_data_type({sdt, ddt}, prb->dir, res); skip_unimplemented_sum_po(prb->attr, res, dnnl_reorder, sdt); + skip_unimplemented_binary_po(prb->attr, res); skip_unimplemented_prelu_po(prb->attr, res, dnnl_reorder); const bool s32_src_ok = IMPLICATION(sdt == dnnl_s32, diff --git a/tests/benchdnn/resampling/resampling.cpp b/tests/benchdnn/resampling/resampling.cpp index 595a1be708..cffe30258d 100644 --- a/tests/benchdnn/resampling/resampling.cpp +++ b/tests/benchdnn/resampling/resampling.cpp @@ -111,6 +111,7 @@ dnnl_status_t init_pd(init_pd_args_t &init_pd_args) { void skip_unimplemented_prb(const prb_t *prb, res_t *res) { skip_unimplemented_data_type({prb->sdt, prb->ddt}, prb->dir, res); skip_unimplemented_sum_po(prb->attr, res, dnnl_resampling, prb->sdt); + skip_unimplemented_binary_po(prb->attr, res); skip_unimplemented_prelu_po(prb->attr, res, dnnl_resampling); } diff --git a/tests/benchdnn/rnn/rnn.cpp b/tests/benchdnn/rnn/rnn.cpp index 99e31c65aa..6e7db3bcc4 100644 --- a/tests/benchdnn/rnn/rnn.cpp +++ b/tests/benchdnn/rnn/rnn.cpp @@ -778,6 +778,7 @@ void skip_unimplemented_prb(const prb_t *prb_, res_t *res) { dir_t dir = str2dir(prop2str(prb.prop)); skip_unimplemented_data_type({prb.cfg[SRC_LAYER].dt}, dir, res); skip_unimplemented_sum_po(prb.attr, res, dnnl_rnn, prb.cfg[SRC_LAYER].dt); + skip_unimplemented_binary_po(prb.attr, res); skip_unimplemented_prelu_po(prb.attr, res, dnnl_rnn); if (is_cpu()) { diff --git a/tests/benchdnn/shuffle/shuffle.cpp b/tests/benchdnn/shuffle/shuffle.cpp index bc067b6eba..d81abece6a 100644 --- a/tests/benchdnn/shuffle/shuffle.cpp +++ b/tests/benchdnn/shuffle/shuffle.cpp @@ -102,6 +102,7 @@ dnnl_status_t init_pd(init_pd_args_t &init_pd_args) { void skip_unimplemented_prb(const prb_t *prb, res_t *res) { skip_unimplemented_data_type({prb->dt}, prb->dir, res); skip_unimplemented_sum_po(prb->attr, res, dnnl_shuffle, prb->dt); + skip_unimplemented_binary_po(prb->attr, res); skip_unimplemented_prelu_po(prb->attr, res, dnnl_shuffle); } diff --git a/tests/benchdnn/softmax/softmax.cpp b/tests/benchdnn/softmax/softmax.cpp index e6b7c40225..302daa3040 100644 --- a/tests/benchdnn/softmax/softmax.cpp +++ b/tests/benchdnn/softmax/softmax.cpp @@ -222,6 +222,7 @@ int fill_data_bwd(data_kind_t data_kind, const prb_t *prb, dnn_mem_t &mem_dt, void skip_unimplemented_prb(const prb_t *prb, res_t *res) { skip_unimplemented_data_type({prb->sdt, prb->ddt}, prb->dir, res); skip_unimplemented_sum_po(prb->attr, res, dnnl_softmax, prb->sdt); + skip_unimplemented_binary_po(prb->attr, res); skip_unimplemented_prelu_po(prb->attr, res, dnnl_softmax); if (prb->attr.post_ops.find(attr_t::post_ops_t::kind_t::SUM) != -1) { diff --git a/tests/benchdnn/sum/sum.cpp b/tests/benchdnn/sum/sum.cpp index 26adfb4da3..d2b45e4c31 100644 --- a/tests/benchdnn/sum/sum.cpp +++ b/tests/benchdnn/sum/sum.cpp @@ -99,6 +99,7 @@ void skip_unimplemented_prb(const prb_t *prb, res_t *res) { dts.push_back(prb->ddt); skip_unimplemented_data_type(dts, prb->dir, res); skip_unimplemented_sum_po(prb->attr, res, dnnl_sum, prb->sdt[0]); + skip_unimplemented_binary_po(prb->attr, res); skip_unimplemented_prelu_po(prb->attr, res, dnnl_sum); }