- 12
- 0
- 约5.77千字
- 约 8页
- 2017-12-19 发布于河南
- 举报
mpi矩阵相乘
mpi矩阵相乘
Romi-知行合一
轻轻的风轻轻的梦,轻轻的晨晨昏昏, 淡淡的云淡淡的泪,淡淡的年年岁岁。
一介布衣兮,乐享学习之心得
1.准备
使用MPI做并行计算时,根据程序的具体要求,可按任务进行分配或数据进行分配。根据矩阵乘积的特点,这里按数据进行分配,即每个计算机节点计算不同的数据,由于矩阵数据的特点,这里按行进行数据分块。因为本人使用的是C语言,数组在C语言的表示下行间数据地址是连续的(注:若是Fortran语言,则列是连续的)。
2.mpi程序的框架
mpi程序运行是靠输入dos命令执行的,因此,mpi程序一般都在main函数内,也即程序入口函数中。一般都会有MPI_Init、MPI_Comm_rank、MPI_Comm_size、MPI_Finalize这四个函数。用法如下:
记得要加上mpi.lib
复制代码
1 #include “mpi.h”
2
3 int main(int argc,char *argv[])
4 {
5 int myid,numprocs;
6 MPI_Init(argc,argv);//MPI Initialize
7 MPI_Comm_rank(MPI_COMM_WORLD,myid);//获得当前进程号
8 MPI_Comm_size(MPI_COMM_WORLD,numprocs);//获得进程个数
9 //mpi计算过程
10 MPI_Finalize();//结束
11 }
复制代码
3.矩阵乘法
矩阵乘法在于对矩阵进行分块,然后交由各进程执行,最后将计算结果传递给主进程。
假设是M*N,计算前,将矩阵N发送给所有从进程,然后将矩阵M分块,将M中数据按行分给各从进程,在从进程中计算M中部分行数据和N的乘积,最后将结果发送给主进程。这里为了方便,有多少进程,就将M分了多少块,除最后一块外的其他数据块大小都相等,最后一块是剩下的数据,大小大于等于其他数据块大小,因为矩阵行数不一定整除进程数。最后一块数据在主进程中计算,其他的在从进程中计算。
定义两个矩阵M和N,N所有进程都需要,M可以只在主进程中定义。其他的变量视主进程和从进程需要按要求定义在合适的位置。
代码如下,包括矩阵初始化,数据传递,矩阵乘积计算等。
复制代码
1 void matgen(float* a,int Width);
2 //产生矩阵
3 void matgen(float* a,int Width)
4 {
5 int i,j;
6 for (i=0;iWidth;i++)
7 {
8 for (j=0;jWidth;j++)
9 {
10 //a[i*Width+j]=(float)rand()/RAND_MAX + (float)rand()/(RAND_MAX*RAND_MAX); //产生矩阵,矩阵中元素0~1
11 a[i*Width+j]=1.00;
12 }
13 }
14 }
15
16 void main(int argc,char *argv[])
17 {
18 float *M,*N,*P,*buffer,*ans;
19 int Width=1000;
20 int myid,numprocs;
21 MPI_Status status;
22
23 MPI_Init(argc,argv);//MPI Initialize
24 MPI_Comm_rank(MPI_COMM_WORLD,myid);//获得当前进程号
25 MPI_Comm_size(MPI_COMM_WORLD,numprocs);//获得进程个数
26
27 int line = Width/numprocs;//将数据分为(进程数)个块,主进程也要处理数据
28 M = (float*)malloc(sizeof(float)*Width*Width);
29 N = (float*)malloc(sizeof(float)*Width*Width);
30 P = (float*)malloc(sizeof(float)*Width*Width);
31 //缓存大小大于等于要处理的数据大小,大于时只需关注实际数据那部分
32 buffer = (float*)malloc(sizeof(float)*Width*
您可能关注的文档
- as_well_as的用法 及不用被动语态的情况.doc
- AutoCAD超强小工具(Arktools)说明.doc
- AU运动单元.doc
- AVR控制矩阵键盘,12864显示简单计算器.doc
- AVR单片机LCD秒表成品.doc
- A公司OTC终端促销员管理办法医药销售.doc
- A_E快捷键.doc
- B2C之平台之王 分析AMZN平台成功的基础.doc
- B2C之贪吃蛇收藏.doc
- BASARA2英雄外传全道具.doc
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
最近下载
- 部编版(26春)小学语文一年级下册教学设计全册.docx VIP
- 春节复工煤矿工人培训教案.pptx VIP
- Haier海尔蒸箱ST450-30S说明书.pdf
- Joyoung九阳电饭煲F30S-S160使用说明书.pdf
- 2025年新疆中考物理试题(含答案详解)原卷.pdf
- 79博客-目录书签跳转版.pdf VIP
- 计算智能 课件全套 第1--11章 绪论、模糊系统理论---新型群智能优化算法.pptx
- 2025年国庆节后煤矿复产复工'六个一'安全资料汇编.docx VIP
- 2023中国生物材料大会会议手册-ok.pdf VIP
- Midea 美的 ET1065QL-01SE嵌入式电烤箱 说明书.pdf
原创力文档

文档评论(0)