基于Cache矩阵乘积算法性能改善实验.doc

基于Cache矩阵乘积算法性能改善实验.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
姓 名 学 号 专 业 班 级 联 系 电 话 Email 同 组实验者 无 无 实验室名 称 信息楼301室 实 验日 期 2013.7.6 课 程名 称 计算机系统结构 实 验 序 号 七 实 验项 目 基于Cache的矩阵乘积算法性能改善实验 主 讲教 师 辅 导教 师 指 导教 师 实验心得: (1)通过本次试验,我了解Cache对系统性能的影响; (2)了解了基于系统结构的算法设计思想; 学生签名: 2013年 7 月 6 日 成绩评定及教师评语: 成绩: 教师签名: 2013 年 7 月6 日 1 实验目的及要求 ★了解Cache对系统性能的影响 ★了解基于系统结构的算法设计思想 2 实验模块及实验原理 2.1 实验模块 (1)编写两个C语言程序。一个是实现矩阵乘积的一般算法。另一个是基于Cache的矩阵乘积优化算法。 (2) 采用不同矩阵大小来进行多组测量,使实验的结果更加准确。 2.2 实验原理 本实验采用控制变量的方法。矩阵大小相同时比较两算法的优略。在相同算法中采用改变矩阵大小的方式,使结果更加准确。 3 实验步骤与结果 3.1 实验步骤 (1)编译并运行程序1,记录相关数据。 (2)不改变矩阵大小时,编译并运行程序2,记录相关数据。 (3)改变矩阵大小,重复(1)、(2)两步。 (4)0. 15625 2. 62500 20.171875 73.718750 167. 93750 394.828125 1099. 31250 矩阵大小:100 一般算法执行时间:0.15625 矩阵大小:500 一般算法执行时间:2. 62500 矩阵大小:1000 一般算法执行时间:20.171875 矩阵大小:1500 一般算法执行时间:73.718750 矩阵大小:2000 一般算法执行时间:167. 93750 矩阵大小:2500 一般算法执行时间:394.828125 矩阵大小:3000 一般算法执行时间:1099. 31250 2.程序2是基于Cache的矩阵(方阵)乘积优化算法,填写下表: 矩阵大小 100 500 1000 1500 2000 2500 3000 优化算法执行时间 0. 15625 1.562500 12.625000 42.875000 102.171875 202.796875 360. 31250 矩阵大小:100 优化算法执行时间:0.15625 矩阵大小:500 优化算法执行时间:1.562500 矩阵大小:1000 优化算法执行时间:12.625000 矩阵大小:1500 优化算法执行时间:42.875000 矩阵大小:2000 优化算法执行时间:102.171875 矩阵大小:2500 优化算法执行时间:202.796875 矩阵大小:3000 优化算法执行时间:360. 31250 3.优化后的加速比(speedup) 矩阵大小 100 500 1000 1500 2000 2500 3000 加速比 1 1.68 1.598 1.72 1.63 1.63 3.05 矩阵大小:100 加速比:0.15625 矩阵大小:500 加速比:1.68 矩阵大小:1000 加速比:1.598 矩阵大小:1500 加速比:1.72 矩阵大小:2000 加速比:1.63 矩阵大小:2500 加速比:1.63 矩阵大小:3000 加速比:3.05 加速比定义:加速比=优化前系统耗时/优化后系统耗时; 所谓加速比,就是优化前的耗时与优化后耗时的比值。加速比越高,表明优化效果越明显。 4 实验代码 程序1:#include sys/time.h #include unistd.h #include stdio.h main(int argc,char *argv[]) { float *a,*b,*c,temp; long int i,j,k,size,m; struct timeval time1,time2; if(argc2) { printf(\n\tUsage:%s Row of square matrix\n,argv[0]); exit(-1); } size=atoi(argv[1]); m=size*size; a=(float*)malloc(sizeof(float

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档