当前传统编译器对深度学习中张量缺乏特定优化手段,而硬件发展带来程序性能提升的时代过去,编写高并行化程序存在困难,具体表现在:
- 并行度:指令级并行、数据级并行和线程级并行
- 如何利用时间与空间局部性
- 专用硬件加速:Tensor Cores
同时算子优化困难:优化方法多,通用性和移植性低,优化间相互影响, 例如深度优化的算子库:cuDNN、cuBLAS、OpenBLAS、Eigen存在如下影响:
- 算法更新迭代太快
- 算子参数、算子融合多样导致组合数量爆炸
- 移植性问题
性能监控计数器 (Performance Monitor Counters,PMC)是profiling工具,对于给定的工作负载提供性能瓶颈建议,定义为提供对特定处理器硬件事件进行计数,可用于测量某些硬件事件的频率或持续时间。用于软件工具使用PMC识别性能瓶颈,用于优化软件或硬件设计来提高整体性能或消除性能问题。具体用途为建模和仿真:
- 建模技术通过将每个技术与可通过性能计数器访问的硬件事件相关联来估计功耗和性能,如:回归分析,随机森林,SVM,深度学习。
- PMC及其派生的基于统计的指标,与功耗和性能具有很强的相关性。因此,这些相关性的量化可以产生准确的功率模型。
- 如将 6 个不同的内存指令值相加以创建内存指标,并与其他计数器或指标一起用作线性回归模型的输入。结果表明,使用所有可用计数器的模型是最准确的;此外,全局内存访问被确定为与 GPU 功耗相关的最大指标。