矩阵乘法运算效率111.docx

上传人:b****9 文档编号:64253 上传时间:2022-10-01 格式:DOCX 页数:26 大小:378.13KB
下载 相关 举报
矩阵乘法运算效率111.docx_第1页
第1页 / 共26页
矩阵乘法运算效率111.docx_第2页
第2页 / 共26页
矩阵乘法运算效率111.docx_第3页
第3页 / 共26页
矩阵乘法运算效率111.docx_第4页
第4页 / 共26页
矩阵乘法运算效率111.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

矩阵乘法运算效率111.docx

《矩阵乘法运算效率111.docx》由会员分享,可在线阅读,更多相关《矩阵乘法运算效率111.docx(26页珍藏版)》请在冰豆网上搜索。

矩阵乘法运算效率111.docx

矩阵乘法运算效率

摘要

近年来,处理器运行速度的增长和存储器访问速度的增长之间存在着巨大的差距,这使得两者之间的速度差距

越来越大,现代计算机体系结构中广泛采用高速缓冲存储器(Cache)来缓解这两者之间的速度差距。

本文根据矩阵乘法运算的六种不同程序代码,构建了矩阵乘法运算时间的测试程序,得到矩阵乘法运算六种不

同版本的运行时间;并通过分析六种不同矩阵乘法运算程序代码中的空间局部性与时间局部性,得出由于高速缓冲

存储器和程序访问的局部性差异,同一算法的不同程序代码运行时间相差很大。

为了充分利用高速缓冲存储器,提

高程序运行效率,在编写程序时需要考虑程序和数据的空间局部性和时间局部性。

为了充分利用高速缓冲存储器,论文又给出了分块矩阵乘法运算程序,它可以进一步提高矩阵乘法运算效率。

关键字:

高速缓冲存储器;矩阵乘法;分块矩阵;局部性原理;时间局部性;空间局部性

Abstract

Recentyears,therehasbeenabiggapbetweenthegrowthofprocessorandmemoryrunsaccessspeed,whichmakes

thespeeddiferencebetweenthemismoreandmorebig.Inmoderncomputersystemstructure,Cacheiswidelyusedto

aleviatethespeedgap.

Basedonthesixdiferent

programcodeofmatrixmultiplication,

constructsthematrix

multiplication

timetest

procedures,obtainingtherunningtimeofmatrixmultiplicationsixdiferentversions;Andthroughtheanalysisofspace

localizedandtimelocalizedinsixdiferentprogramcodeofmatrixmultiplication,itisconcludedthatduetothecache

memoryandthelocaldiferencesofprogramsaccess,thereisahugediferenceintherunningtimeofthesamealgorithm

ofdiferentprogramcode.Inordertomakefuluseofcachememoryandimproveprogrameficiency,

itisneededto

considerthespaceandtimelocalizedwhenprogramming.

Inordertomakefuluseofcachememory,papergivestheprogramofpartitionedmatrixmultiplication,whichcould

furtherimprovethematrixmultiplicationeficiency.

Keywords:

Cache;matrixmultiplication;blockmatrix;principleoflocality;temporallocality;spatiallocality

word文档可自由复制编辑

目录

摘要 0.

Abstract 0.

第一章概述 3.

1.1研究背景及意义 3.

1.2研究内容 4.

第二章基础知识 5.

2.1矩阵乘法运算 5.

2.2高速缓冲存储器 6.

2.2.1设置Cache的理论依据 6

2.2.2Cache的体系结构 8

2.2.3Cache的相关知识 8

2.3开发平台 9.

第三章测试程序 1.0

3.1.数据区的设定 1.0

3.2.程序执行时间的计算方法 10

3.3.测试程序的运行结果保存方式 11

3.4.测试程序代码 1.2

第四章结果和分析 1.6

4.1实验结果图 1.6

4.2实验结果分析 17

第五章改进的矩阵乘法运算 1.8

5.1分块的矩阵乘法运算 1.8

5.2分块的矩阵乘法运算实验结果和分析 19

第六章总结 2.1

参考文献 2.3

致谢 2.5

第一章概述

1.1研究背景及意义

在应用程序中,如何提高程序的效率?

这是很现实的问题。

应用程序作为人们与计算机“交谈”

的工具,

运行速度是一个十分重要的指标。

人们总是希望应用程序执行速度快些,

以便达到最佳的运行效果。

随着计算机硬件的发展,微机的速度越来越快,运行软件的能力也越来越强。

计算机中程序的运行速度主要受

计算机硬件和软件影响,提高计算机程序的运行速度,一般可以从以下几个方面着手:

1.改进算法

要想提高程序运行效率,改进算法是最关键的。

算法是影响程序运行效率的主要因素,在编写不同程序时要选

择适当的算法。

算法是计算机求解特定问题的方法和步骤,是指令的有限序列。

通常一个问题可以有多种算法,而

一个好的算法通常应该具有下列5个基本特性:

正确性、健壮性(鲁棒性)、可读性、高效率、低存储空间。

2.改进程序

同一个算法,实现的程序因为书写不同,其程序的运行效率也是不一样。

而提高程序效率的方法又有很多。

C/C++语言为例,可以通过以下方法来提高程序的运行效率:

(1)采用自加和自减运算

说到对C/C++语言的优化,

人们马上会想起X++和X――(或++X、――X),

它们的功能虽与X=X+1、

X=X-1相同,

但二者的运行效率却截然不同。

前者不仅运算速度快,而且占用RAM的时间更少。

(2)巧用寄存器变量

寄存器变量是保存在CPU内部寄存器中的,

其访问速度要比内存变量快得多。

若将寄存器变量用于关键的内

层循环控制变量,

就会大大提高程序的运行速度。

(3)适当采用指针和数组下标

指针是

C/C++语言的一个重要特色,

正确使用指针,

可以使程序简洁、高效、紧凑。

利用指针变量比直接

利用数组下标来访问数组程序运行要快得多。

(4)合理使用内联函数

在C++中,为了解决一些频繁调用的小函数大量消耗栈空间的问题,特别地引入了inline

修饰符,表示为

内联函数。

内联函数和宏很类似,

其区别在于,

宏是由预处理器对宏进行替代,而内联函数则是通过编译器控制来

实现的,

而且内联函数是真正的函数,

只是在需要用到的时候,

像宏一样地展开,

所以取消了函数的参数压栈,

减少了调用的开销。

你可以像调用函数一样来调用内联函数,而不必担心会产生类似处理宏的一些问题。

(5)

采用位运算

C/C++语言可以用来开发系统软件,

因此具有汇编语言所能完成的一些功能。

所谓位运算是指进行二进制位

的运算,

这项功能不仅有着其他高级语言无法相比的优越性,

而且位运算速度快,在某些应用中还有着意想不到的

作用。

除了上述方法之外,结合硬件环境也可以提高程序的运行效率。

在计算机硬件对计算速度的影响上,计算机的

3.硬件环境

硬件是提高应用程序计算速度和运行效率的重要途径之一。

程序员在设计程序时,应当充分认识到计算机系统的重

要性及实现细节,设计出高效、健壮、可移植的程序,从而能提高程序的运行速度。

众所周知,内存的存取速度极大地制约着计算机的处理能力。

目前,CPU的速度越来越快,尽管内存的速度也

不断提高,但远远落后于CPU的处理速度。

因而,CPU要花大量的时间等待内存访问延迟,因而内存存取速度是计

算机速度的一个瓶颈。

为了提高内存的存储速度,越来越多的计算机采用高速缓存Cache技术。

因而,如何有效地

利用Cache的特性,提高程序的运行效率,已经成为一个热点问题。

本文通过矩阵乘法运算相关代码的运行时间,讨论高速缓冲存储器对程序运行速度的影响。

1.2研究内容

本文根据矩阵乘法运算的六种不同程序代码,构建了矩阵乘法运算时间的测试程序,得到矩阵乘法运算六种不

同版本的运行时间;并通过分析六种不同矩阵乘法运算程序代码中的空间局部性与时间局部性,得出由于高速缓冲

存储器和程序访问的局部性差异,同一算法的不同程序代码运行时间相差很大。

为了充分利用高速缓冲存储器,提

高程序运行效率,在编写程序时需要考虑程序和数据的空间局部性和时间局部性。

为了充分利用高速缓冲存储器,论文又给出了分块矩阵乘法运算程序,它可以进一步提高矩阵乘法运算效率。

本文共分为6章,其具体组织如下:

第一章是绪论。

简要介绍了高速缓冲存储器对程序运行速度的影响分析研究的研究背景和意义,并且介绍了以

C语言为例的提高程序运行效率的方法,在总结这些工作的基础上提出本文的研究思路与内容。

第二章基础知识。

简要介绍了与本文研究相关的矩阵乘法运算和高速缓存Cache的有关知识,主要包括矩阵乘

法运算的六个不同程序版本,Cache的工作原理,Cache的命中率等,并在最后对实验的开发环境VisualC++6.0

做一个简单的介绍。

第三章测试程序。

首先对构成矩阵的数组做一个说明,其次介绍4种用于测试程序运行时间的方法及函数,接

着说明了程序实验结果的存放形式和方法,最后给出了完整的测试程序代码。

第四章结果及分析。

以表格形式呈现实验结果,根据实验结果,绘制图表。

对程序从空间局部性和时间局部性

两方面进行分析,以验证实验结果。

第五章改进的矩阵乘法运算。

针对程序的空间局部性和时间局部性随着数组的增大而降低的情况,提出了分块

的思想,并且根据分块思想构建矩阵乘法运算的程序,相应的实验证明分块能够较好的提高程序的局部性,提高程

序的运行效率。

第六章总结。

总结本文所做的主要研究工作,并且对利用局部性原理和高速缓存提高程序的运行效率提出了建

议。

第二章基础知识

2.1矩阵乘法运算

A=êa

éa11

ë21

a

a12ù

22û

ú,

B=êb

éb11

ë21

b12ù

éc11

b

22û

ú,C=êc

ë21

c12ù

c

22û

ú

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1