code: def main(a: T.handle, d: T.handle) -> None:
      T.func_attr({"global_symbol": "main"})
      A = T.match_buffer(a, (1024, 1024), "float32")
      B = T.alloc_buffer((1024, 1024), "float32")
      C = T.alloc_buffer((1024, 1024), "float32")
      D = T.match_buffer(d, (1024, 1024), "float32")
      for i, j in T.grid(1024, 1024):
          with T.block("A"):
              vi, vj = T.axis.remap("SS", [i, j])
              B[vi, vj] = A[vi, vj] * 2.0
      for i, j in T.grid(1024, 1024):
          with T.block("B"):
              vi, vj = T.axis.remap("SS", [i, j])
              C[vi, vj] = B[vi, vj] + 3.0
      for i, j in T.grid(1024, 1024):
          with T.block("C"):
              vi, vj = T.axis.remap("SS", [i, j])
              D[vi, vj] = C[vi, vj] * 5.0
  
imports: import math
  import sys
  from typing import List
  import pytest
  import tvm
  import tvm.testing
  from tvm import te
  from tvm.ir.module import IRModule
  from tvm._ffi import register_func
  from tvm.error import TVMError
  from tvm.meta_schedule import TuneContext
  from tvm.meta_schedule.schedule_rule import PyScheduleRule
  from tvm.meta_schedule.space_generator import PostOrderApply
  from tvm.meta_schedule.utils import derived_object
  from tvm.script import tir
  from tvm.target import Target
  from tvm.tir.schedule import BlockRV, Schedule
label_desc: Use image node_id 1 for calling the TrinityMatmul obj's underlying member method code with example usage: obj.main(a, d) without return types