自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (1)
  • 收藏
  • 关注

原创 内存池可视化

该项目提供了一套 hook 机制用于获取一个 C++ 项目整个声明周期中的内存峰值,并使用 html 呈现出来,源代码采用线程局部内存(TLS)解决if (tls) {if(tls) {} } };这里使用了一个 recur_depth 变量,每次递归 +1,当值大于 0 时直接返回,避免递归调用 malloc。

2024-04-22 12:51:48 368

原创 OpenCl 重点总结

opencl 注意事项

2024-02-29 17:21:13 471

原创 NonCopyable

这是一个正确的测试案例,注意 Derive 类的拷贝构造和拷贝赋值写法,如果省略掉基类信息(NonCopyable),那么在调用 Derive 的拷贝构造和拷贝赋值时,NonCopyable 实际上调用的是构造函数,从而丧失了目标功能。将拷贝构造和拷贝赋值设为私有成员,子类无法访问,通过该方式实现上述功能,当然更合理的写法是采用 delete 操作符。这样显示的告诉编译器,禁止生成拷贝构造和拷贝赋值函数。

2024-01-09 13:41:08 367

原创 Chart 11 OpenCL案例

这是 opencl 的最后一章了,没什么特别的,写了一个 cv::Mat 乘以一个标量,基于 buf 和 image 两种方法实现。附上一个网站供大家学习 opencl API,这是一个官方网站,可以查询对应的 API 调用方法OpenCL 官网。

2023-12-22 14:38:49 391

原创 Chart 10 OpenCL 优化教学

这一章提供了一些示例,以演示使用前几章讨论的优化技术。除了一些简单的代码片段演示外,我们还通过使用前几章中讨论的多种实践方法,逐步优化了两个知名的图像处理 filter,即 Epsilon filter 和 Sobel filter。本章提供了一些示例和代码片段,演示了前几章介绍的优化规则以及性能的变化。开发人员应该尝试在真实设备上跟随这些步骤。由于编译器和驱动程序的升级,不是所有的结果都能够完全重现。但总体而言,通过这些优化步骤应该能够实现类似的性能提升。

2023-12-15 01:04:10 269

原创 Chart 9 Adreno GPU的 OpenCL 扩展

OpenCL平台或设备可能通过扩展机制支持未纳入核心标准的功能。KHR扩展由OpenCL标准工作组批准,但供应商支持是可选的。表示这些扩展的字符串以cl_khr开头。这些扩展通常由多个供应商支持,并且如果它们声称支持这些扩展,就必须通过一些一致性测试。KHR扩展的规范可在Khronos的官方OpenCL网站上找到。一些KHR扩展可能会在OpenCL标准的新版本中成为核心功能。EXT扩展由OpenCL标准工作组批准,但供应商支持是可选的。表示这些扩展的字符串以cl_ext开头。

2023-12-13 13:48:20 350

原创 Chart 8 内核优化

这一章节提供了有关内核优化的更多细节,这些内容可能与第6章的顶级优化提示和第7章的内存优化有一些重叠。

2023-12-09 22:55:16 151

原创 Chart 7 内存优化

内存优化是最关键且有效的OpenCL性能技术。许多应用程序受限于内存而非计算能力。因此,精通内存优化对于OpenCL优化至关重要。

2023-12-09 16:24:55 115

原创 Chart 6 Adreno GPUs内核优化建议

Adreno GPU的OpenCL优化技巧

2023-12-07 14:30:26 107

原创 Chart 5 性能优化概述

opencl 性能优化概述

2023-12-07 10:30:40 324

原创 Chart 4 Adreno OpenCL 应用程序开发

Adreno GPUs 调试

2023-12-05 14:12:30 152

原创 Chart 3 OpenCL on Snapdragon

OpenCL for Snapdragon

2023-12-05 13:42:25 95

原创 Chart 2 OpenCL简介

OpenCl简介

2023-11-06 14:04:35 146

原创 C++ 拷贝函数的一个注意事项

看了定义我们就理解了问题所在,b 这个对象没有被创建,所有一定会有一个构造函数会被调用,而不能赋值。c这个对象已经存在,不能再重新构造,只能调用赋值操作。- 拷贝复制函数:从另一个同类型对象拷贝其值到自我。- 拷贝构造函数:以同类型对象初始化自我。先看下面的代码,需要注意的是。

2023-10-31 14:48:19 98

原创 CMYK to RGBA

neon优化 CMYK to RGBA

2023-10-08 15:23:10 114

原创 horizontal image flip(Neon优化)

Neon优化像素反转

2023-10-08 13:01:01 429

原创 碰撞检测 Neon优化

neon优化碰撞检测

2023-10-08 11:21:24 82

原创 NEON矩阵乘法

Neon优化矩阵乘法

2023-10-08 11:13:22 129

原创 Adler-32算法使用Neon优化

Neon优化Adler-32算法

2023-10-07 18:00:24 266

原创 ARMv8架构简介

armv8架构简介,只介绍了neon指令集、处理器、寄存器部分,其他arm指令集、电源管理、内存单元、缓存等不做介绍,neon开发很少涉及到

2023-09-14 12:48:19 1174

原创 ARMv7系统寄存器

本文档介绍 NEON 和 VFP 的系统寄存器,他们用于描述 NEON 和 VFP 的系统架构。包括:FPSCR, FPEXC, FPSID,MVFR0/1.

2023-09-14 12:43:42 352

原创 ARMv7处理器

armv7架构的部分处理器

2023-09-14 12:42:16 419

原创 c++ Mixin实现的一种方法

C++的mixin实现示例

2023-09-13 14:55:16 143

原创 【深入理解计算机系统】第九章 虚拟内存

如果TLB有个组,那么TLB索引(TLBI)是由VPN的t个最低位组成的,TLB标记是由VPN的剩余的位组成。在最糟糕的情况下,val 的内容对应于虚拟内存的某个合法的读/写区域,于是我们就覆盖了这块内存,这通常会在相当长的一段时间以后造成灾难性的、令人困惑的后果。任务结构中的一个条目指向mm_struct,它描述了虚拟内存的当前状态,其中pgd指向第一级页表的机制,mmap指向一个vm_area_stucts的链表,该链表描述了当前虚拟地址空间的一个区域,pgd则存放在CR3控制寄存器中。

2023-08-28 13:04:20 111

原创 【深入理解计算机系统】第八章 异常控制流

程序计数器的一个值序列:,其中是某个相应指令的地址,其中,到的过度为控制转移,这样的控制转移序列叫处理器的控制流。当和不相邻时(发生了突变),则发生了跳转、调用、返回这样的程序指令,这些突变称之为异常控制流(ECF)。异常控制流可以发生在:硬件层,硬件检测到的事件会触发控制突然转移到异常处理程序;操作系统层,内核通过上下文切换将控制从一个进程转移到另一个进程;应用层,一个进程发送信号到另一个进程。

2023-08-28 12:51:20 106

原创 【深入理解计算机系统】第七章 链接

编译时,编译器向汇编器输出每个全局符号(强符号和弱符号),汇编器隐含地编码至可重定位目标文件的符号表里。函数和已初始化的全局变量是强符号,未初始化的全局变量是弱符号。不允许有多个同名的强符号如果有一个强符号和多个弱符号同名,那么选择强符号如果有多个弱符号同名,那么选择任意一个可以使用 -fno-common 编译选项,编译时,遇到多重定义符号,则触发一个错误。

2023-08-28 12:37:56 112

原创 ARMv7 Neon指令集

armv7 neon指令集介绍

2023-08-28 12:26:06 152

原创 Git仓库简介

git

2023-08-28 10:46:39 1745

原创 Git命令简单使用

上传仓库到 git 上之前需要配置用户名和邮箱在本地仓库中使用名称初始化git init使用下面的命令将文件添加到仓库在所作的改动后面增加索引在git上创建一个和文件夹同名的仓库,使用下面命令链接仓库使用下面的命令将本地仓库推送到远程仓库。

2023-08-28 10:35:04 768

原创 GaussianBlur对分

高斯滤波是一种线性平滑滤波,用于消除高斯噪声。高斯滤波的中心点权重更大,原理中心的权重较小,其维度为奇数。高斯核函数用于将有限维数据映射到高维空间。通常定义为空间中任意一点 x 到某一中心点 μ 之间的欧式距离的单调函数。高斯核的计算公式为:Gx2π​σ1​e−2σ2x−μ2​Gxy2π​σ1​σ2​1​e−((2σ12​x−μ1​2​2σ22​y−μ2​2​))其中,

2023-08-28 10:22:03 77

原创 OpenCV 开启O3优化

【代码】OpenCV 开启O3优化。

2023-08-28 10:13:11 1329

原创 OpenCV简介

OpenCV(开源计算机视觉库:http://opencv.org)是一个开源库,包含数百种计算机视觉算法。当前的 OpenCV 实现是完全可重新输入的。也就是说,不同类实例的相同函数或相同方法可以从不同线程调用。此外,相同的 Mat 可以在不同的线程中使用,因为引用计数操作使用特定于体系结构的原子指令。

2023-08-27 01:35:22 805

原创 roof-line模型

算力π:计算平台的性能上限,指的是一个计算平台倾尽全力每秒钟所能完成的浮点运算数。单位是 FLOPS or FLOP/s。带宽β:也即计算平台的带宽上限,指的是一个计算平台倾尽全力每秒所能完成的内存交换量。单位是Byte/s。计算强度上限I:两个指标相除即可得到计算平台的计算强度上限。它描述的是在这个计算平台上,单位内存交换最多用来进行多少次计算。单位是FLOPs/Byte。Iπβ。

2023-08-24 11:22:26 161

原创 【深入理解计算机系统】第六章 存储器的层次结构

具有良好局部性的程序倾向于一次又一次地访问相同的数据项集合,或是倾向于访问邻近的数据项集合。具有良好局部性的程序比局部性差的程序更多地倾向于从存储器层次结构中较高层次处访问数据项,因此运行得更快。

2023-08-23 18:13:35 76

原创 【深入理解计算机系统】第五章 优化程序性能

深入理解计算机系统 学习心得

2023-08-23 18:03:09 135

原创 源码编译OpenCV android库,并编写一个native demo程序

不必配置环境变量,因为在编译时会指定NDK的路径,因为服务器的cmake版本是3.16.3基本上够用NDK路径。

2023-07-17 11:39:53 614

原创 编写安卓native程序教程

开发一个native的教程

2023-07-07 14:55:17 330

原创 C++的语法问题总结

C++语法问题,持续更新

2022-11-16 11:03:58 401 1

原创 函数指针的使用技巧

返回值类型是函数指针

2022-11-11 16:50:22 223

原创 C++ vector中at的特殊用法

C++ vector,堆中使用的注意事项

2022-11-01 10:21:52 1811

cmake的使用说明及相关命令规范

cmake的使用说明及相关命令规范

2023-08-28

wifi脚本工具 net shell批处理命令

net shell编写的简单的wifi脚本,简单实用方便使用

2019-04-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除