def METHOD_NAME(data=None):
    StopWatch.start(f"sort_total_{data['host']}_{data['rows']}_{data['it']}")
    comm = MPI.COMM_WORLD
    config = MPIConfig(comm)
    env = CylonEnv(config=config, distributed=True)
    u = data['unique']
    if data['scaling'] == 'w':  # weak
        num_rows = data['rows']
        max_val = num_rows * env.world_size
    else:  # 's' strong
        max_val = data['rows']
        num_rows = int(data['rows'] / env.world_size)
    rng = default_rng(seed=env.rank)
    data1 = rng.integers(0, int(max_val * u), size=(num_rows, 2))
    df1 = DataFrame(pd.DataFrame(data1).add_prefix("col"))
    if env.rank == 0:
        print("Task# ", data['task'])
    for i in range(data['it']):
        env.barrier()
        StopWatch.start(f"sort_{i}_{data['host']}_{data['rows']}_{data['it']}")
        t1 = time.time()
        df3 = df1.sort_values(by=[0], env=env)
        env.barrier()
        t2 = time.time()
        t = (t2 - t1)
        sum_t = comm.reduce(t)
        tot_l = comm.reduce(len(df3))
        if env.rank == 0:
            avg_t = sum_t / env.world_size
            print("### ", data['scaling'], env.world_size, num_rows, max_val, i, avg_t, tot_l)
            StopWatch.stop(f"sort_{i}_{data['host']}_{data['rows']}_{data['it']}")
    StopWatch.stop(f"sort_total_{data['host']}_{data['rows']}_{data['it']}")
    if env.rank == 0:
        StopWatch.benchmark(tag=str(data))
    env.finalize()