code: def test_shape_x_x_dist_dist_matmul(ctx):
      e_5_13_30 = [
          torch.rand(5, 13, 9),
          torch.rand(5, 13, 10),
          torch.rand(5, 13, 11),
      ]
      e_19_30_17 = [
          torch.rand(5, 9, 17),
          torch.rand(5, 10, 17),
          torch.rand(5, 11, 17),
      ]
  
      assert torch.allclose(
          torch.matmul(
              make_dist(ctx, e_5_13_30, axis=2),
              make_dist(ctx, e_19_30_17, axis=1),
          ),
          torch.matmul(
              torch.concat(e_5_13_30, 2), torch.concat(e_19_30_17, 1)
          ),
      )
  
      assert torch.allclose(
          torch.rmatmul_f(
              make_dist(ctx, e_19_30_17, axis=1),
              make_dist(ctx, e_5_13_30, axis=2),
          ),
          torch.rmatmul_f(
              torch.concat(e_19_30_17, 1), torch.concat(e_5_13_30, 2)
          ),
      )
  
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 10 for calling a global function with example usage: test_shape_x_x_dist_dist_matmul(ctx) without return types