code: def concat_aggregate(self, gw, feature, name):
      def ernie_recv(feat):
          """doc"""
          num_neighbor = self.config.samples[0]
          pad_value = L.zeros([1], "int64")
          out, _ = L.sequence_pad(
              feat, pad_value=pad_value, maxlen=num_neighbor
          )
          out = L.reshape(
              out, [0, self.config.max_seqlen * num_neighbor]
          )
          return out
  
      msg = gw.send(lambda s, d, e: s["h"], nfeat_list=[("h", feature)])
      neigh_feature = gw.recv(msg, ernie_recv)
      neigh_feature = L.cast(neigh_feature, "int64")
  
      cls = L.fill_constant_batch_size_like(
          feature, [-1, 1], "int64", self.config.cls_id
      )
      # insert cls, pop last
      term_ids = L.concat([cls, feature[:, :-1], neigh_feature], 1)
      term_ids.stop_gradient = True
      return term_ids
  
imports: import os
  import json
  import numpy
  import pgl
  import paddle.fluid
  import paddle.fluid.layers
  from ernie import ErnieModel
  from pgl.utils.logger import log
label_desc: Use image node_id 2 for calling the ERNIESageV3Encoder obj's underlying member method code with example usage: obj.concat_aggregate(gw, feature, name) and returns: term_ids, out