zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    SQL_TRACE与tkprof分析
    mysql学习之-三种安装方式与版本介绍
    1400
    输出二叉树中所有从根结点到叶子结点的路径
    [置顶] 处世悬镜之舍之
    Azkaban2配置过程
    [置顶] 处世悬镜之舍之 二
    UVALIVE 5893 计算几何+搜索
    Paxos算法 Paxos Made Simple
    Spring AOP 详解
  • 原文地址:https://www.cnblogs.com/yangwenhuan/p/11038577.html
Copyright © 2011-2022 走看看