- 12
- 0
- 约5.08千字
- 约 8页
- 2018-11-21 发布于江苏
- 举报
Cannon矩阵乘法MPI实现及性能研究
#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
您可能关注的文档
最近下载
- 2025年潍坊地理一模试题.docx VIP
- 施工单位安全教育详细培训材料.docx VIP
- 2025党支部书记述职报告(详细版).pdf VIP
- 2025至2030全球及中国大脑训练软件行业调研及市场前景预测评估报告.docx VIP
- 酒店员工满意度研究——以张家港万豪酒店为例.docx
- 2025年湘潭医卫职业技术学院单招笔试职业技能考核试题库含答案解析.docx VIP
- 最全-品牌笔记本FN功能键经典版..doc VIP
- NYT-草莓集约化扦插育苗技术规程及编制说明.pdf VIP
- 五个带头——2026年带头强化政治忠诚、提高政治能力、固本培元、增强党性等紧扣“五个方面”对照检查发言材料10篇文.docx VIP
- 暗管排水排盐运行管理技术规程.docx VIP
原创力文档

文档评论(0)