code: def test_distributed_send_then_recv(self):
      paddle.distributed.init_parallel_env()
      # Test Send Then Recv
      num_nodes = 5
      edges = [(0, 1), (1, 2), (3, 4), (4, 1), (1, 0)]
  
      nfeat = np.array(
          [
              [1, 2, 3, 4],
              [2, 3, 4, 5],
              [3, 4, 5, 6],
              [4, 5, 6, 7],
              [5, 6, 7, 8],
          ],
          dtype="float32",
      )
  
      recv_ground = np.array(
          [
              [2.0, 3.0, 4.0, 5.0],
              [6.0, 8.0, 10.0, 12.0],
              [2.0, 3.0, 4.0, 5.0],
              [0.0, 0.0, 0.0, 0.0],
              [4.0, 5.0, 6.0, 7.0],
          ],
          dtype="float32",
      )
  
      g = pgl.Graph(
          edges=edges, num_nodes=num_nodes, node_feat={"nfeat": nfeat}
      )
  
      g = pgl.DistGPUGraph(g)
  
      def send_func1(src_feat, dst_feat, edge_feat):
          return src_feat
  
      def send_func2(src_feat, dst_feat, edge_feat):
          return {"h": src_feat["h"]}
  
      def reduce_func(msg):
          return msg.reduce_sum(msg["h"])
  
      # test send_func1
      msg1 = g.send(send_func1, src_feat={"h": g.node_feat["nfeat"]})
  
      output = g.recv(reduce_func, msg1)
      output = output.numpy()
      self.assertTrue((recv_ground == output).all())
  
      # test send_func2
      msg2 = g.send(send_func1, src_feat={"h": g.node_feat["nfeat"]})
  
      output = g.recv(reduce_func, msg2)
      output = output.numpy()
      self.assertTrue((recv_ground == output).all())
  
file_path: PGL/tests/test_dist_graph.py
imports: import os
  import unittest
  import numpy
  import paddle
  import pgl
  import paddle.distributed
  from testsuite import create_random_graph
label_desc: Use image node_id 3 for calling the TestDistGPUGraph obj's underlying member method code with example usage: obj.test_distributed_send_then_recv() and returns: src_feat, dict, msg