code: def collage(model):
      """Run the Collage partitioner for a set of Opencl Adreno related targets and profile the result"""
      logging.info(f"collage | {model['name']}")
      logging.info("-------------- BEGIN ORIGINAL --------------")
      logging.info(model["mod"])
      logging.info("-------------- END ORIGINAL ----------------")
      autotvm_tune_module(model["mod"], OPENCL, TUNING_LOG)
      with optional_tuning_records(TUNING_LOG):
          targets = []
          targets.append(OPENCL)
          use_fp16 = model["main_dtype"] == "float16"
          tmp_dir = tempfile.mkdtemp()
          targets.append(tvm.target.Target("clml", HOST))
  
          # Register byoc fusion style for compiler with available
          # options [compiler.NoFusion | compiler.TVMFusion | compiler.MaxDepthFusion]
          config = {
              "relay.collage.tvm_max_depth": TVM_MAX_DEPTH,
              "relay.collage.byoc_max_depth": BYOC_MAX_DEPTH,
              "relay.collage.byoc_fusion_style": ["clml.NoFusion"],
          }
          logging.info(f"Using PassContext(config={config}")
          ctxt = tvm.transform.PassContext(config=config)
          config = tvm.target.make_compilation_config(ctxt, targets)
          with ctxt:
              mod = model["mod"]
              mod = tvm.relay.transform.CapturePostDfsIndexInSpans()(
                  mod
              )
              logging.info(
                  "-------------- BEGIN INDEXED --------------"
              )
              logging.info(mod)
              logging.info(
                  "-------------- END INDEXED ----------------"
              )
              # Register python custom cost function for targets in
              # custom cost estimator module.
              cost_estimator = CustomCostEstimator(
                  py_fn_estimator="tvm.relay.collage.opencl_cost_estimator"
              )
              mod = tvm.relay.transform.CollagePartition(
                  config, cost_estimator=cost_estimator
              )(mod)
              partitioned_model = model.copy()
              partitioned_model["mod"] = mod
              logging.info(
                  "-------------- BEGIN PARTITIONED --------------"
              )
              logging.info(partitioned_model["mod"])
              logging.info(
                  "-------------- END PARTITIONED ----------------"
              )
              compile_and_benchmark(
                  "collage", partitioned_model, targets, tmp_dir
              )
  
imports: import tvm
  import logging
  import tempfile
  import os
  import shutil
  import numpy
  from tvm.relay import testing
  from tvm import rpc
  from tvm.contrib import utils, ndk
  from tvm.relay.build_module import bind_params_by_name
  from tvm.relay.collage.collage import *
  from tvm.relay.op.contrib import clml
  import pytest
label_desc: Use image node_id 8 for calling a global function with example usage: collage(model) without return types