code: def batch_matmul(  # pylint: disable=no-self-argument
      a: T.handle, b: T.handle, c: T.handle
  ) -> None:
      T.func_attr(
          {"global_symbol": "batch_matmul", "tir.noalias": True}
      )
      A = T.match_buffer(a, [16, 128, 128])
      B = T.match_buffer(b, [16, 128, 128])
      C = T.match_buffer(c, [16, 128, 128])
      for n, i, j, k in T.grid(16, 128, 128, 128):
          with T.block("update"):
              vn, vi, vj, vk = T.axis.remap("SSSR", [n, i, j, k])
              with T.init():
                  C[vn, vi, vj] = 0.0
              C[vn, vi, vj] = (
                  C[vn, vi, vj] + A[vn, vi, vk] * B[vn, vj, vk]
              )
  
imports: import os
  import sys
  import time
  from typing import List
  import pytest
  import tvm.testing
  from tvm import script
  from tvm._ffi import register_func
  from tvm.meta_schedule.builder import BuilderInput, BuilderResult, LocalBuilder, PyBuilder
  from tvm.runtime import Module
  from tvm.script import tir
  from tvm.target import Target
label_desc: Use image node_id 1 for calling the BatchMatmulModule obj's underlying member method code with example usage: obj.batch_matmul(a, b, c) without return types