1、*实践教学*大学理学院2016 年春季学期并行计算 课程设计专业班级:_ 姓 名: _学 号:_指导教师:_ 成 绩:_棋盘划分下的矩阵向量乘法摘要并行计算是计算机科学中重要研究内容,已有几十年的发展历程,它是在串行计算的基础上演变而来的。创建和应用并行计算的最主要原因是因为它是解决单处理机速度瓶颈的最好的方法之一。并行计算的发展是大型复杂科学、工程问题的计算需求以及与当代社会相关问题的需求。并行计算的研究需要并行计算机系统、并行算法和并行程序设计等专家以及并行应用领域专家的共同参与。矩阵向量乘法同样可以有带状划分和棋盘划分下两中并行算法。所谓棋盘划分(Checker Board Partit
2、ioning)就是将方阵划分成若干个子方阵,每个子方阵指派给一个处理器,此时任意处理器均不包含整行或整列。1目 录一、题目及要求 2二、设计算法、算法原理 2三、 算法描述、设计流程 33.1 算法描述 .33.2 设计流程图 4四、源程序代码及运行结果 54.1 源代码 .54.2 题目运行结果示意图 .12五、算法分析、优缺点 125.1 算法分析 .125.2 优缺点 .12六、总 结 13七、参考文献 142一、题目及要求棋盘划分的矩阵-向量乘法已知 ,求475132,7819253049XAAXY二、设计算法、算法原理所谓棋盘划分(Checker Board Partitioning
3、)就是将方阵划分成若干子方阵,每个子方阵指派给一个处理器,此时任一处理器均不包含整行整列。和带状划分类似,棋盘划分可分为块棋盘划分(Block- Checker Board Partitioning)和循环棋盘划分(Cycile-Checker Board Partitioning)。如图一所示:(a块棋盘划分) (b.循环棋盘划分)图一 两种棋盘划分矩阵划分成棋盘状可和处理器连成二维网孔相对应。对与一个 n n 的方阵和的二维处理器,每个处理器均匀的分配有 2/p 个矩阵元素。p pn/值得指出的是,和带状划分相比,棋盘划分可开发出更高的并行度。例如,对于一个 n n 的方阵,棋盘划分最多可
4、以使用 n2个处理器进行并行计算,但使用带状划分可用的处理器 不 能多于 n 个。33、算法描述、设计流程3.1 算法描述划分(块棋盘划分): P ij存放 ai,j, xi置入 Pi,i中算法: 对 p=n2情形每个 Pi,i向 Pj,i播送 xi(一到多播送);按行方向进行乘-加与积累运算,最后一列 Pi,n-1收集的结果为 yi;注: 对 p#include#include “mpi.h“#define intsize sizeof(int)#define floatsize sizeof(float)#define A(x,y) Ax*N+y#define B(x) Bx#define
5、 C(x) Cx#define a(x) ax#define b(x) bx#define c(x) cxfloat *a,*b,*c;float *A,*B,*C;int M,N,K,P;int m,n;int myid;FILE *dataFile;MPI_Status status;double time1;double starttime,endtime;void readData()int i,j;starttime=MPI_Wtime();6dataFile=fopen(“dataIn.txt“,“r“);fscanf(dataFile,“%d%d“,A=(float*)mallo
6、c(floatsize*M*N);for(i=0;in,则无法使用带状划分,而棋盘划分不受此限制,即使 p n,棋盘划分也更优。值得指出的是,和带状划分相比,棋盘划分可开发出更高的并行度。例如,对于一个 nn 的方阵,棋盘划分最多可以使用 n 个处理器进行并行计算,但使用带状划分可用2的处理器不能多于 n 个。13六、总结通过本次并行计算课程设计,通过对所学知识的融会贯通,我加深了解了并行计算在大数据之中的应用以及他的优点。并行算法是并行计算中非常重要的问题。并行算法研究应该确立一个“理论设计实现应用”的系统方法,形成一个完善“架构算法编程”的方法论,这样才能保证并行算法不断发展并变得更加实用
7、。在课程设计中,我遇到了许多问题,而这些问题的产生都是由于我在理论知识和实践经验的缺乏而造成的。在此过程中,感触最深的便是实践联系理论的重要性,当遇到实际问题时,只要认真思考,用所学的知识,再一步步探索,是完全可以解决遇到的一般问题的。通过老师的指导和自学克服了很多的困难,我得到了一次难得的锻炼机会,加深了对理论知识的理解,也让我更加深刻地体会到自学能力的重要性。课程设计让我真正做到了学有所用,在设计当中受益匪浅。通过这次的课程学习,我也认识到了自己的很多不足,对专业知识的不够熟悉,以至于在设计学习过程中卡住了好多次,我想在今后的学习中我会加大自己的学习力度,努力强化自己的专业知识,同时也学习
8、其他同学思考问题的思路,在以后的学习中可以借鉴。在本次课程设计中老师耐心细致地给予了我很多的指导,在此深表感谢,我相信通过这次课程设计的锻炼,能为我以后处理程序设计打下坚实的基础。14七、参考文献1陈国良,章峰,吴俊敏,等.002.并行计算机体系结构.北京:高等教育出版社.2陈国良.并行算法的可扩放性分析.小型微型计算机系统,16(2):10-16.1995.3陈国良.并行算法的设计与分析.3 版.北京:高等教育出版社.2009.4陈国良,等.并行算法实践. 北京:高等教育出版社.2003.5陈国良.VLSI 计算理论与并行算法.合肥:中国科学技术大学出版社.1991.6Adams J et al.1992,The FORTRAN 90 Handbook.S.L:McGraw-Hill7Huang Y,PakerY.1991.A Parallel FFT Algorithm for Transputer Network.parallel Computerting,17:895-9068高性能计算机 TOP500,http:/www.top.org;