以下为《多核平台下的并行计算课程实验指导书》的无排版文字预览,完整内容请下载
多核平台下的并行计算课程实验指导书
[实验目的]:利用所学的并行技术,实现SLIC超像素算法的并行化和优化,提高数据处理的效率,并通过实验充分理解与掌握并行计算技术。
[实验安排]:实验共分 16次,其中第1次实验为熟悉 Linux 环境,安装并行编程软件,并运行已有的串行代码;接下来的 15 次实验,使用任选一种并行编程模型:包括课堂上讲过的 MPI、OpenMP、Pthread 或者课堂上没有讲过但通过自学掌握的其它工具如:Intel Cilk,Intel TBB等实现多核CPU处理器上并行化,如有余力可以在算法和粗细粒度上进一步优化代码。所有工作要在 15 次实验课内完成(即30个课时)。
[题目简介]:
超像素算法就是将图像的像素依据某种相似性进行聚类,形成一个大“像素”,这个大“像素”可以作为其他图像处理算法的基础。在众多的超像素算法中,比较常用的是SLIC(simple linear iterative clustering),它是Radhakrishna Achanta等人于2010年提出的一种简单高效的超像素算法,它的计算复杂度为O(N),其中N为图像像素点个数。
SLIC算法的基本思想是, 首先将图像从RGB颜色空间转换到CIE-Lab颜色空间,并把每个像素的(L,a,b)颜色值和(x,y)坐标值组成一个5维的特征向量V[L, a, b, x, y],然后,根据给定的网格步长S,初始化聚类中心Ck=[Lk, ak, bk,xk, yk]T,之后在每个聚类中心 Ck 的邻域(2Sx2S),计算邻域内各像素与该 Ck 点的相似性度量,从而对邻域内的像素点进行聚类,之后迭代更新聚类中心,直至满足收敛条件。
SLIC算法伪代码如下:
/
[优化策略提示]:
可以选用多线程或者多进程的并行方式优化计算热点。
另外鼓励从算法上进行进一步优化,比如等效修改任务划分方式以实现更好的任务并行度等。
建议尝试使用向量化等细粒度优化技术。
[使用方法]:
1. 源代码包括以下文件
1)SLIC.cpp:计算主程序;
2)SLIC.h:声明文档;
3)input_image.ppm:输入图像,ppm格式;
4)check.ppm:基准验证文件,ppm格式。
2. 程序使用方法
1)参考编译命令:g++ -std=c++11 SLIC.cpp -o SLIC
2)运行命令: ./SLIC
3. 仅考核考核程序在计算部分所用时间,即slic.PerformSLICO_ForGivenK函数运行时间,以程序自带计时功能的屏幕输出时间为准。
4. 输入图像文件input_image.ppm、基准验证文件check.ppm不可修改。
5. 可以改变程序的数据结构和数据类型。新代码的声明、实现及ppm数据读取等功能代码可以在计时区域外的相同功能原代码基础上等价修改,其余除声明、实现及ppm数据读取以外的代码,均须在计时范围内添加、修改。
6. 不可只针对当前算例对程序进行非通用性优化。
7. 程序输出格式须保持不变,以基准验证文件check.ppm作为正确性评判标准,以原程序屏幕输出的差异点个数为正确性标准,0为通过,其余为不通过。
8. 可自行更改编译方式,提供makefile或者cmake编译脚本,需在提交时一并提供。
9. 后续将采用多组参数和数据用于结果验证。
10. 实验题目的最终测试环境为双路AMD EPYC 7402 24-Core Processor,256 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 学号+姓名”。
附1
多核平台下的并行计算课程实验报告
姓名: 学号: 班级
填写下表,给出所使用的软硬件环境参数
操作系统版本
并行编程模型
编译器版本
CPU型号、主频及核数
内存型号,大小及主频
填写下表,给出程序使用不同线程数目时的运行时间与加速比(也可以自己设计图表描述不同线程数时程序的运行时间及加速比)
线程数目
运行时间(秒)
加速比
1
1.0
2
4
8
16
……
……
……
并行算法设计和优化思路
[文章尾部最后300字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。
以上为《多核平台下的并行计算课程实验指导书》的无排版文字预览,完整内容请下载
多核平台下的并行计算课程实验指导书由用户“mayilovedaxiang”分享发布,转载请注明出处