def METHOD_NAME(data, feature, permutation, feat_gpu):
    """Permute data and feature according to the input `permutation`.
    Args:
        data (pgl.dataset): The input PGL dataset, for example: pgl.dataset.RedditDataset.
        feature (numpy.ndarray): Node feature of PGL graph.
        permutation (numpy.ndarray): New node permutation after graph partition.
        feat_gpu (bool): Whether to move node feature to GPU here.
    Returns:
        data (pgl.dataset): Return data after being permuted.
        feature: Return feature after being permuted.
    """
    edges = data.graph.edges
    reindex = {}
    for ind, node in enumerate(permutation):
        reindex[node] = ind
    new_edges = pgl.graph_kernel.map_edges(
        np.arange(
            len(edges), dtype="int64"), edges, reindex)
    g = pgl.Graph(edges=new_edges, num_nodes=data.graph.num_nodes)
    data.graph = g
    data.train_mask = data.train_mask[permutation]
    data.val_mask = data.val_mask[permutation]
    data.test_mask = data.test_mask[permutation]
    if len(data.y.shape) == 1:
        data.label = np.expand_dims(data.y, -1)[permutation]
    else:
        data.label = data.y[permutation]
    feature = feature[permutation]
    if feat_gpu:
        feature = paddle.to_tensor(feature)
    return data, feature