#include #include TEST_CASE(gemm_test) { migraphx::program p; auto* mm = p.get_main_module(); auto l0 = mm->add_parameter("A", migraphx::shape{migraphx::shape::float_type, {8, 6}}); auto l1 = mm->add_parameter("B", migraphx::shape{migraphx::shape::float_type, {8, 7}}); auto l2 = mm->add_parameter("C", migraphx::shape{migraphx::shape::float_type, {6, 7}}); auto alpha = 0.5f; auto beta = 0.8f; auto a_l = mm->add_literal(alpha); auto t_a = add_common_op(*mm, migraphx::make_op("mul"), {a_l, l0}); t_a = mm->add_instruction(migraphx::make_op("transpose", {{"permutation", {1, 0}}}), t_a); auto dot = migraphx::add_apply_alpha_beta(*mm, {t_a, l1}, migraphx::make_op("dot"), 1.0f, 0.0f); auto b_l = mm->add_literal(beta); auto b_b = mm->add_instruction( migraphx::make_op("multibroadcast", {{"out_lens", l2->get_shape().lens()}}), b_l); auto l2_b = mm->add_instruction(migraphx::make_op("mul"), l2, b_b); mm->add_instruction(migraphx::make_op("add"), dot, l2_b); auto prog = optimize_onnx("gemm_test.onnx"); EXPECT(p == prog); }