- 博客(31)
- 收藏
- 关注
原创 深度学习计算框架综述(十三)HVX 计算优化实践—HVX 编程基础知识
本节主要介绍HVX编程的基础知识以及示例代码,主要是五部分:Registers: 介绍常用的寄存器Program Flow: 介绍程序流中常用到的循环、跳转、调用等指令Software Stack: 介绍软件栈的结构,以及SP、FP、LR等寄存器的正确使用方法Scalar/Vector Instructions: 介绍常用的标量和向量指令Sample Code: 结合前三部分的内容实现的示例代码...
2021-01-19 11:22:26
3696
原创 深度学习计算框架综述(十三)HVX 计算优化实践—Concat 优化
主要有三种维度的Concat,Height、Width、Channel,如果是浮点计算,只需要进行数据拷贝即可,但是基于Quantization Aware Training的定点计算,需要判断输入和输出的量化信息是否匹配:如果一致,则可以直接拷贝;如果不一致,则需要转换量化信息中的scale和bias值,由于Feature Map的数据范围是限定的,即0-255,所以可以在init函数中将0-255对应的转换值提前计算好,这一步骤的代码如下(same_as_output_array_是一个数组,.
2021-01-09 17:38:12
1077
3
原创 深度学习计算框架综述(十三)HVX 计算优化实践—DSP 开发调试
Overview FARF printf Runtime FARF Introduction Enabling runtime FARF via config file Config file name Contents of the config file Enabling at process start-up Enabling runtime FARF programmatically Obtaining PID and ASID of FastRPC pro
2021-01-09 14:30:25
1514
原创 深度学习计算框架综述(十三)HVX 计算优化实践—Unsigned PD 介绍
如果设备已经开启了Secure Boot,可以通过Unsigned PD的方式开发Hexagon DSP的应用:Unsigned PD is a sandboxed low-rights process that allows the signature-free modules to run on the cDSP只需要三行代码,就可以帮助开发者确定设备是否支持Unsigned PD:UNSIGNED_PD_SUPPORT Description: Check if DSP sup
2021-01-09 14:27:00
1964
4
原创 深度学习计算框架综述(十三)HVX 计算优化实践—VCAP Hexagon 计算框架介绍
架构简介:VCAP Hexagon DSP计算框架是一个针对高通DSP的高性能计算框架,框架可以简化为三层结构:模型层:负责模型转换,提供了vaim2bin转换工具,通过vaim2bin将vaim模型转换成DSP param/bin模型,并计算内存复用的策略框架层:负责模型解析、dspCV的初始化、内存复用策略的执行、OP的计算策略计算层:负责计算策略的执行,使用HVX汇编对常见的OP进行了深度优化针对这三层,此处再展开描述一下:模型层也可以采用其他的模型格式,...
2021-01-09 14:25:34
2025
6
原创 深度学习计算框架综述(十三)HVX 计算优化实践—访存优化原理
处理器运行速度比存储器的访问速度快很多,以HexagonDSP为例(下面数据来源于参考资料): DDR memory access: ~250 ns L2 read latency: 6 thread cycles通常来说,访存优化的收益比计算优化的收益要高。对于DSP而言,访存优化的核心问题,就是如何高效利用以下概念:Intermediate Buffer L1 Cache L2 Cache VTCMIntermediate Buffer是一块临时内存,用于存储少量的数..
2020-07-11 14:40:28
3576
原创 深度学习计算框架综述(十三)HVX 计算优化实践—D32 Format浅析
运用Hexagon DSP做深度学习计算,D32 Format 是我们要熟练掌握的基础知识,下图是Hexagon NN中采用的D32 Format(和VCAP采用的存在一些差异,请看文末)。D32 Format是指Feature Map的排布,D32则是指Feature Map的Channel 32对齐,假设Feature Map的维度是[1,24,120,120](NCHW),那么就需要把24补齐到32,即实际分配的Feature Map为[1,32,120,120],另外,对于Width,我们.
2020-07-11 14:31:50
1237
原创 深度学习计算框架综述 开篇
先简单的自我介绍一下,笔者17年本科毕业于西安交大,在vivo工作近三年,一直从事深度学习计算框架开发、端侧部署相关的工作,17年左右开始接触Tensorflow、SNPE,到后来研究NCNN、MACE、TFLite、MNN等,一路见证了计算框架的发展。目前我们团队在开发vivo自研计算框架VCAP(一年半了),同时也支持了超过20个算法的端侧部署,在工作之余,希望能把自己工作中积累的经验和大...
2020-02-23 01:25:00
1731
1
原创 随笔
笔者在大三暑假,利用假期的时间翻译了一本心理学著作,Adult Children of Emotionally Immature Parents: How to Heal from Distant, Rejecting, or Self-Involved Parents,书名的中文译名是《不成熟的父母》,那两个月,每天要翻译四个小时,翻译完后,稿子又改了很多版,生怕有错别字之类的,感觉被掏空了,等...
2020-02-21 01:49:47
360
原创 深度学习计算框架综述(十一)OpenGL ES 计算优化实践
本章会结合OpenGLES优化代码,分析Conv、Pooling等算子的优化思想。
2020-02-20 23:35:14
517
2
原创 深度学习计算框架综述(八)并行计算优化思想
本章主要介绍,不同处理器,CPU、GPU、DSP如何做并行计算加速,这要求我们掌握不同处理器的硬件特性,如寄存器的尺寸和个数、Cache的大小,还有指令支持,这些都是计算优化中很重要的影响因素,同时需要学习Neon、OpenCL、OpenGL、HVX编程,此外,对于DSP,我们还需要掌握量化算法。下面我们就按照CPU、GPU、DSP的顺序来介绍优化思想。...
2020-02-20 23:29:42
1113
原创 深度学习计算框架综述(六)内存复用算法设计
本章主要介绍,内存复用的算法如何设计。typedef struct mem_block { int block_id; int mem_size; std::vector<int> layer_ids; bool used = false;} MemBlock;
2020-02-20 23:20:00
2582
1
原创 深度学习计算框架综述(七)架构设计
本章主要介绍,笔者在开发深度学习计算框架的时候,在架构上的一些思考,不同的业务场景,适合的架构也会有所不同,我们在开发一个框架的时候,一定要把大部分需求考虑到,同时也需要确保架构具备较好的可扩展性,举个例子:权值共享,倘若在架构设计之初,完全没想到会有ALBERT这样权值共享的端侧模型的出现,也没有设计好可扩展的API,那么你设计的框架可能需要大改才能支持ALBERT这类的模型;再比如,CPU F...
2020-02-20 23:14:19
537
原创 深度学习计算框架综述(四)模型Converter设计
本章主要介绍,Converter的设计思想以及如何将Tensorflow、Caffe等深度学习模型转换为自定义模型。
2020-02-20 22:30:23
558
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人