code: def test_matmul_execution(setup):
      rs = np.random.RandomState(0)
  
      data_a = rs.randn(10, 20)
      data_b = rs.randn(20)
  
      a = tensor(data_a, chunk_size=5)
      b = tensor(data_b, chunk_size=6)
      c = matmul(a, b)
  
      res = c.execute().fetch()
      expected = np.matmul(data_a, data_b)
      np.testing.assert_allclose(res, expected)
  
      data_a = rs.randn(10, 20)
      data_b = rs.randn(10)
  
      a = tensor(data_a, chunk_size=5)
      b = tensor(data_b, chunk_size=6)
      c = matmul(b, a)
  
      res = c.execute().fetch()
      expected = np.matmul(data_b, data_a)
      np.testing.assert_allclose(res, expected)
  
      data_a = rs.randn(15, 1, 20, 30)
      data_b = rs.randn(1, 11, 30, 20)
  
      a = tensor(data_a, chunk_size=12)
      b = tensor(data_b, chunk_size=13)
      c = matmul(a, b)
  
      res = c.execute().fetch()
      expected = np.matmul(data_a, data_b)
      np.testing.assert_allclose(res, expected, atol=0.0001)
  
      a = arange(2 * 2 * 4, chunk_size=1).reshape((2, 2, 4))
      b = arange(2 * 2 * 4, chunk_size=1).reshape((2, 4, 2))
      c = matmul(a, b)
  
      res = c.execute().fetch()
      expected = np.matmul(
          np.arange(2 * 2 * 4).reshape(2, 2, 4),
          np.arange(2 * 2 * 4).reshape(2, 4, 2),
      )
      np.testing.assert_allclose(res, expected, atol=0.0001)
  
      data_a = sps.random(10, 20)
      data_b = sps.random(20, 5)
  
      a = tensor(data_a, chunk_size=5)
      b = tensor(data_b, chunk_size=6)
      c = matmul(a, b)
  
      res = c.execute().fetch()
      expected = np.matmul(data_a.toarray(), data_b.toarray())
      np.testing.assert_allclose(res.toarray(), expected)
  
      # test order
      data_a = np.asfortranarray(rs.randn(10, 20))
      data_b = np.asfortranarray(rs.randn(20, 30))
  
      a = tensor(data_a, chunk_size=12)
      b = tensor(data_b, chunk_size=13)
  
      c = matmul(a, b)
      res = c.execute().fetch()
      expected = np.matmul(data_a, data_b)
  
      np.testing.assert_allclose(res, expected)
      assert res.flags["C_CONTIGUOUS"] == expected.flags["C_CONTIGUOUS"]
      assert res.flags["F_CONTIGUOUS"] == expected.flags["F_CONTIGUOUS"]
  
      c = matmul(a, b, order="A")
      res = c.execute().fetch()
      expected = np.matmul(data_a, data_b, order="A")
  
      np.testing.assert_allclose(res, expected)
      assert res.flags["C_CONTIGUOUS"] == expected.flags["C_CONTIGUOUS"]
      assert res.flags["F_CONTIGUOUS"] == expected.flags["F_CONTIGUOUS"]
  
      c = matmul(a, b, order="C")
      res = c.execute().fetch()
      expected = np.matmul(data_a, data_b, order="C")
  
      np.testing.assert_allclose(res, expected)
      assert res.flags["C_CONTIGUOUS"] == expected.flags["C_CONTIGUOUS"]
      assert res.flags["F_CONTIGUOUS"] == expected.flags["F_CONTIGUOUS"]
  
imports: import numpy
  import scipy.sparse
  from ....learn.datasets.samples_generator import make_low_rank_matrix
  from ....lib.sparse import issparse, SparseNDArray
  from ....utils import ignore_warning
  from ...datasource import tensor, diag, ones, arange
  from ...random import uniform
  from ..None import qr, svd, cholesky, norm, lu, solve_triangular, solve, inv, tensordot, dot, inner, vdot, matmul, randomized_svd
label_desc: Use image node_id 14 for calling a global function with example usage: test_matmul_execution(setup) without return types