Post

c++

  • 模板函数
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    template<typename Op>
    uint16_t SoftmaxCore_Model::reduction_tree_op(const std::vector<uint16_t>& vector, Op op) {
      std::vector<uint16_t> nodes = vector;
    
      while (nodes.size() > 1) {
          std::vector<uint16_t> next_level_nodes;
          for (size_t i = 0; i < nodes.size(); i += 2) {
              if (i + 1 < nodes.size()) {
                  uint16_t res_val = op(nodes[i], nodes[i + 1]);
                  next_level_nodes.push_back(res_val);
              } else {
                  next_level_nodes.push_back(nodes[i]);
              }
          }
          nodes = next_level_nodes;
      }
    
      return nodes[0];
    }
    //Op op 是一个函数对象参数,可以像函数一样被调用
    //调用uint16_t max_of_vec = reduction_tree_op(vec, BF16::bf16_max);
    
This post is licensed under CC BY 4.0 by the author.