- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
#include stdio.h
#include mpi.h
#include math.h
#include stdlib.h
#include time.h
#include memory.h
MPI_Status status;
double **A, **B, **C; //C=A*B
double *a,*b,*c; //各个进程的缓冲区
int n; //矩阵的行列数
int np; //每个进程控制的小矩阵的行列数
int p,rank; //进程个个数、当前进程的编号,笛卡尔进程编号
double *tempa, *tempb;
void ProduceABC(); //在根处理器中生成矩阵AB,初始化矩阵C
void PrintABC();//输出结果
void ScatterAB();// 分发矩阵AB中的元素到各个进程中
void MainProcess(); //cannon算法的主过程
void collectC(); //收集结果矩阵C
void Mutiply(); //矩阵相乘
void Printab();
void Printc();
int main(int argc, char *argv[])
{
int i;
double starttime,endtime;
MPI_Init(argc, argv);
MPI_Comm_size(MPI_COMM_WORLD, p);
MPI_Comm_rank(MPI_COMM_WORLD, rank);
if(rank == 0)
{
printf(请输入矩阵的行列数n= );
fflush(stdout);
scanf_s(%d, n);
printf(\n);
}
MPI_Bcast(n, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD);
// n = atoi(argv[1]);
np = n/(int)sqrt(p);
a = (double*)malloc(np*np*sizeof(double));
b = (double*)malloc(np*np*sizeof(double));
c = (double*)malloc(np*np*sizeof(double));
memset(c, 0, np*np*sizeof(double));
tempa = (double*)malloc(np*np*sizeof(double));
tempb = (double*)malloc(np*np*sizeof(double));
if(rank == 0)
{
//在根处理器中为矩阵ABC分配空间
A = (double**)malloc(n*sizeof(double*));
B = (double**)malloc(n*sizeof(double*));
C = (double**)malloc(n*sizeof(double*));
for(i = 0; i n; i++)
{
A[i] = (double*)malloc(n*sizeof(double));
B[i] = (double*)malloc(n*sizeof(double));
C[i] = (double*)malloc(n*sizeof(double));
}
ProduceABC(); //在根处理器中随机生成矩阵AB,初始化矩阵C
ScatterAB();// 分发矩阵AB中的元素到各个进程中
}
else
{
MPI_Recv(a, np*np, MPI_DOUBLE, 0, 1, MPI_COMM_WORLD, status);
MPI_Recv(b, np*np, MPI_DOUBLE, 0, 2, MPI_COMM_WORLD, status);
}
starttime=MPI_Wtime(); //开始时间
MainProcess(); //cannon算法的主过程
if(rank == 0)
{
collectC(); //收集结果矩阵C
PrintABC(); //输出结果
endtime=MPI_Wtime();
printf(time used: %lf\n,endtime - starttime);
for(i = 0; i n; i++)
{
free(A[i]);
free(B[i]);
free(C[i]);
}
free(A);
free(B);
free(C);
}
else
您可能关注的文档
- 50部经典影+100部经典推荐.doc
- 5.2高血症的药物治疗.ppt
- 50道高考语文近义选词填空题.doc
- 5.Powerpoin知识题2010最新.doc
- 5.4圆周动PPT课件.ppt
- 50首最典的现代诗.doc
- 51CTO下载-全渗透测试报告模板.doc
- 555定时器产三种波形发生器.doc
- 4第四章_给水水工程构筑物施工.ppt
- 5C培训模拟试题及答案、重症医学专科资质培训班模拟考试题及答案.doc
- 制动系统的特点项目一58课件.pptx
- 直接工程费价外运杂费填料费铁路工程施工组织与概预算78课件.pptx
- 主备用控制中心的切换LCF300型25课件.pptx
- 智能交通系统的相关技术任务三车辆自动驾驶技术王怡安徽交通6.pptx
- 智能交通监控系统任务三城市交通诱导系统诱导系统的组成王怡安.pptx
- 智能交通监控系统任务二城市交通监控系统王怡安徽交通67课件.pptx
- 直升机的特点和分类空气动力学基础与飞行原理86课件.ppt
- 直升机的飞行性能空气动力学基础与飞行原理67课件.ppt
- 职业形象塑造3职业教育国际邮轮乘务管理专业教学化妆与形象设.pptx
- 轴向拉压杆件的线应变和胡克定律张亚琴河北交通52课件.pptx
最近下载
- 基于智能化技术的供水管网漏点判定与修复管理模式.pptx
- 2023-2024学年沪科版(2019)高中信息技术必修二第三单元项目五《规划并连接数字家庭系统的网络——组建小型信息系统网络(一)》说课稿.docx VIP
- 北京市城镇供水厂生产安全事故隐患目录.pdf VIP
- 业主委员会委员候选人推荐表.docx VIP
- NB-T35003-2023水电工程水情自动测报系统技术规范.pdf VIP
- 2025年高考英语陕西卷含解析及答案.docx VIP
- 2025年管道直饮水项目可行性研究报告.docx
- 地理信息安全在线培训考试题目完整版答案.docx
- 幼儿园区域活动的实施策略.pptx
- 10kV及以下变电所设计规范.pdf VIP
文档评论(0)