发狂的小花
公众号:极空AI
AR行业经验、算法部署优化、图像处理算法、slam、SGBM、相机标定、TOF
CPU、DSP、GPU、算子针对硬件优化
展开
-
性能优化(CPU优化技术)ARM Neon 详解
NEON是指适用于Arm Cortex-A系列处理器的一种高级SIMD(单指令多数据)扩展指令集。NEON 技术可加速多媒体和信号处理算法(如视频编码/解码、2D/3D 图形、游戏、音频和语音处理、图像处理技术、电话和声音合成)。Single Instruction Multiple Data (SIMD)顾名思义就是“一条指令处理多个数据(一般是以2为底的指数数量)”的并行处理技术原创 2024-03-19 14:28:41 · 1262 阅读 · 0 评论 -
性能优化(CPU优化技术)-NEON指令详解
ARM NEON 是 ARM 平台下的 SIMD 指令集,利用好这些指令可以使程序获得很大的速度提升。不过对很多人来说,直接利用汇编指令优化代码难度较大,这时就可以利用 ARM NEON intrinsic 指令,它是底层汇编指令的封装,不需要用户考虑底层寄存器的分配,但同时又可以达到原始汇编指令的性能。原创 2024-03-19 14:22:16 · 2616 阅读 · 0 评论 -
深度学习神经网络训练环境配置以及演示
深度学习神经网络训练环境配置以及演示原创 2024-03-15 16:30:26 · 1296 阅读 · 0 评论 -
CUDA Profiling的安装配置使用(nvvp nvprof nsight)
nvpp nprof nsight的安装配置使用,在Ubuntu18上原创 2024-03-13 00:41:05 · 1240 阅读 · 0 评论 -
CUDA环境配置在Ubuntu18
NVIDIA CUDA 环境配置在Ubuntu18上原创 2024-03-12 09:30:00 · 2000 阅读 · 0 评论 -
CUDA入门之统一内存
借助 CUDA 6,NVIDIA 引入了 CUDA 平台历史上最引人注目的编程模型改进之一,即统一内存。在当今典型的 PC 或集群节点中,CPU 和 GPU 的内存在物理上是不同的,并由 PCI-Express 总线分开。在 CUDA 6 之前,程序员就是这样看待事物的。CPU 和 GPU 之间共享的数据必须在两个内存中分配,并由程序在它们之间显式复制。这给 CUDA 程序增加了很多复杂性。原创 2024-03-11 17:10:05 · 968 阅读 · 0 评论 -
CUDA基本入门教程
GPU并不是一个独立运行的计算平台,而需要与CPU协同工作,可以看成是CPU的协处理器,因此当我们在说GPU并行计算时,其实是指的基于CPU+GPU的异构计算架构。在异构计算架构中,GPU与CPU通过PCIe总线连接在一起来协同工作,CPU所在位置称为为主机端(host),而GPU所在位置称为设备端(device)原创 2024-03-10 23:25:05 · 1118 阅读 · 0 评论 -
计算机体系架构初步入门
中央处理器(Central Processing Unit,简称CPU)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。CPU自产生以来,在逻辑结构、运行效率以及功能外延上取得了巨大发展。原创 2024-02-21 16:19:23 · 1478 阅读 · 0 评论 -
一文深入理解cache技术
存储器是分层次的,离CPU越近的存储器,速度越快,每字节的成本越高,同时容量也因此越小。寄存器速度最快,离CPU最近,成本最高,所以个数容量有限,其次是高速缓存(缓存也是分级,有L1,L2等缓存),再次是主存(普通内存),再次是本地磁盘。寄存器的速度最快,可以在一个时钟周期内访问,其次是高速缓存,可以在几个时钟周期内访问,普通内存可以在几十个或几百个时钟周期内访问。图中所示的是三级缓存的架构,可以看到,级别越小的缓存,越接近CPU,但访问速度也会越慢。原创 2024-02-21 11:11:40 · 1115 阅读 · 0 评论 -
性能优化-高通的Hexagon DSP和NPU
手机必须处理电信和视听处理,同时最大限度地延长电池寿命。数字信号处理器 (DSP) 使用专用硬件从 CPU 卸载这些任务,从而降低功耗。高通公司的 Hexagon 在公司 Snapdragon 产品中卸载信号处理方面有着悠久的历史。为了应对近期机器学习应用的兴起,高通正在为 Hexagon 添加矩阵乘法功能。原创 2024-01-23 13:50:40 · 2283 阅读 · 4 评论 -
性能优化-OpenCL kernel 开发
OpenCL kernel 部分的介绍。OpenCL kernel 是运行在设备端的,采用OpenCL C 语言进行开发,本文接下来首先给出一个简单的OpenCL kernel 样例,然后对OpenCL C 语言的各个部分做详细的说明,最后会给出一个完整的OpenCL程序实例,相信通过本文的学习之后大家应该可以在实际工作中使用OpenCL来优化程序的性能。原创 2024-01-22 16:08:21 · 1424 阅读 · 0 评论 -
性能优化-OpenCL运行时API介绍
本文首先给出 OpenCL 运行时 API 的整体编程流程图,然后针对每一步介绍使用的运行时 API,讲解 API 参数,并给出编程运行实例。总结运行时 API 使用的注意事项。最后展示基于 OpenCL 的图像转置代码。在 865 平台下,对于 4096x4096 的 8 位图像加速比达到 10 倍以上。原创 2024-01-22 15:59:58 · 1183 阅读 · 0 评论 -
性能优化(CPU优化技术)-NEON开发进阶
在前面的"CPU 优化技术"系列文章中我们对NEON做了系统的介绍和说明,包括SIMD和NEON概念,NEON自动向量化以及NEON intrinsic指令集等。但是只掌握这些还不足以编写一个性能完善的NEON程序,在实际的NEON优化工作中我们会遇到如何将标量处理转换为向量处理,如何更高效的处理图像的边界区域等问题。接下来我们会针这些问题进行介绍和说明,让大家可以在实际工作中使用NEON来优化程序的性能。原创 2024-01-22 15:52:20 · 1026 阅读 · 0 评论 -
性能优化(CPU优化技术)-NEON指令介绍
本文接下来会详细的介绍 Armv7 和 Armv8 架构下 NEON 向量寄存器、NEON 汇编指令格式、NEON Intrinsics 指令格式、常用的 Intrinsics 指令以及作用、在 x86 平台调试 NEON 代码,最后针对几个常用的 Intrinsics 指令结合实例进行说明。相比于汇编指令,NEON Intrinsics 是一种更简单的编写 NEON 代码的方法,NEON Intrinsics 类似于 C 函数调用,在编译时由编译器替换为相应的汇编指令,使用时需要包含头文件。原创 2024-01-22 15:46:53 · 2140 阅读 · 0 评论 -
性能优化(CPU优化技术)-NEON 自动向量化
总之,虽然通过自动向量化技术我们可以在一定程度上降低向量化编程难度,增强代码的可移植性,但是不能完全依赖于编译器,而且有时为了获得更高性能的代码,还是需要通过intrinsic甚至neon汇编进行编程。neon 对 64 位长数据类型的支持有限,且较小的数据位宽有更高的并行度,应尽量选用较小的数据类型。当数据连续存储在结构体中时,可以进行循环合并操作,即在一个循环内处理临近的数据,提高缓存命中率。基于一定的编程优化准则,可以更好的协助编译器完成自动向量化的工作,获得理想的性能状态。原创 2024-01-22 15:39:43 · 950 阅读 · 0 评论 -
性能优化(CPU优化技术)-NEON 介绍
本节主要介绍基本 SIMD 及其他的指令流与数据流的处理方式,NEON 的基本原理、指令以及与其他平台及硬件的对比。期望大家都能有所收获。原创 2024-01-22 15:34:10 · 1697 阅读 · 0 评论 -
性能优化-OpenCL 介绍
如今的时代是一个数据爆炸的时代,如何处理海量的数据是各行各业不得不面临的一个重要问题。随着摩尔定律的失效,支持大量并行计算的异构处理器开始大放异彩。其中,无论是在 PC 端还是移动端,GPU 无疑是其中最璀璨的明星。接下来,我们首先会对 GPU 的发展历史和硬件架构(移动端)进行简单地介绍,随后对 OpenCL 编程框架进行详细的介绍。原创 2024-01-22 15:06:57 · 1480 阅读 · 0 评论 -
性能优化-HVX 指令介绍
本文主要介绍了 HVX 指令相关的知识,包括 HVX 寄存器相关内容,指令的背景依赖,部分常用 intrinsic HVX 指令。具体指令的详细内容及使用还需阅读 HVX 的指令文档,以及细致的实践操作。🌈我的分享也就到此结束啦🌈如果我的分享也能对你有帮助,那就太好了!若有不足,还请大家多多指正,我们一起学习交流!如果能评论下就太惊喜了!最后,☺祝愿大家每天有钱赚!!!欢迎关注、关注!原创 2024-01-22 14:50:31 · 1644 阅读 · 0 评论 -
性能优化-HVX 开发环境介绍
SDK 根目录hexagon_sdk 目录文件夹描述build编译所需的编译脚本文件docsHVX 开发相关说明文档examplesSDK 例子,HVX 样例位于 common 文件夹incsSDK 头文件目录,包含 HVX 函数及指令等头文件libsSDK 必需库文件目录,包含 HVX 开发运行所涉及的必备库及部分实现代码,例如 dspcv,fastcv,hexagon_nn 等scripts常用脚本目录环境变量设置脚本tools。原创 2024-01-22 14:43:12 · 1316 阅读 · 0 评论 -
性能优化-HVX架构简介
跟 RPC 的调用类似,通常算法会编译成两个库,一个在 host 端运行的 Stub 库,一个在 device 端运行的 Skel 库。客户端需要把本地参数传给远程函数,本地调用的过程中,直接压栈即可,但是在远程调用过程中不在同一个内存里,无法直接传递函数的参数,因此需要客户端将要调用的函数名以及参数打包,然后通过网络发送到服务器。远程调用时,首先客户端需要告诉服务器,需要调用函数,这里函数和进程 ID 存在一个映射,客户端远程调用的时候,需要查一下函数,找到对应的 ID,然后执行函数的代码。原创 2024-01-20 22:41:44 · 1449 阅读 · 0 评论 -
性能优化-一文宏观理解OpenCL
OpenCL概述OpenCL架构与原理OpenCL开发环境搭建OpenCL数据类型与运算OpenCL并行计算优化OpenCL图像处理应用OpenCL性能分析与调试原创 2024-01-11 23:59:51 · 869 阅读 · 7 评论 -
性能优化-OpenMP概述(一)-宏观全面理解OpenMP
OpenMP概述OpenMP编程模型OpenMP数据共享与同步OpenMP任务划分与优化OpenMP并行算法设计OpenMP在多核处理器上的实现OpenMP与其他并行技术的比较与融合原创 2024-01-05 14:45:35 · 2246 阅读 · 7 评论 -
性能优化-OpenMP基础教程(五)-全面讲解OpenMP基本编程方法
OpenMP 是一种制导指令,用于将 C 语言扩展为并行语言。然而,OpenMP 本身并不是一种独立的并行语言,而是为在多处理器上编写并行程序而设计的编译制导指令和应用程序编程接口(API)。它可以在 C/C++ 和 Fortran中使用,并以编译器可识别的注释形式出现在串行代码中。OpenMP 标准由一些具有国际影响力的软件和硬件厂商共同定义和提出,它是一种在共享存储体系结构上的可移植编程模型,广泛应用于 Unix、Linux、Windows 等多种平台。原创 2024-01-05 12:03:41 · 2451 阅读 · 6 评论 -
性能优化-OpenMP基础教程(四)-Android上运行OpenMP
本文主要介绍如何在一个常规的Android手机上调试OpenMP程序,包括Android NDK的环境配置和使用JNI编写一个OpenMP程序运行在Android手机中。原创 2024-01-04 13:42:10 · 1454 阅读 · 0 评论 -
性能优化-OpenMP基础教程(三)
本文主要介绍OpenMP并行编程的环境变量和实战、主要对比理解嵌套并行的效果。🎬:一个全栈工程师的升级之路!🎀CSDN主页🌄人生秘诀:学习的本质就是极致重复!原创 2024-01-03 12:28:41 · 1769 阅读 · 2 评论 -
性能优化-OpenMP基础教程(二)
本文主要介绍OpenMP并行编程技术,编程模型、指令和函数的介绍、以及OpenMP实战的几个例子。希望给OpenMP并行编程者提供指导。原创 2024-01-02 17:05:10 · 1939 阅读 · 0 评论 -
性能优化(CPU优化技术)-ARM Neon详细介绍
ARM NEON是ARM推出的一种CPU扩展技术SIMD,一般在Cortex-A应用处理器上和少量的Cortex-R处理器上支持Neon技术,使用SIMD方式可以在一定程度上提升CPU的运算效率。由于现代处理器的寄存器、ALU都是为了32位或者64为设计的,但是这些大量的数据基本都是8位和16位的,因此如果每次执行一个数据就会很浪费寄存器的宽度,由此引入了Neon 的SIMD技术,通过一条指令控制同时处理多个数据来提高效率,这样就提高了寄存器和ALU的使用效率。原创 2024-01-01 22:01:25 · 2543 阅读 · 0 评论 -
性能优化-如何提高cache命中率
如何提高cache命中率,Cache基本原理与概念影响Cache命中率因素分析优化数据访问模式策略提升Cache替换算法效率多级缓存设计与应用实践监控、诊断与调优工具介绍原创 2023-12-30 22:52:24 · 2519 阅读 · 0 评论 -
高性能计算(HPC)-一文全面理解高性能计算
AI的疯狂发展以及视频、图像、音频、3D数据的迫切需要,导致传统的CPU不能满足这样大算力的计算。由于这些数据的运算多是一些简单的运算,因此需要设计出多个算术运算单元的芯片来应对这种少控制多计算的场景。这是并行计算、高性能计算诞生的重要动力。为了适配这样的场景,设计出了以GPU为核心的并行处理芯片、包括DSP、VPU、DPU、NPU等。本文主要介绍基于这些芯片以及网络、系统引入的高性能计算,比较全面的介绍高性能计算,希望对高性能计算的理解起到一个宏观的作用。🎬:一个全栈工程师的升级之路!原创 2023-12-28 19:24:36 · 3199 阅读 · 0 评论 -
c语言详解牛顿迭代法以及求解倒数和平方根
牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。牛顿迭代法实质是一种求根算法,这意味着它的目标是找到函数 f(x)=0 的值 x。在几何上可以将其视为 x 的值,这时函数与 x 轴相交。原创 2023-12-01 17:50:56 · 1410 阅读 · 0 评论 -
高速缓存、主存、DDR的构成
L1 缓存是在CPU内部的SRAM存储器中构成的,它速度是最快的,常用于解决最基本和最需要高速访问的计算问题。L3缓存通常是在处理器上的芯片组上设置的,它的容量更大,可以快速缓存多个处理器的相关数据,适用于更大型的计算任务。DDR是DDR-SDRAM(Double Data Rate SDRAM),属于DRAM的一个分支,原来的SDRAM是在时钟的一个边沿传输数据,而DDR是在时钟的上升沿和下降沿都传输数据,这样DDR相比较于SDRAM数据处理的速度就提升了一倍。原创 2023-11-21 22:56:27 · 285 阅读 · 0 评论 -
高性能优化的本质
在很早之前,处理器性能的提升一般是通过减小元器件的尺寸,增加元器件的数量,提高主频来实现,这也是摩尔定律所说的,但是由于功耗的影响,主频不能一直增加。后来,由于英伟达的GPU的并行计算的出现,逐渐打破摩尔定律,人们利用多核,SIMD,SIMT来处理大量相同计算的数据,这极大的提高了效率。计算机的算力得到了巨大的提升,但是并行是困难的,对于有数据依赖的程序来说,处理并行是一件及其困难的事,但对于一些简单的数学库的计算,并行的实现相对简单。原创 2023-11-22 09:47:56 · 78 阅读 · 0 评论 -
性能优化-高通cDSP(QDSP6)架构详解
高通cDSP开发的商业价值30秒快速认识高通cDSP开发的商业价值【高通cDSP旨在处理一些简单但需要大量计算的场景,如图像处理、科学计算、AI训练、计算机视觉等。这些场景使用CPU来运算会极大的降低CPU的吞吐量,因此利用现代寄存器较宽的特性设计出了适配数据并行的DSP芯片,cDSP就是典型的代表。利用cDSP+CPU既可以满足一般的使用场景,也可以完成现代图像和视频数据的处理。原创 2023-11-09 10:44:30 · 2779 阅读 · 3 评论