code: def scatter_elements_cuda(attrs, inputs, out_type, target):
      """scatter rocm strategy"""
      strategy = _op.OpStrategy()
      strategy.add_implementation(
          wrap_compute_scatter_elements(topi.cuda.scatter_elements),
          wrap_topi_schedule(topi.cuda.schedule_extern),
          name="scatter_elements.rocm",
          plevel=10,
      )
  
      rank = len(inputs[0].shape)
  
      with SpecializedCondition(
          rank == 1 and attrs.reduction == "update"
      ):
          if can_use_rocthrust(
              target, "tvm.contrib.thrust.stable_sort_by_key"
          ):
              strategy.add_implementation(
                  wrap_compute_scatter_elements(
                      topi.cuda.scatter_via_sort
                  ),
                  wrap_topi_schedule(
                      topi.cuda.schedule_scatter_via_sort
                  ),
                  name="scatter_via_sort.rocm",
                  plevel=9,  # use the sequential version by default
              )
      return strategy
  
file_path: tvm/python/tvm/relay/op/strategy/rocm.py
imports: from tvm import topi
  from tvm.te import SpecializedCondition
  from tvm.contrib.thrust import can_use_rocthrust
  from tvm.contrib import miopen
  from .generic import *
  from ..None import op
  from .cuda import batch_matmul_strategy_cuda, conv2d_strategy_cuda, dense_strategy_cuda
label_desc: Use image node_id 5 for calling a global function with example usage: scatter_elements_cuda(attrs, inputs, out_type, target) and returns: strategy