- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
装订处
一、请同学们在下列题目中任选一题,写成期末论文。
(一)并行算法研究类
对某一问题,研究其并行算法的设计、实现,分析其性能,进行实验验证,撰写研究论文。例如:
1、对矩阵相乘问题,设计pthread多线程结合SSE/AVX的两层并行算法,实现并行程序。讨论算法层面不同策略对性能的影响,例如多个线程间不同的任务分配方式、不同的线程同步策略等,讨论不同并行编程方法对性能的影响,例如SSE/AVX的对齐和不对齐内存访问等等。对不同的矩阵规模、不同的线程数测试程序性能,撰写研究论文。
2、对高斯消去法问题(其串行算法伪代码示意如下面算法1所示),设计pthread多线程结合SSE/AVX的两层并行算法,实现并行程序。讨论算法层面不同策略对性能的影响,例如多个线程间不同的任务分配方式、不同的线程同步策略等,讨论不同并行编程方法对性能的影响,例如SSE/AVX的对齐和不对齐内存访问等等。对不同的矩阵规模、不同的线程数测试程序性能,撰写研究论文。
3、其他类似难度的问题。
(二)并行编程工具调研类
对某种并行编程工具进行调研,选取某个问题(例如矩阵相乘问题),用这种编程工具编写并行程序求解这个问题,进行实验验证,撰写研究论文介绍这种并行编程工具的特色、基本编程(使用)方法、如何用它解决实际问题(以你选定的问题为例)。例如:
1、C++、Java等语言本身对并行编程提供的支持。
2、HadoopMapReduce编程工具。
3、其它并行编程工具。
二、论文写作要求
(一)并行算法研究类
1、论文应详细描述清楚所研究的问题,并行算法的设计。
2、鼓励大家选择课堂教学之外的问题,通过文献调研,研究其并行求解方法,甚至有自己提出新的方法。
3、最好能有求解一个问题的多种并行算法之间的对比分析。
(二)并行编程工具调研类
1、应调研较新的工具,避免调研太“古老”的工具。
2、不能只是工具相关资料的调研和文字的汇总、整理,重点仍是并行编程——用调研的工具编程解决一个具体问题。
3、鼓励大家进行不同并行编程工具间的对比,例如调研的工具与课堂讲授的工具之间的对比。
三、论文写作格式要求:
论文题目要求为宋体三号字,加粗居中;
正文部分要求为宋体小四号字,标题加粗,行间距为1.5倍行距;
应符合科技论文写作规范,题目、摘要、关键字、章节、参考文献等等完整、正确。这方面可参考附件范文。
四、论文提交注意事项:
1、论文一律以此文件为封面,写明学习中心、专业、姓名、学号等信息。论文保存为word文件,以“课程名+学号+姓名”命名。
2、论文一律采用线上提交方式,在学院规定时间内上传到教学教务平台,逾期平台关闭,将不接受补交。
3、不接受纸质论文。
4、与论文一同打包提交源程序,注意,是提交.cpp、.h等源程序,不要将工程文件、编译后的目标文件等打包提交。
5、如有抄袭雷同现象,将按学院规定严肃处理。
矩阵相乘并行化处理
摘要:矩阵相乘是一个比较复杂的计算。本次实验分别使用串行算法、Cache优化算法、SSE编程和分片策略算法实现了矩阵乘法运算,实验采用同一个样本,即矩阵大小为512个元素,元素值为由时间生成的随机数,每个算法对此样本运行十次,并记录每次运行时间和十次运算的平均运行时间。通过不同算法结果来讨论不同并行编程方法对性能的影响。
关键词:矩阵相乘;并行化;SSE编程;分片策略;串行算法
一、引言
矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义。一般单指矩阵乘积时,指的便是一般矩阵乘积。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。由于它把许多数据紧凑的集中到了一起,所以有时候可以简便地表示一些复杂的模型,如电力系统网络模型。本文通过实验分别使用串行算法、Cache优化算法、SSE编程和分片策略算法实现了矩阵乘法运算,实验采用同一个样本,即矩阵大小为512个元素,元素值为由时间生成的随机数,每个算法对此样本运行十次,并记录每次运行时间和十次运算的平均运行时间。通过不同算法结果来讨论不同并行编程方法对性能的影响。
二、试验环境
属性
操作系统
macOSHighSierra10.13.5
物理内核数
2个
编程语言
C/C++
内存大小
8GB
编译器
VSCODE
三、矩阵相乘并行化分析
1数据初始化
在矩阵样本设计方面,考虑大越大规模的数据越能体现不同算法在运行上的差距,因而将矩阵大小设置为512个元素,并且为了减少元素数据对实验的影响,采取了随机数赋值的方法。代码如下:
srand((unsigned)time(NULL));
floata[maxN][maxN];
floatb[maxN][maxN];
for(int
文档评论(0)