![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法优化
gaussrieman123
喜欢新技术与老故事。
展开
-
Cook-Toom 算法做快速卷积
背景卷积是信号处理中的重要操作,在深度学习中更是重中之重,所以有必要对一些经典的快速卷积方法做一些了解。在查阅了若干资料后,对于Cook-Toom算法,以下简称CT算法,有了一定的了解,记录一下,便于以后查阅。卷积介绍由于这个算法比较经典,所以默认处理的是信号系统中的一维卷积,此文也是基于一维卷积对CT算法做一个介绍。一维卷积过程如下:给定信号f[n]以及滤波器g[m],则卷积过后的信...原创 2019-10-31 10:35:24 · 2308 阅读 · 0 评论 -
resize函数查表优化
接着https://blog.csdn.net/gaussrieman123/article/details/100153994写,对于输入输出图像大小已知,且通道数相同的resize操作,可以使用查表的方法来进行优化,先生成输出图像中每个点对应原图的位置,然后拷贝原图像素点到目标图像。这里的拷贝操作,也可以换成最邻近、插值等。创建表int createTable(int *table, i...原创 2019-10-12 11:39:25 · 825 阅读 · 3 评论 -
算法优化之c++多线程优化:思考与总结
最近的项目中要用多线程来对代码进行优化,期间查阅了一些资料,主要是踩过一些坑,在此记录一下。1.什么是线程?没有谁比维基百科说的更好了,直接点击查看:线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也...原创 2018-07-10 11:35:17 · 8730 阅读 · 1 评论 -
c++ 对for循环的并行优化例子
什么是并行优化?并行优化是代码优化的基本方法,从大到小一共可以分成三级:异步框架;任务并行;数据并行。在实际工作中,一般是先设计异步框架,包括异步处理任务以及异步任务的异构化等;第二步一般是做数据并行优化(SIMD),利用CPU的向量指令来对多条数据并行处理;这两步是代码优化的重心,一般做完这两步,系统性能会有明显的提升。今天要讨论的是第三步,for循环的并行优化。与前两者不同的是,for循环...原创 2018-08-17 16:14:53 · 29801 阅读 · 1 评论 -
aarch64 neon指令集拾遗
太常用就不列出了。读写指令读向量/浮点数ld1ld1 {v0.S}[0], [x0], #4从x0出读一个float数,存到v0寄存器的第一个通道,并将x0加4ld1 {v0.4S, v1.4S...}, [x0] 从x0处连续读入float,依次存到各个寄存器中ld1 {v0.8B, v1.8B}, [x0] ld1不仅可以读128位向量寄存器,也可以读64位向量寄存器,此时每个寄...原创 2019-07-16 16:40:42 · 5137 阅读 · 0 评论 -
OpenCV的resize函数优化
背景在使用OpenCV做图像处理的时候,最常见的问题是c++版本性能不足,以resize函数为例来说明,将size为[864,1323,3]的函数缩小一半:Mat img0; gettimeofday(&t4, NULL); cv::resize(source, img0, cv::Size(cols_out,rows_out)); gettimeofday(&...原创 2019-08-30 11:37:48 · 7585 阅读 · 9 评论