收藏 分销(赏)

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

上传人:pc****0 文档编号:6153313 上传时间:2024-11-28 格式:DOC 页数:6 大小:61KB 下载积分:10 金币
下载 相关 举报
基于Cache的矩阵乘积算法性能改善实验.doc_第1页
第1页 / 共6页
基于Cache的矩阵乘积算法性能改善实验.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
姓 名 学 号 专 业 班 级 联 系 电 话 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)通过以上的实验现象,分析出现这种现象的原因。 3.2 实验结果 1.用C语言实现矩阵(方阵)乘积一般算法(程序1),填写下表: 矩阵大小 100 500 1000 1500 2000 2500 3000 一般算法执行时间 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(argc<2) { 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)*m); b=(float*)malloc(sizeof(float)*m); c=(float*)malloc(sizeof(float)*m); for(i=0;i<size;i++) for(j=0;j<size;j++) { a[i*size+j]=(float)(rand()%1000/100.0); b[i*size+j]=(float)(rand()%1000/100.0); } gettimeofday(&time1,NULL); for(i=0;i<size;i++) for(j=0;j<size;j++) { c[i*size+j]=0; for(k=0;k<size;k++) c[i*size+j]+=a[i*size+k]*b[k*size+j]; } gettimeofday(&time2,NULL); time2.tv_sec-=time1.tv_sec; time2.tv_usec-=time1.tv_usec; if(time2.tv_usec<0L) { time2.tv_usec+=1000000L; time2.tv_sec-=1; } printf("Executiontime=%ld.%6ld seconds\n",time2.tv_sec,time2.tv_usec); } return(0); } 程序2: #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(argc<2) { 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)*m); b=(float*)malloc(sizeof(float)*m); c=(float*)malloc(sizeof(float)*m); for(i=0;i<size;i++) for(j=0;j<size;j++) { a[i*size+j]=(float)(rand()%1000/100.0); c[i*size+j]=(float)(rand()%1000/100.0); } gettimeofday(&time1,NULL); for(i=0;i<size;i++) for(j=0;j<size;j++) { b[i*size+j]=c[j*size+i]; for(i=0;i<size;i++) for(j=0;j<size;j++) { c[i*size+j]=0; for(k=0;k<size;k++) c[i*size+j]+=a[i*size+k]*b[j*size+k]; } gettimeofday(&time2,NULL); time2.tv_sec-=time1.tv_sec; time2.tv_usec-=time1.tv_usec; if(time2.tv_usec<0L) { time2.tv_usec+=1000000L; time2.tv_sec-=1; } printf("Executiontime=%ld.%6ld seconds\n",time2.tv_sec,time2.tv_usec); } return(0); } 5 实验结果分析 (1)对于矩阵乘法,用一般算法执行时,执行时间随着矩阵的增大变化较大。 (2)用优化算法执行时,执行时间随着矩阵的增大变化较小。 (3)由加速比计算结果可清晰看到在矩阵比较小时,优化前后区别不大;随着矩阵规模变大,加速就比较明显了。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服