算法优化的一般方法——以ARM平台为例

 目录

一、为什么要进行算法优化?

二、算法优化方法


一、为什么要进行算法优化?

算法在部署到硬件平台时,对于性能的要求非常高,如果不进行一定程度的优化,算法耗时一般来讲都难以满足要求。

二、算法优化方法

算法优化的一般思路如下图。优化的思想可以看成一个金字塔,分为方案改进、平台优化和局部热点优化几个部分,在金子塔的底部进行优化效果最好,越往上对性能的提升越少

优化的通用流程是,先分析优化的需求是否合理,评估一下该需求是否可以实现,然后分析算法性能,找出算法的瓶颈在哪里,是算力、计算量、带宽等因素中的哪一个影响了耗时。通常代码的耗时应该满足二八原则,即20%的代码消耗80%的时间。优化的策略应该从大到小,从整体到局部,然后不断进行迭代,直到达到需求

图1 算法优化的一般思路

1、方案改进

(1)算法改进

使用更先进的算法替换原有算法;

(2)数据流优化

整理数据流,减少无效处理,减少数据拷贝,减少内存间的读写依赖;

(3)等效算法

exp、log、sin等计算用查表法替代;用位操作代替乘法、除法等运算;避免不必要的除法运算(整数除法是整数运算中最慢的)

2、平台相关优化

(1)cache优化

a) 指令cache优化

将调用次数较多的函数设置为inline函数,减少函数调用开销,减小指令跳转,使得指令cache命中率变高。

b)数据cache优化

预取数据:在本次计算中,预取下一次需要的数据(GCC内置函数 )

void __builtin_prefetch (const void *addr, ...)

数据重排:把数据重新排列,使其对cache访问友好,减少cache miss。可参考 AI | 如何实现高速卷积?深度学习库使用了这些「黑魔法」

(2)并行优化

不同处理单元并行(ARM、DSP等)或者多个CPU并行(可使用OpenMP接口)

(3)逻辑优化

a)循环优化

将循环展开;将最忙的循环放在最内层;尽可能将判断放在循环外进行。

b)编译优化

合适的编译级别(-O0\-O1\-O2\-O3);利用Restrict关键字、register变量;快速数学计算(-ffast-math)等

(4)指令优化

利用NEON指令进行优化,实现SIMD(单指令多数据)

(5)带宽优化

a)数据宽度降低

32位浮点数简化为8位整型

b)地址对其

数据地址对齐,减少不必要的内存访问开销

 

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《蚁群算法中参数α、β、ρ设置的研究——以tsp问题为例》是一篇探讨蚁群算法中参数设置对于求解旅行商问题的影响的研究论文。蚁群算法是一种模拟蚂蚁寻找食物路径的启发式优化算法,被广泛应用于解决各种组合优化问题,其中包括旅行商问题(TSP)。 论文中首先介绍了蚁群算法的基本原理及其在TSP问题中的应用。然后重点研究了蚁群算法中的三个重要参数:信息素启发因子α、期望启发因子β和信息素挥发因子ρ。 信息素启发因子α决定了蚂蚁在路径选择中信息素和启发式信息之间的相对重要性。较大的α会使蚂蚁更加依赖信息素,而较小的α则更加依赖启发式信息。论文中通过实验发现,在TSP问题中,较小的α值能够得到更好的结果。 期望启发因子β代表了蚁群在路径选择中对于启发式信息的偏好程度。论文中的研究表明,较大的β值能够提高算法的全局搜索能力,但过大的β值又会导致算法陷入局部最优解。 信息素挥发因子ρ决定了信息素的蒸发速率,即信息素的持久性。较小的ρ值会使得信息素蒸发速度快,而较大的ρ值则会使信息素持久存在。研究表明,在TSP问题中,合适的ρ值能够平衡全局搜索和局部搜索的能力。 最后,论文通过大量的实验验证了不同参数设置对于TSP问题求解结果的影响,并给出了一些优化建议。从实验结果中可以看出,合适的参数设置能够明显提高蚁群算法在TSP问题中的求解效果。 总之,该论文从不同角度研究了蚁群算法中的三个重要参数α、β、ρ对于TSP问题求解结果的影响,并给出了相应的优化建议,对于深入理解蚁群算法及其参数设置的研究具有一定的参考价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值