![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
QNNPACK
WTHunt
厚积薄发
展开
-
普通卷积armv7-neon指令集实现—QNNPACK
与浮点计算一样,依旧是4x8的分块,为防止饱和将uint8塞进int16进行计算,这样一个寄存器装载8个数,本篇主要关注指令集。指令集总结:vld1_dup_u8(const uint8_t*):广播broadcast uint8_t到8x8vld1_u8(const uint8_t*):加载8x8vmovl_u8(const uint8x8_t):扩展指令集,返回uint16x8vreinterpretq_s16_u16(const uint16x8_t):类型转换vsubl_u原创 2020-09-06 16:16:49 · 989 阅读 · 0 评论 -
&|(与或移位等)的工程运用
引言:善用&|<<操作,告别低效代码利用逻辑运算符可以替代很多的乘法除余等操作,这种对二进制直接操作的指令简洁高效,善用逻辑运算符对嵌入式开发,或是对性能要求高的场景是非常必要的,因此这里总结一部分常用的逻辑运算操作等价列表1、乘法x*k、除法x/k(k满足2^n):x<<n、x>>n2、取余x%k(k满足2^n):x&(2...原创 2019-10-29 11:46:11 · 257 阅读 · 0 评论 -
QNNPACK高性能前向内核库全面剖析——引言篇
前言前段时间因为项目需求,搞了一段时间的前向优化,主要参考了Facebook 18年开源的神经网络加速库QNNPACK。QNNPACK针对INT8的量化网络,对神经网络的各个算子都提供了非常高效的优化方案,传言其卓越的性能几乎击败了全部已公开的加速算法,不管真假,就优化方案而已个人觉得还是比较新颖,值得好好研究的。到目前为止,QNNPACK已经开源一年多了,除了不多的官方资料之外,民间资料...原创 2019-12-01 09:41:13 · 1101 阅读 · 0 评论 -
arm汇编解析—qnnpack卷积实现
目录前言基础直通车arm基础知识arm指令释义qnn汇编代码解析前言最近在移植QNNPACK神经网络加速库,涉及到对卷积arm汇编的修改,这边做个记录,对汇编部分的内容进行注释,顺便学习一下汇编的语法。基础直通车首先要补充arm汇编基础知识,特别是如何传参一定要搞清楚,另外对arm寄存器要了然于胸,剩下的就是指令的用法了:利用堆栈入参参考:https:...原创 2019-09-19 22:10:03 · 2640 阅读 · 1 评论