百度360必应搜狗淘宝本站头条
当前位置:网站首页 > SEO教程 > 正文

汉振分享 | 算法的工程优化技术 优化算法工程师

gaoyangw 2024-10-04 16:53 13 浏览 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提供了基于任务分割和数据分割的并行计算机制。


更多机器视觉产品信息与应用说明,机器视觉算法,应用技巧,解决方案以及相关领域的技术分享,欢迎继续关注“汉振智能”....

相关推荐

如何找到满意的工作:定位,技能与实践的三要素

在当今竞争激烈的职场环境中,找到一份满意工作是许多职场人追求的目标。它不仅是经济收入的来,更是实现个人价值,获得成就感的途径。然而,如何才能在众多求职者中脱颖而出,找到那份心仪的工作呢?关键在于明确职...

网络营销板块大涨 值得买涨幅居前

来源:新浪证券-红岸工作室04月14日消息,截止10:15,网络营销板块大涨,新华都、齐心集团、实益达、广博股份涨停,值得买、壹网壹创、凯淳股份、丽人丽妆、青木科技、星徽股份等个股涨幅居前。...

强化网络销售监管、保障公众药械安全,国家药监局发布管理规范

为规范医疗器械网络销售行为,保障公众用械安全,国家药品监督管理局今天正式发布《医疗器械网络销售质量管理规范》(以下简称《规范》)。该《规范》将于2025年10月1日起施行,从资质审核、信息展示、风险防...

优化SEM着陆页面的几点感悟(sem优化策略)

如果我们想在着陆页上,实现更好的转化,一定让访客把眼光专注于利益,尽量避免强调需要访客做的事情。相反,要强调他们通过做了以后可以获得的利益。比如将“填写申请表”(听起来像工作的这句话,改为“今天就开始...

重庆网络营销优化公司浅谈SEM技巧品牌词到底投还是不投

在SEM技巧中,品牌词是否要购买?这是重庆网络公司很多客户在建站推广初期都会问到的问题,如果品牌知名度不高,会不会白花钱呢?其实类似话题已经有很多人讨论过了,一般如果品牌知名度比较低,没有别的同行投你...

原创:沃尔玛自助搜索引擎营销(SEM)

“本公众号主要分享北美跨境电商平台运营类教程,所有教程都是原创,旨在为新手卖家提供更多更准确的信息,如果您也是Amazon、Walmart、wayfair、Homedepot卖家,欢迎一起交流。”...

3大方向,有效提高SEM推广咨询量(sem推广策略的关键点)

在咨询行业,不管你是刚接手一个新账户,还是要自己从零开始搭建账户,老板都会问你能带来多少咨询量,什么时候能够见成效。今天仅以我自己的经验给大家提供一点思路,希望以后大家能多多交流。1账户层级...

砂轮修整需要调转速吗?美国发明砂轮修整技术,实现摩擦力提升

文\万物知识局编辑\万物知识局砂轮修整是一种常用的金属表面处理技术,广泛应用于航空、汽车、机械等行业。将重点讨论砂轮修整对钛合金Ti-6Al-4V的可磨性的影响。Ti-6Al-4V合金是一种...

竞价员日常工作内容,资深sem优化师需要做什么?

很多初入竞价行业的小白对竞价员日常工作内容,资深sem优化师需要做什么一直抱有疑问,不知道合格的竞价员每天都应该做些什么工作,或者迷茫的看着账户消费和查排名调价。所以下面就来给大家聊一聊竞价员的一天!...

东莞推广公司详细解析:SEM竞价推广如何优化关键词质量度?米可

在SEM竞价推广中,关键词质量度是影响广告效果的关键因素之一。然而,很多企业却常常遇到关键词质量度不高,导致广告点击率和转化率下降的问题。那么,如何SEM竞价推广优化关键词质量度呢?今天,东莞推广公司...

SEM案例-如何快速在3个月降低50%的转化成本?

今天分享一个招聘行业的sem案例。此项目是一个老账户,客户的KPI要求是在3个月内降低50%的注册成本,可是客户并不打算给我们之前的转化数据,以防我们根据之前的数据做预估,做成本,而不是尽力降成本。那...

GEO vs SEO:AI时代如何让内容既上搜索榜又进AI回答?

1.什么是GEO?GEO(生成引擎优化)就像给AI“投简历”——它专门优化内容,让AI在回答用户问题时优先引用你的信息。比如,当你问AI“德国展会搭建哪家好”,AI可能会直接推荐你优化过的内容,而不...

百度推送收录工具【2025最全教程】

目录第一步:百度推送token获取...

百度jingj优化流程(百度点击优化)

首要在这儿我先普及一下本钱概念。许多人在调价时下意识会觉得账户里核心的关键词一定要排到榜首,笔者在这想要提醒的是,一切的排名都是和本钱挂钩的,排榜首的出价本钱永远是最高的。  假如你并没有核算你的R...

百度SEO必备:无害化WordPress数据库优化与索引添加策略"

前提描述表现症状cpu和负载100%或者mysql占用直接超过100%,wordpress的慢日志提示如下。...

取消回复欢迎 发表评论: