CSAPP实验四:性能优化实验(Perflab)

本文介绍了中国科技大学计算机专业《计算机系统》实验中,针对图像处理中的rotate和smooth操作进行性能优化的方法。通过调整内存访问方式、缓存利用和代码重构,rotate平均加速13.1倍,smooth提升48.4倍。
摘要由CSDN通过智能技术生成

       本系列文章为中国科学技术大学计算机专业学科基础课《计算机系统》布置的实验,上课所用教材和内容为黑书CSAPP,当时花费很大精力和弯路,现来总结下各个实验,本文章为第四个实验——性能优化实验(Perflab)。

一、实验名称:perflab

二、实验学时: 3

三、实验内容和目的:

       此次实验进行图像处理代码的优化。图像处理提供了许多能够通过优化而得到改良的函数。在此次实验中,我们将考虑两种图像处理操作:roate, 此函数用于将图像逆时针旋转90°;以及smooth,对图像进行“平滑”或者说“模糊”处理。

       对于此次实验,我们将认为图像是以一个二维矩阵 M 来表示的,并以 Mi,j 来表记(i,j)位置的像素值。像素值是由红,绿,蓝(RGB)三个值构成的三元组。我们仅考虑方形图像。以 N 来表记图像的行数(同时也是列数)。行和列均以C风格进行编号——从0到 N - 1 。

       在这种表示方法之下,rotate 操作可以借由以下两种矩阵操作的结合来简单实现:

  • 转置:对于每个(i,j),交换 Mi,j 与 Mj,i 。
  • 行交换:交换第 i 行与第 N - 1 - i 行。

       详情见下图:

        smooth 操作可以通过求每个像素与周围像素(最多是以该像素为中心的3×3的九宫格)的均值。详见图2,像素 M2[1][1] 与 M2[N - 1][N - 1] 由下式给出:

 四、实验步骤及结果:

        首先将 perflab-handout.tar 拷贝至一个受保护的文件夹,用于完成此次实验。

        然后在命令行输入命令:tar xvf perflab-handout.tar 这将使数个文件被解压至当前目录。

        你可以进行修改并最终提交的唯一文件是 kernels.c 程序 driver.c 是一个驱动程序,你可以用它来评估你解决方案的性能。使用命令:make driver 来生成驱动代码,并用命令 ./driver 来使其运行。

        查看文件 kernels.c,你会发现一个C 结构体:team。你需要将你小组成员的信息填入其中。请马上填写,以防你忘记。

      1.naive_rotate

/*
 *naive_rotate - The naive
  • 14
    点赞
  • 119
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值