ATLAS中数据结构的具体组织及其在龙芯2F体系结构中的应用

论文价格:免费 论文用途:其他 编辑:www.sblunwen.com 点击次数:156
论文字数:30000 论文编号:sb201208251619072569 日期:2012-08-25 来源:硕博论文网
第一章绪论
        龙芯2F是国产的高性能通用处理器【1,2,3],基十龙芯2F低功耗、低成本和高集成度的优点研制高性能计算机,对打破国外垄断,提高我国计算机的自主研制水平有很重要的意义【4]。为发挥计算机系统性能,通常需要给用户提供高效的标准函数库。BLAS库作为众多标准函数库中的一种【5-12],主要负责基本的线性代数运算,目前几乎所有的矩阵运算相关的软件都需要使用BLAS作为其核心数学库。同时BLAS函数的运算性能也是高性能计算机的主要评测手段,其中的DGEMM(双精度矩阵乘)函数在规模较大时甚至占用高性能标准测试程序HPL主要运算量的90%以上【13]。因此针对特定体系结构的特点进行BLAS的优化对发挥计算机性能,提高应用软件的运算速度有很重要的作用。
        1.1BLAS介绍BLAB是一组基本的线性代数子程序,实际上实现矩阵和向量的基本操作。1973年Hanson等发表文章介绍了为线性代数问题建立一组基本子函数的重要性,并提出最初的BLAS版本【6],目前BLAS已经成为初等线性代数运算事实上的标准,它广泛用十科学及工程计算,是许多数学软件的基本核心,因此BLAS的性能的优化对提高程序运行速度、发挥计算机的运算能力有很重要的意义。1.1.1BLAS的数据结构作为参数传入函数的矩阵或向量并非其本来的结构,为了节省空间、减少无用数据的访问开销,ATLAS对传入函数的参数进行了一些存储转换。在函数内部实现时,需要根据传入参数的类型来进行源数据和参数数据的对应转换。由十未找到ATLAS中关十其数据结构的详细介绍,本文根据ATLAS源码并参考其它版本的BLAS函数说明,分析得出ATLAS中数据结构的具体组织。ATLAS中向量和矩阵实际上是存储在一维数组当中,根据向量和矩阵的不同类型,ATLAS为其提供了不同的存储方式。
         矩阵是BLAS函数的主要操作对象,ATLAS根据各种矩阵类型,在二、二级BLAS中实现了不同的子函数,同时对各种矩阵设定了各自的存储方式,以节省存储空间,减少访问开销。矩阵的转置形式一共有4种:T,N,C}H,分别代表实数转置,实数非转置,复数共扼转置,复数共扼非转置。BLAS函数接口中传入的矩阵参数均为按一定方式存储后的数组,程中需注意其位置转换。LL1.1向量向量是一维有序数据的集合,分为行向量与列向量。转置(Transpose):将行向量(列向量)转换为列向量(行向量),了向量的转置过程。在计算过图1.1表示图1.1矢巨阵的转置共扼转置(ConjugateTranspose):将复数向量兀素取共扼后转置。复数向量共扼转置后的形式如图1.20到图1.2矢巨阵的共物转置向量x在数组X中以一定步长incX连续存储,其位置对应关系为:「X[begin+“incX]incX>。x7一}X[begin]incX一。}X[begin+(i+1一n)*incX]incX<0,n为x兀索个数例如包含4个兀素的I句量x在数}}_X=(1,2,3,4,5,6,7,8,9),b雌in=0中以步长incX=-2存储,则x=}}}5}}}1)。复数向量与实数向量类似,差别是一个复数需在数组中占用连续的两个空间,前者存放实部,后则存放虚部。因此若复数向量x步长为incX,则x在X中的实际存储间隔为2*incXo
 
 
参考文献
[1]龙芯2F处理器用户手册fGl.中国科学院计算技术研究所. 2007
[2}胡伟武张福新李祖松.龙芯2号处理器设计和性能分析[[J].计算机研究与发展,ISSN1000.  1239}CN 1 1 1777}TP43(6):  959一966, 2006.
[3]龙芯官方网站[OL.]: http://+}+}+}.loongson.cn/loongson/
[4]张俊霞,张焕杰,李会民,基于龙芯2F的国产万亿次高性能计算机KD-5 0-I的研制,中国科学技术大学学报[[J],第38卷,第一期,2008年1月
[5]   Netlib[OL.]: http://+}+}+}.netlib.org
[6]   J.DONGARRA,  D.C.SORENSEN.  Linear  algebra  on   high-performance  computers[C].In.Proceedings  Parallel Computing 85,  U.  Schendel,  Ed.  North Holland,  Amsterdam,1986_ 113.
 
 
摘要 3-4 
ABSTRACT 4 
第一章 绪论 8-23 
    1.1 BLAS 介绍 8-18 
        1.1.1 BLAS 的数据结构 8-14 
        1.1.2 BLAS 子函数 14-17 
        1.1.3 BLAS 的重要参数 17 
        1.1.4 BLAS 优化现状 17-18 
    1.2 龙芯2F 体系结构 18-21 
        1.2.1 乱序执行 19-20 
        1.2.2 浮点部件 20 
        1.2.3 Cache 的组织 20-21 
        1.2.4 内存管理 21 
    1.3 本文的研究内容和技术 21-22 
    1.4 本文结构 22-23 
第二章 代码优化方法 23-35 
    2.1 循环展开 23-26 
        2.1.1 循环展开因子 24-25 
        2.1.2 指令调度 25-26 
    2.2 加快内存访问 26-28 
    2.3 减少cache 失效 28-34 
        2.3.1 数据预取 28 
        2.3.2 数据分块 28-29 
        2.3.3 部分拷贝 29-34 
    2.4 小结 34-35 
第三章 ATLAS 二级函数的优化 35-52 
    3.1 二级函数的分类 35-36 
    3.2 BLAS2 的计算方式 36-39 
        3.2.1 非对称/非共轭 36-38 
        3.2.2 对称/共轭 38-39 
    3.3 优化过程 39-50 
        3.3.1 GEMV 的优化 39-46 
        3.3.2 HEMV 的优化 46-50 
    3.4 小结 50-52 
第四章 GEMM 的优化 52-60 
    4.1 BLAS3 的计算方式 52-54 
        4.1.1 SYMM/HEMM 52 
        4.1.2 SYRK/HERK/SYR2K/HER2K 52-54 
        4.1.3 TRMM/TRSM 54 
    4.2 GEMM 的优化 54-58 
        4.2.1 循环展开 55-56 
        4.2.2 指令调度 56 
        4.2.3 矩阵分块和部分拷贝 56-57 
        4.2.4 sgemm 的性能 57-58 
    4.3 小结 58-60 
第五章 总结和展望 60-62 
    5.1 本文总结 60-61 
    5.2 存在问题与研究展望 61-62 

QQ 1429724474 电话 18964107217