性能优化的维度
1. 逻辑与架构
1. 逻辑优化
逻辑优化的核心:
1. 业务流的逻辑最优;
2. 整体和局部的实现方式最优;
3. 编码的最佳实践;
2. 架构优化
架构优化的核心:
1. 架构在考虑稳定性、可复用,可扩展、可维护性的同时,充分考虑架构的整体性能;
2. 从架构宏观角度,整体和模块间的优化;
2. 算法优化
1. 算法改进
算法优化:
1. 对算法的实现进行优化,比如常见的降维或者变化处理,把负责算法计算转换成查表;
2. 根据2/8思想,优化算法核心耗时热点;
3. 解决问题是否可以用新的算法或者实现代替;
3. 并行/异构与量化
1. 并行
并行方式:
1. 多线程、多进程、线程池、进程池以及OpenMP;
2. NEON或者其他并行指令集;
3. 消息队列;
2. 异构
异构策略:
1. GPU(移动端/服务端);
2. NPU/DSP/FPGA等;
3. 多个硬件协同(架构上也可以多考虑,通过负载均衡,发挥硬件最优性能);
3. 量化
量化在神经网络中使用较多:
1. fp32->fp16->int->int16->int8;
2. GPU不同精度;
4. 调度与系统
异构策略:
1. 绑核以及核心调度;
2. 调频以及调频策略;
3. 系统层面应用最优实践;