.
5
HUNANUNIVERSITY
课程实验报告
课程名称:计算机组成与结构实验项目名称:peflab-handout
专业班级:计科1403姓名:
学号:
指导教师:黄丽达完成时间:2016年5_月—28—日
信息i<dim;i+=block)
for(j=0;j<dim;j+=block)
{//block*blockminimatrix
im=i+block;
for(i1=i;i1<i+block;i1++){jm=j+block;
for(j1=j;j1<j+block;j1++)dst[RIDX(i1,j1,dim)]=src[RIDX(j1,dim-i1-1,dim)];
}
}从上述截图可以看出,当将循环步长分成最大为32,优先dest的写操作时,程序的性能
Rotate:Version
二naive_
rotate:
Naivebaseline
LFipleme
Dim
64
12&
2S6
512
1024
Mean
YourCPEs
27,6
BaseltneCPEs
40*1
4筑4
Speedup
1*2
1-5
1,8
0-9
1*3
Rotate:Version
=rotate
1:Currentworkingversion:
Dim
64
128
256
512
1024
Mean
YourCPFs
53
Basel!deCPEs
49,1
4队4
Speedup
£.3
九9
4•今
明显提高,,优化后性能是原始代码的三倍多,所以循环分块与写优先操作结合可以提高性能。
优化3:
循环展开类循环分块结合,通过减少每次迭代计算元素的数量,减少循环的迭代次数,同时分块可以逐点赋值一>逐行(列)赋值充分利用块空间,防止前面开辟的块还没有完全利用就被后来的覆盖,提高cache命中率。
voidrotate(intdim,pixel*src,pixel*dst){
inti,j;intdst_base=(dim-1)*dim;dst+=dst_base;
for(i=0;i<dim;i+=32){for(j=0;j<dim;j++){
*dst=*src;src+=dim;dst++;*dst=*src;src+=dim;dst++;
*dst=*src;src+=dim;dst++;*dst=*src;src+=dim;dst++;
*dst=*src;src+=dim;dst++;*dst=*src;src+=dim;dst++;
*dst=*src;src+=dim;dst++;*dst=*src;src+=dim;dst++;
*dst=*src;src+=dim;dst++;*dst=*src;src+=dim;dst++;
*dst=*src;src+=dim;dst++;*dst=*src;src+=dim;dst++;
*dst=*src;sr
计组实验4报告 来自淘豆网m.daumloan.com转载请标明出处.