汉振分享 | 算法的工程优化技术 优化算法工程师
gaoyangw 2024-10-04 16:53 12 浏览 0 评论
当一个算法实现之后,需要集成到产品中去,这时就要面临性能问题。在实际工程应用中,除采用降低算法的复杂度去解决性能问题外,通常也会选择优化代码以及良好运用硬件等方式。接下来将针对在不改动算法情况下,对纯工程方面做性能优化的技术作一个介绍。
1.流程优化
对初始算法进行流程优化主要有:
A. 避免算法执行过程中的重复操作及冗余计算。
B. 避免算法中循环语句内部有过多依赖和跳转。
C. 定点化:定点化的思想是将浮点型运算转换为整型运算,具体做法是将数据乘上一个很大的数后,将所有运算转为整型计算,例如某个乘法只关心小数点后3位,那把数据都乘上10000后,进行整型运算的结果也就满足所需的精度。
D. 以空间换时间:空间换时间最经典的就是查找表,某些计算相当耗时,但其自变量的值域是比较有限的,这样的情况可以预先计算好每个自变量对应的函数值,存在一个表格中,每次根据自变量的值去索引对应的函数值即可。
E. 预先分配内存:把握算法整个执行过程中内存的使用,提前分配好内存,避免内存不断开辟与释放而产生的耗时。
2.指令优化
SIMD即(Single Instruction Multiple Data),单指令多数据流,是CPU中能够复制多个操作数,并把它们打包在大型寄存器的一组指令集。
目前PC上Intel指令集有SSE、AVX等,SSE/AVX是对其X86体系的SIMD扩展指令集,它基于SIMD向量化技术,提高X86硬件的计算性能,增强了X86多核向量处理器的图像和视频处理能力。SSE/AVX指令支持向量化数据并行,一个指令可以同时对多个操作数进行操作,同时操作的数据个数由向量寄存器的长度和数据类型共同决定。
SIMD属于细粒度的并行,对于图像算法中利用SIMD技术优化,可以一次性对多个像素进行处理,性能提升明显,大部分情况下都有3-4倍的提升。
3.多线程优化
当系统有多个线程/进程时,CPU会按一定的调度策略,把它们尽可能放在不同的核上执行,多线程优化就是把算法拆成多个子任务,跑在不同的线程上,利用CPU多个核的能力,并行执行算法。
比较有名的框架就是OpenMP,OpenMP是一种共享内存并行系统的多线程程序设计方案,支持的编程语言包括C、C++和Python。OpenMP提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的并行程序设计。编译器根据程序中添加的pragma指令,自动将程序并行处理,使用OpenMP简化了并行程序设计。OpenMP采用fork-join的执行模式,开始的时候只存在一个主线程,当需要并行计算的时候,派生出若干个分支线程来执行并行任务。当并行代码执行完成之后,分支线程汇合,并把控制流程交给单独的主线程。一个典型的fork-join执行模型如图1所示。
4.GPU加速
GPU即(Graphic Processing Unit),图形处理器。如图2所示,CPU功能模块很多,能适应复杂运算环境;GPU构成则相对简单,目前流处理器和显存控制器占据了绝大部分晶体管。CPU中大部分晶体管主要用于构建控制电路(比如分支预测等)和Cache,只有少部分的晶体管来完成实际的运算工作。而GPU的控制相对简单,且对Cache的需求小,所以大部分晶体管可以组成各类专用电路、多条流水线,使得GPU的计算速度有了突破性的飞跃,拥有了更强大的处理浮点运算的能力。
要使用GPU进行通用计算,需要基于一个框架,目前的框架主要有CUDA和OpenCL。
CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。这个架构只能在装配了NVIDIA显卡的机器上使用。
OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。OpenCL由一门用于编写kernels(在OpenCL设备上运行的函数)的语言(基于C99)和一组用于定义并控制平台的API组成。OpenCL提供了基于任务分割和数据分割的并行计算机制。
更多机器视觉产品信息与应用说明,机器视觉算法,应用技巧,解决方案以及相关领域的技术分享,欢迎继续关注“汉振智能”....
相关推荐
- 网络推广引流策略:选准平台提升品牌影响力
-
网络推广引流是企业和个人自媒体发展中不可或缺的关键步骤,它能有效提升品牌名声、促进产品销售、吸引众多潜在消费者。为了做好这项工作,我们需深入了解众多细节和策略。下面,我将逐一为大家详细介绍网络推广引流...
- 王心凌翻红,南京某公司专门发文为其拉票?
-
前不久,“刘耕宏女孩”们纷纷加入健身大军,一起跳起了《本草纲目》。最近,“王心凌男孩”们又跳起了《爱你》,登上热搜。一首《爱你》重新翻红5月20日,《乘风破浪3》开播。今年39岁的王心凌在初舞台上,绑...
- 项目招标山海湾金澜锦翠项目广告设计及网络推广服务竞争性磋商公
-
项目招标山海湾金澜锦翠项目广告设计及网络推广服务竞争性磋商
- 关于山海湾金澜锦翠项目广告设计及网络推广服务竞争性磋商公告
-
关于山海湾金澜锦翠项目广告设计及网络推广服务竞争性磋商公告
- 最新项目山海湾金澜锦翠项目广告设计及网络推广服务竞争性磋商
-
最新项目山海湾金澜锦翠项目广告设计及网络推广服务竞争性磋商公告
- 山海湾金澜锦翠项目广告设计及网络推广服务竞争性磋商
-
山海湾金澜锦翠项目广告设计及网络推广服务竞争性磋商...
- 山海湾金澜锦翠项目广告设计及网络推广服务竞争性磋商公告
-
山海湾金澜锦翠项目广告设计及网络推广服务竞争性磋商公告...
- 最新公告山海湾金澜锦翠项目广告设计及网络推广服务竞争性磋商
-
最新公告山海湾金澜锦翠项目广告设计及网络推广服务竞争性磋商公告...
- 最新招标公告山海湾金澜锦翠项目广告设计及网络推广服务竞争性
-
最新招标公告山海湾金澜锦翠项目广告设计及网络推广服务竞争性磋商公告
- 最新公告山海湾金澜锦翠项目广告设计及网络推广服务竞争性磋商公
-
最新公告山海湾金澜锦翠项目广告设计及网络推广服务竞争性磋商公告...
- 合肥网站建设大概流程是怎么样的(合肥网站建设方案开发)
-
合肥网站建设是指在合肥地区进行网站建设的一系列流程和步骤。随着互联网的快速发展,网络在经济、商务、政府、教育和其他领域的作用越来越大,一个高效、安全、易用的网站在合肥的发展中起着重要的作用。下面将简要...
- 网站SEO优化如何制定策略(网站seo的主要优化内容)
-
原文地址:网站SEO优化如何制定策略作者:怎么可以那么难取名字做网站优化首先需要制定好SEO策略,SEO策略贯穿整个SEO工作中心,每一步都是按照这个策略走,循序渐进,一步一步进行。执行SEO之前一定...
- 2025年Google SEO趋势:AI如何重塑你的流量策略?
-
2025年,GoogleSEO正迎来一场由AI驱动的革命。作为一名拥有16年经验的SEO专家,我见证了无数网站因未能适应变化而流量暴跌,也看到那些紧跟趋势的网站实现逆袭。AI如何影响SEO?Goog...
- 网站建设费用包含哪些方面?(网站建设费用计入哪个科目)
-
在网站建设中,费用通常由多个方面组成,这些因素共同决定了网站的整体成本。首先,最基本的费用是域名和主机的购买。域名是网站的地址,而主机则是存放网站内容的服务器,这两者都是网站上线的必要条件。选择合适的...
- 做一个公司官网大概多少钱呢?(做一个公司官网大概多少钱呢知乎)
-
制作公司官网的费用因需求复杂度和服务商不同差异较大,以下是一个大致的费用范围和分析,供参考:#公司官网##网站搭建---**一、影响价格的核心因素**1.**网站类型**-**基础展示型**(5...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 网站建设 (107)
- 网站开发 (47)
- 网络推广哪个平台好 (47)
- 百度收录 (50)
- 网页设计 (44)
- 搜索引擎排名优化 (49)
- 关键词优化工具 (51)
- 外贸网站建设 (56)
- seo整站优化吧 (50)
- 广州seo (47)
- 苏州网站建设 (59)
- 百度搜索推广 (61)
- 关键词优化公司 (51)
- 网页制作 (47)
- 广州网站建设 (48)
- 电商网站建设 (49)
- 百度站长平台 (48)
- 网站收录查询 (46)
- 网站模板 (51)
- 厦门网站建设 (52)
- 百度快照推广 (51)
- 免费网页在线客服系统 (53)
- 雷神代刷网站推广 (53)
- 网站设计模板 (45)
- 一键优化 (47)