APP下载

基于MPI的矩阵相乘并行计算的一种探究

2019-11-03张亮赵妍

电脑知识与技术 2019年23期
关键词:并行计算

张亮 赵妍

摘要:研究了矩阵相乘的并行算法,基于MPI消息传递库采用C语言实现了该算法,讲解了矩阵并行乘法中的矩阵划分方法和消息传递方法。

关键词:并行计算;MPI;矩阵相乘;消息传递

中图分类号:TP31      文献标识码:A

文章编号:1009-3044(2019)23-0281-02

开放科学(资源服务)标识码(OSID):

MPI-based Parallel Computation of the Multiple of matrixs

ZHANG Liang, ZHAO Yan

(Ningxia Financial Vocational and Technical College, Ningxia 750021, China)

Abstract: Parallel Computation of the multiple of matrixs was studied, based on MPI and C Language the algorithm was realized. Partition of matrix and message passing in the algorithm was addressed.

Key words: Parallel Computation; MPI; Multiple of matrixs; Message Passing

1 引言

并行計算又叫高性能计算,在许多领域的都发挥着积极的巨大的作用,如物理、化学、材料等科学中分子尺度的模拟,天文学和地球科学中银河系的演化,,天气预报,地球数值模拟,全球长期气候变化的模型等[1]。这些研究都对计算机的运算速度提出了很高的要求,也只有高性能的并行计算才能满足这些要求。在并行计算中,集群系统以廉价高效等优点颇受人们青睐,是当今的主流。并行处理的软件支持环境包括基于OpenMP和MPI(Message Passing Interface)的各种环境。OpenMP主要用于共享式计算环境,而MPI则主要用于分布式计算环境[1]。本文实现了基于MPI的矩阵乘法运算。

2 算法描述

设有L×M矩阵A和M×N矩阵B相乘,得到结果为L×N的矩阵C。记矩阵A、B、C的第i行第j列的元素为Aij(i=0……L,j=0……M),Bij(i=0……M,j=0……N),Cij(i=0……L,j=0……N)。则:

Cij=(i=0……L,j=0……N)          (1)

可见Cij只与A和B的第i行相关,而与其他行无关,所以具有并行计算的可行性。

假设有n个进程并行计算,则把矩阵A按行分成n个M/n行的小矩阵,每个小矩阵与B进行矩阵乘法,得到n个M/n行,N列的矩阵,将这些矩阵合并到一起就得到最终的结果。

3 算法实现

根据上面的算法,在VC6中用MPI的C语言实现为如下的程序:

#include "mpi.h"

#include

#include

#define l 4/*第一个矩阵的行*/

#define m 3/*第一个矩阵的列,第二个矩阵的行*/

#define n 2/*第二个矩阵的列*/

main(int argc,char *argv[])

{

int a[l][m]={{2,3,5},{4,5,7},{6,3,6},{1,6,7}};

int b[m][n]={{2,4},{3,6},{8,5}};

int c[l][n]={0};/*保存最终结果*/

int d[l][n]={0};/*各个分进程保存中间结果*/

int numproces,id,i,j,k,p,q,s,t,x,y;

MPI_Status status;

MPI_Init(&argc,&argv);

MPI_Comm_size(MPI_COMM_WORLD,&numproces);

MPI_Comm_rank(MPI_COMM_WORLD,&id);

printf("Process %d :\n",id);

if(id>0)

{/*numproces个进程,l行,每个进程l/numproces行,

从(id-1)*l/numproces行到id*l/numproces行*/

for(x=0,i=(id-1)*l/numproces;i

{

for(y=0,j=0;j

{

for(k=0;k

{

d[x][y]=d[x][y]+a[i][k]*b[k][j];/*d[][]保存该进程计算结果*/

}

printf("d[%d][%d]=%d\t",x,y,d[x][y]);

猜你喜欢

并行计算
基于自适应线程束的GPU并行粒子群优化算法
云计算中MapReduce分布式并行处理框架的研究与搭建
并行硬件简介
不可压NS方程的高效并行直接求解
最大匹配问题Tile自组装模型