code: def run_join_split_operators_benchmarks(
      ctx=mx.cpu(),
      dtype="float32",
      profiler="native",
      int64_tensor="off",
      warmup=25,
      runs=100,
  ):
      """Runs benchmarks with the given context and precision (dtype) for all the
      join & split operators  in MXNet.
  
      Parameters
      ----------
      ctx: mx.ctx
          Context to run benchmarks
      dtype: str, default 'float32'
          Precision to use for benchmarks
      profiler: str, default 'native'
          Type of Profiler to use (native/python)
      int64_tensor: str, default 'off'
          Input tensor size to use for tests (if on, dimensions >= 2**32)
      warmup: int, default 25
          Number of times to run for warmup
      runs: int, default 100
          Number of runs to capture benchmark results
  
      Returns
      -------
      Dictionary of results. Key -> Name of the operator, Value -> Benchmark results.
  
      """
      # backward not supported for all 3 ops - concat, stack, split
      # concat
      concat_benchmark_res = run_performance_test(
          [getattr(MX_OP_MODULE, "concat")],
          run_backward=False,
          dtype=dtype,
          ctx=ctx,
          profiler=profiler,
          inputs=[
              {
                  "args0": nd.random_normal(shape=(100, 100)),
                  "args1": nd.random_normal(shape=(100, 100)),
                  "args2": nd.random_normal(shape=(100, 100)),
              }
          ],
          warmup=warmup,
          runs=runs,
      )
  
      # split
      split_benchmark_res = run_performance_test(
          [getattr(MX_OP_MODULE, "split")],
          run_backward=False,
          dtype=dtype,
          ctx=ctx,
          profiler=profiler,
          inputs=[
              {"data": (1024, 1024), "num_outputs": 2},
              {"data": (10000, 1), "num_outputs": 1},
              {"data": (10000, 100), "num_outputs": 10},
          ],
          warmup=warmup,
          runs=runs,
      )
  
      # stack
      stack_benchmark_res = run_performance_test(
          [getattr(MX_OP_MODULE, "stack")],
          run_backward=False,
          dtype=dtype,
          ctx=ctx,
          profiler=profiler,
          inputs=[
              {
                  "args0": nd.random_normal(shape=(100, 100)),
                  "args1": nd.random_normal(shape=(100, 100)),
                  "args2": nd.random_normal(shape=(100, 100)),
              }
          ],
          warmup=warmup,
          runs=runs,
      )
      mx_join_split_op_results = merge_map_list(
          concat_benchmark_res
          + split_benchmark_res
          + stack_benchmark_res
      )
      return mx_join_split_op_results
  
file_path: mxnet/benchmark/opperf/nd_operations/array_manipulation_operators.py
imports: import mxnet
  from mxnet import nd
  from benchmark.opperf.utils.benchmark_utils import run_performance_test
  from benchmark.opperf.utils.common_utils import merge_map_list
  from benchmark.opperf.rules.default_params import MX_OP_MODULE
  from benchmark.opperf.utils.benchmark_utils import run_op_benchmarks
  from benchmark.opperf.utils.op_registry_utils import get_all_rearrange_operators, get_all_shape_operators, get_all_expanding_operators, get_all_rounding_operators
label_desc: Use image node_id 5 for calling a global function with example usage: run_join_split_operators_benchmarks(ctx, dtype, profiler, int64_tensor, warmup, runs) and returns: mx_join_split_op_results