网站大量收购闲置独家精品文档,联系QQ:2885784924

矩阵QR分解并行实现.docVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

实验18.1矩阵QR分解并行实现

实验要求:对于一个给定的N*N矩阵,运用Gram-schmidt正交化方法将其进行QR分解。

实验原理:设A是n阶非奇异矩阵,则存在正交(酉)矩阵Q与实(复)非奇异

上三角矩阵R使得A=Q*R,且除去相差一个对角元素的绝对值(模)全为1的对角因子外,上述分解唯一。

实验目的:在理解基于消息传递模型的并行程序设计思想,把纯数学的理论—矩阵的QR分解,通过并行编程在计算机上实现,更深层次的了解并行编程方法,并能熟练使用mpi编写并行程序。

源代码:ch_qr.c

#includestdio.h

#includestdlib.h

#includemath.h

#includempi.h

#definea(x,y)a[x*M+y]

#defineq(x,y)q[x*M+y]

#defineA(x,y)A[x*M+y]

#defineQ(x,y)Q[x*M+y]

#defineR(x,y)R[x*M+y]

floattemp;

float*A;

float*R;

float*Q;

doublestarttime;

doubletime1;

doubletime2;

intp;

MPI_Statusstatus;

voidEnvironment_Finalize(float*a,float*q,float*v,float*f,float*R,

float*Q,float*ai,float*aj,float*qi,float*qj)

{

free(a);

free(q);

free(v);

free(f);

free(R);

free(Q);

free(ai);

free(aj);

free(qi);

free(qj);

}

intmain(intargc,char**argv)

{

intM,N,m;

intz;

inti,j,k,my_rank,group_size;

float*ai,*qi,*aj,*qj;

floatc,s,sp;

float*f,*v;

float*a,*q;

FILE*fdA;

MPI_Init(argc,argv);

MPI_Comm_rank(MPI_COMM_WORLD,my_rank);

MPI_Comm_size(MPI_COMM_WORLD,group_size);

p=group_size;

starttime=MPI_Wtime();

if(my_rank==p-1)

{

fdA=fopen(dataIn.txt,r);

fscanf(fdA,%d%d,M,N);

if(M!=N)

{

puts(Theinputiserror!);

exit(0);

}

A=(float*)malloc(sizeof(float)*M*M);

Q=(float*)malloc(sizeof(float)*M*M);

R=(float*)malloc(sizeof(float)*M*M);

for(i=0;iM;i++)

{

for(j=0;jM;j++)fscanf(fdA,%f,A+i*M+j);

}

fclose(fdA);

for(i=0;iM;i++)

for(j=0;jM;j++)if(i==j)Q(i,j)=1.0;

elseQ(i,j)=0.0;

}

MPI_Bcast(M,1,MPI_INT,p-1,MPI_COMM_WORLD);

m=M/p;

if(M%p!=0)m++;

qi=(float*)malloc(sizeof(float)*M);

qj=(float*)malloc(sizeof(float)*M);

aj=(float*)malloc(sizeof(float)*M);

ai=(float*)malloc(sizeof(floa

文档评论(0)

jiangwen666 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档