code: def main():
      mgr = kp.Manager()
  
      matmul_op = MatMulOp(mgr)
  
      tensor_size = 4096
      tensor_shape = [tensor_size, tensor_size]
      tensor_in_1 = mgr.tensor(np.triu(np.ones(tensor_shape)))
      tensor_in_2 = mgr.tensor(np.triu(np.ones(tensor_shape)))
      tensor_out = mgr.tensor(np.zeros(tensor_shape))
  
      print(
          f"{tensor_shape} input tensors:\n"
          f"{tensor_in_1.data().reshape(tensor_shape)}\n"
          f"{tensor_in_2.data().reshape(tensor_shape)}\n"
      )
  
      matmul_op(tensor_shape, tensor_in_1, tensor_in_2, tensor_out)
  
      experiment_count = 8
      start_time = time.time()
      for _ in range(experiment_count):
          matmul_op(tensor_shape, tensor_in_1, tensor_in_2, tensor_out)
      end_time = time.time()
      experiment_time = end_time - start_time
      op_count = (
          tensor_shape[0]
          * tensor_shape[1]
          * ((tensor_shape[1] * 2) - 1)
      )
  
      print(f"Output :\n{tensor_out.data().reshape(tensor_shape)}")
  
      print(
          f"{experiment_count} matmul time : "
          f"{experiment_time * 1000:0.2f}ms => "
          f"{experiment_count / experiment_time:0.2f}op/s or "
          f"{experiment_count * op_count / (1e9 * experiment_time):0.2f} GFLOPS"
      )
  
imports: import time
  import kp
  import numpy
label_desc: Use image node_id 1 for calling a global function with example usage: main() without return types