整理了一份ps-lite UML图
KVCache
KVPair
关键数据结构,一个Key对应一组定长或变长Value。
如果是变长Value,需要设置val_size,指定每组value的长度,length(val_size) == length(key)。
struct KVPair {
  // [key_0,  ..., key_n]
  SArray<K> key;
  // constant value size:
  //   [val_00, ..., val_0k, ..., val_n0, ..., val_nk]
  // dynamic value size:
  //   [val_00, ...val_0,val_size[0], ..., val_n0, ..., val_n,val_size[n]
  V* val = NULL ;
  size_t len_val = 0;  // length of val
  std::vector<V>* val_vec = NULL;  // allocator fo val
  int* val_size = NULL;
  // for match dynamic vals
  std::vector<std::pair<K, SArray<V>>> recv;
  int recv_num = 0;
  size_t matched_num = 0;
};
参考
- https://github.com/dmlc/ps-lite/tree/v1