本节我们开启对手写的 resnet50 模型的第二个优化,对应到仓库中的优化代码为 https://gitee.com/iwaihou/cv_learning_from_scratch/tree/master/practice/cpp/3rd_preload。
本次优化内容为模型的权值预加载。
将模型的权值进行预加载,可以减少甚至消除模型推理过程中冗余的内存操作,降低推理延迟,大幅提高模型性能。
所以,接下来的几节内容,会围绕这个优化来展开。在开始这个优化之前,先介绍一下计算机的基础知识,以及为什么要做这个优化。
大家可能听说过冯诺依曼架构,事实上,现在很多的计算机(芯片)都是基于冯诺依曼架构来进行的设计。
冯诺依曼架构的特点,总结下来可以这么理解:计算部件和存储部件的分离。
下图是从网络中找到的一张冯诺依曼架构示意图。
可以看到运算器和存储器之间有两个