code: def test_shape_x_1(ctx):
      a_30 = [torch.rand(9), torch.rand(10), torch.rand(11)]
      b_30 = [torch.rand(9), torch.rand(10), torch.rand(11)]
      c = torch.rand(30, 4)
      d = torch.rand(4, 30)
      e_30_5 = [torch.rand(9, 5), torch.rand(10, 5), torch.rand(11, 5)]
      f_5_30 = [torch.rand(5, 9), torch.rand(5, 10), torch.rand(5, 11)]
      da_30 = make_dist(ctx, a_30)
      db_30 = make_dist(ctx, b_30)
      la_30 = torch.concat(a_30)
      lb_30 = torch.concat(b_30)
      de_30_5 = make_dist(ctx, e_30_5)
      df_5_30 = make_dist(ctx, f_5_30, axis=1)
      le_30_5 = torch.concat(e_30_5)
      lf_5_30 = torch.concat(f_5_30, dim=1)
      # distributed
      assert torch.allclose(
          torch.matmul(df_5_30, da_30), torch.matmul(lf_5_30, la_30)
      )
      assert torch.allclose(
          torch.rmatmul_f(de_30_5, db_30),
          torch.rmatmul_f(le_30_5, lb_30),
      )
  
      # local
      assert torch.allclose(
          torch.matmul(df_5_30, la_30), torch.matmul(lf_5_30, la_30)
      )
      assert torch.allclose(
          torch.rmatmul_f(de_30_5, lb_30),
          torch.rmatmul_f(le_30_5, lb_30),
      )
  
file_path: FATE/python/fate/test/test_matmul.py
imports: import torch
  from fate.arch.computing.backends.standalone import CSession
  from fate.arch.context import Context
  from fate.arch.federation.backends.standalone import StandaloneFederation
  from fate.arch.tensor import DTensor
  from pytest import fixture
label_desc: Use image node_id 8 for calling a global function with example usage: test_shape_x_1(ctx) without return types