96、C++ 性能优化一览

本文总结了C++实现ResNet50模型的性能优化过程,从初始版本的17s推理延迟,经过向量化、权值预加载、消除动态内存操作、CodeGen尝试和多线程优化,最终达到297ms的推理时间,实现了在CPU上的高效运行。
摘要由CSDN通过智能技术生成

在对 C++ 版本的 resnet50 经过大约 5 个版本的优化之后,性能也基本达到了预期。至少利用手写的 resnet50 在 CPU 上推理一张图片感觉不到卡顿了。

下面对这几个版本的性能优化做一个总结。

初始版本1

第一版本的 C++ 代码,并没有考虑性能问题,仅仅是想按照手写 resnet50 的想法,先将功能实现,并且确保手写的模型精度没问题,可以正确推理出一张图片。

作为一个基线版本,第一版也是耗费精力最大的一个版本,经过大量的调试之后,终于将模型的精度稳定在了一个可接受的范围内,在我的虚拟机上(基于 Intel CPU)测试了第一版本的性能数据为:

上面是测试了10几张图片的推理性能数据,平均推理一张图片延时为 17s,这个时间肯定是不行的。试想一下,假设人脸识别要等 17 s才能识别出来,使用者会是什么感受。

于是开启了后续几轮性能优化,每一轮优化都是在前面的基础上进行的。

优化版本2

本次优化重点是对卷积的乘累加操作进行的向量化,利用的是 Intel AVX2 指令集进行,将乘法和加法向量化,从而提升了卷积计算的速度,本次优化后,在相同的平台上测试,性能数据为:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董董灿是个攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值