每个GPU都是一个worker或者server

即public.hpp中的fworker/fserver

ps是node的概念,初始化的时候又worker_rank, server_rank,长度为GPU的数量

其中instance_id指的是同号的GPU

num_workers_与num_servers_指节点数量

Postoffice::GetWorker(instance_id),其中postOffice一个node一个,根据local gpu id获取instance

每个fworker有自己的pushpull_queue_(gpu粒度)

push_tensors.size():push tensor的数量

pull_batch_size:pull tensor的数量

发送时候,每个server都发送msg,msg里包含全量put_tensors

// broadcast
    for (int i = 0; i < server_count; i++) {
      kv_.SendMsg(msg, i);
    }

SendMsg发送时候,貌似发送只存在同号GPU内

  void SendMsg(Message& msg, int dst) {
    int group_server_rank = dst;
    int instance_server_id = postoffice_->GroupServerRankToInstanceID(
        group_server_rank, instance_idx_);
 
    msg.meta.app_id = obj_->app_id();
    msg.meta.customer_id = obj_->customer_id();
    msg.meta.recver = instance_server_id;
    postoffice_->van()->Send(msg);
  }

随后调用到rdma_van.h中的SendMsg(…)函数