ps-lite源码阅读

整理了一份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