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.