- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
2016-2017学年第一学期《并行程序设计》期末考试
2016-2017学年第一学期《并行程序设计》期末考试
第1页(共2页)
中国科学技术大学
2016-2017学年第一学期考试试卷
考试科目:并行程序设计 得分:
学生所在系: 姓名: _ _学号:_
fori=2to20do//循环2A[2*i+2]=A[2*i-2]+B[i];endforfori=2
fori=2to20do//循环2A[2*i+2]=A[2*i-2]+B[i];
endfor
fori=2to10do//循环1
forj=2to10
A[i,j]=(A[i-1,j-1]+A[i+1,j+1])*0.5;
endforendfor
fori=2to20do//循环3ifA[i]0thenB[i]
fori=2to20do//循环3ifA[i]0then
B[i]=C[i-1]+1
else
C[i]=B[i]–1
endifendfor
二、设有N*N个进程按照N*N二维拓扑排列。给出MPI代码片段,实现(1)进程rank与其二维坐标(i,j)的转换;(2)将所有进程按照主对角线(平行)方向来分组;(3)在主对角线组内,进行rank值的循环传送。(25分)
三、假设线程A和线程B轮流输出。首先线程A输出1,2,3;然后线程B
输出4,5,6;最后线程A输出7,8,9。给出相应的OpenMP实现。(10分)
四、设有N个MPI进程,每进程有M*N双精度浮点矩阵。给出MPI代码,实现N个进程轮流按行广播其矩阵数据。(10分)
2016-2017学年第一学期《并行程序设计》期末考试
2016-2017学年第一学期《并行程序设计》期末考试
第2页(共2页)
五、乘幂法求解矩阵最大特征值的并行算法:
乘幂法求矩阵特征值由反复进行矩阵向量相乘来实现,因而可以采用矩阵向量相乘的数据划分方法。设处理器个数为p,对矩阵A按行划分为p块,每块含有连续的m行向量,这里m??n/p?,编号为i的处理器含有A的第im至第(i+1)m-1行数据,(i=0,1,…,p-1),初始向量v被广播给所有处理器。具体算法框架描述如下:
输入:系数矩阵An×n,初始向量vn×1,ε
输出:最大的特征值max
Begin
对所有处理器my_rank(my_rank=0,…,p-1)同时执行如下的算法:
while(│diff│ε)do /*diff为特征向量的各个分量新旧值之差的最大值*/
fori=0tom-1do /*对所存的行计算特征向量的相应分量*/(1.1)sum=0
(1.2)forj=0ton-1do sum=sum+a[i,j]*x[j] endfor(1.3)b[i]=sum
endfor
localmax=│b[0]│ /*对所计算的特征向量的相应分量,求新旧值之差的最大值localmax*/
fori=1tom-1do
if(│b[i]│localmax)thenlocalmax=│b[i]│endifendfor
用Allreduce操作求出所有处理器中localmax值的最大值max并广播到所有处理器中
fori=0tom-1do b[i]=b[i]/max endfor /*对所计算的特征向量归一化*/
用Allgather操作将各处理器中计算出的特征向量的分量的新值组合并广播到所有处理器
diff=max-oldmax, oldmax=max
endwhileEnd
给出上述算法的MPI实现。(15分)
(需包括主/从进程间数据分发和最后结果的显示,但不必描述文件读写)
本试卷答题过程中可能用到的函数原型:
本试卷答题过程中可能用到的函数原型:MPI_Comm_size(MPI_Commcomm,int*size)MPI_Comm_rank(MPI_Commcomm,int*rank)
MPI_Allreduce(void*sendbuf,void*recvbuf,intcount,MPI_Datatypedatatype,MPI_Opop,MPI_Commcomm)MPI_Bcast(void*buffer,int
文档评论(0)