code: def permute(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
  
file_path: PGL/apps/GNNAutoScale/utils.py
imports: import time
  import functools
  import numpy
  import paddle
  import pgl
  from pgl.utils.logger import log
label_desc: Use image node_id 3 for calling a global function with example usage: permute(data, feature, permutation, feat_gpu) and returns: data,  feature