Is Search Really Necessary to Generate High-Performance BLAS

 

搜索对于生成高性能BLAS真的必要吗? 

 

程序优化的一个关键步骤是评估参数的最优值,例如tile sizes和loop unrolling factors(循环展开因子)。传统编译器使用分析模型来计算这些值,而ATLAS库则在参数的取值空间中进行全局搜索,得到不同的取值组合,再在真实硬件上运行,以此决定哪些取值可以得到最好的性能。 广泛认为基于传统模型的优化,比不上基于搜索的,因为分析模型没法涵盖现代高性能架构的复杂性,但迄今为止很少有对这两者的量化比较。

为了做这种量化比较,我们把ATLAS中的全局搜索引擎替换成模型优化引擎,然后在大量架构上测试两种实现的性能。我们的实验表明,基于模型的优化比全局搜索更高效。

 

介绍

一个广为接受的事实是,编译器生成的代码,效率比不上微调的。例如矩阵乘法。 

 

手动微调程序最简单的方法就是,给定一个平台,写不同版本的程序,然后评估各自的性能,从中选出表现最好的版本。不同版本之间的算法通常是一样的,只是参数取值不一样,例如tile sizes和loop unrolling factors。

 

ATLAS代码生成器

 

内存层面优化

分块是一种算法变换,把矩阵乘法转化成一系列小的矩阵乘法,其中每个小矩阵乘法都针对原矩阵的一些块。 

 

 

 

评估机器参数

 

 

总结和后续工作

本文的实验结果表明,对于ATLAS系统中的参数最优化问题,分析模型可以得到接近最优解来生成高性能的BLAS代码。 

 

 

参考链接

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.59.9686&rep=rep1&type=pdf

 

转载于:https://www.cnblogs.com/yangwenhuan/p/11038577.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值